forked from adempiere/adempiere
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRUN_ImportAdempiere.sh
executable file
·207 lines (185 loc) · 5.59 KB
/
RUN_ImportAdempiere.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#!/bin/bash
#
# Name: RUN_ImportAdempiere.sh
# Description: script to import Adempiere database
# Created: 2010-05-11
# Vendor: K.K. Alice
# Author: Stefan Christians
#
# FileTarget: ~/development/sandbox/adempiere/utils/RUN_ImportAdempiere.sh
# FileOwner: spc.dvp
# FilePerms: 0755
#
# database binaries are expected to be in the PATH
# for oracle: sqlplus, imp, loadjava ...
# for postgresql: psql, dropdb, createdb, dropuser ...
# exit codes:
errorSuccess=0 # successful execution
errorGeneral=1 # general unspecified error
errorNoEnvironment=10 # environment settings could not be loaded
errorNoSeedFile=11 # data seed file could not be loaded
errorNoImportScript=12 # database dependent import script could not be executed
errorNoSqljFile=13 # sqlj libraries could not be loaded
errorWrongVendor=20 # this script is not suitable for the named database vendor
errorDropDatabase=30 # the database could not be dropped
errorCreateDatabase=31 # the database could not be created
errorRenameDatabase=32 # the database could not be renamed
errorModifyDatabase=33 # the database could not be modified
errorDropUser=40 # the user could not be dropped
errorCreateUser=41 # the user could not be created
errorRenameUser=42 # the user could not be renamed
errorModifyUser=43 # the user could not be modified
errorDropSchema=50 # the schema could not be dropped
errorCreateSchema=51 # the schema could not be created
errorRenameSchema=52 # the schema could not be renamed
errorModifySchema=53 # the schema could not be modified
errorImportData=60 # an error occured while trying to import data
errorImportSqlj=61 # an error occured while trying to import sqlj
# if called with any argument, import the reference database
# otherwise import the seed database
importMode="Seed"
if [ $# -gt 0 ]
then
importMode="Reference"
fi
# identify this script
echo
echo "Import ADempiere $importMode Database"
echo
# change to directory in which this script resides
DIR_SAV=$(pwd)
cd $(dirname $0)
# load environment
if [ -r "myEnvironment.sh" ]
then
source myEnvironment.sh nosave &> /dev/null
fi
# set local variables
dbImportScript="$ADEMPIERE_DB_PATH/ImportAdempiere.sh"
dbSignScript="RUN_SignDatabaseBuild.sh"
dbSeedFile="(undefined)"
dbSqljFile=$ADEMPIERE_HOME/lib/sqlj.jar
dbVendor=$ADEMPIERE_DB_PATH
dbHost=$ADEMPIERE_DB_SERVER
dbPort=$ADEMPIERE_DB_PORT
dbUser=$ADEMPIERE_DB_USER
dbPwd=$ADEMPIERE_DB_PASSWORD
sysUser="(undefined)"
sysPwd=$ADEMPIERE_DB_SYSTEM
dbName=$ADEMPIERE_DB_NAME
dbCatalog="(undefined)"
dbSchema=$ADEMPIERE_DB_USER
# variables depending on database vendor
if [ "$dbVendor" == "PostgreSQL" ]
then
dbSeedFile="$ADEMPIERE_HOME/data/Adempiere_pg.dmp"
sysUser="postgres"
elif [ "$dbVendor" == "Oracle" ]
then
dbSeedFile="$ADEMPIERE_HOME/data/Adempiere.dmp"
sysUser="system"
elif [ "$dbVendor" == "OracleXE" ]
then
dbSeedFile="$ADEMPIERE_HOME/data/Adempiere.dmp"
sysUser="system"
else
unSupportedVendor=1
fi
# variables depending on import mode
if [ "$importMode" == "Reference" ]
then
dbUser="reference"
dbPwd="adempiere"
dbSchema="reference"
if [ "$dbVendor" == "PostgreSQL" ]
then
dbName="reference"
elif [ "$dbVendor" == "Oracle" ]
then
dbName=$ADEMPIERE_DB_NAME
elif [ "$dbVendor" == "OracleXE" ]
then
dbName=$ADEMPIERE_DB_NAME
fi
fi
# sanity checks
sanityCheck=$errorSuccess
# make sure environment is properly defined
if [[ -z $ADEMPIERE_HOME || -z $ADEMPIERE_DB_PATH
|| -z $ADEMPIERE_DB_NAME || -z $ADEMPIERE_DB_SERVER || -z $ADEMPIERE_DB_PORT
|| -z $ADEMPIERE_DB_SYSTEM
|| -z $ADEMPIERE_DB_USER || -z $ADEMPIERE_DB_PASSWORD ]]
then
cat <<-EOF
Please make sure that the environment variables are set correctly:
ADEMPIERE_HOME e.g. "/Adempiere"
ADEMPIERE_DB_PATH e.g. "PostgreSQL" or "oracle"
ADEMPIERE_DB_NAME e.g. "adempiere" or "xe"
ADEMPIERE_DB_SERVER e.g. "dbserver.adempiere.org"
ADEMPIERE_DB_PORT e.g. "5432" or "1521"
ADEMPIERE_DB_SYSTEM system user password, e.g. "postgres" or "manager"
ADEMPIERE_DB_USER e.g. "adempiere"
ADEMPIERE_DB_PASSWORD e.g. "adempiere"
When in doubt, please run RUN_Setup.sh
EOF
sanityCheck=$errorNoEnvironment
fi
# make sure the database vendor is supported
if [ $unSupportedVendor ]
then
echo "The database vendor $dbVendor is not supported."
sanityCheck=$errorWrongVendor
fi
# make sure the database seed file exists
if [ ! -r $dbSeedFile ]
then
echo "The seed file $dbSeedFile could not be loaded."
echo "Please make sure it exists and you have read permissions."
sanityCheck=$errorNoSeedFile
fi
# make sure the database dependent import script can be executed
if [ ! -x $dbImportScript ]
then
echo "The import script $dbImportScript could not be run."
echo "Please make sure it exists and you have execute permissions."
sanityCheck=$errorNoImportScript
fi
# call database dependent import script
if [ $sanityCheck -eq 0 ]
then
if [ "$importMode" == "Seed" ]
then
cat <<-EOF
WARNING: The live database will be overwritten!
Make sure you have a backup!
EOF
fi
echo "Re-create user $dbUser"
echo "and import $dbSeedFile"
echo
echo "== The import will show warnings. This is OK =="
echo "Press enter to continue ..."
read in
$dbImportScript "$dbVendor" "$dbHost" "$dbPort" "$dbUser" "$dbPwd" "$sysUser" "$sysPwd" "$dbName" "$dbCatalog" "$dbSchema" "$dbSeedFile" "$dbSqljFile"
result=$?
if [[ $result -eq 0 && "$importMode" == "Seed" && -f $dbSignScript && -x $dbSignScript ]]
then
./$dbSignScript
fi
else
result=$sanityCheck
fi
# change back to calling directory
if [ -n $DIR_SAV ]
then
cd $DIR_SAV
fi
# end of script
echo
if [ $result -eq 0 ]
then
echo "done."
else
echo "terminated abnormally"
fi
exit $result