Project

General

Profile

build_db.xml

Igor Skornyakov, 12/24/2020 04:32 PM

Download (9.43 KB)

 
1
<project name="hotel" default="dist" basedir=".">
2

    
3
   <description>Tasks to manage the databases (import, export, drop, create). Always called via build.xml</description>
4
   
5
   <property name="sql.url.h2" value="jdbc:h2:${db.home}/${db.name};MV_STORE=FALSE;LOG=0;CACHE_SIZE=65536;LOCK_MODE=0;UNDO_LOG=0" />
6
   <property name="sql.url.pg" value="jdbc:postgresql://${db.host}:${db.port}/${db.name}" />
7

    
8
   <tstamp>
9
      <format property="LOG_STAMP" pattern="yyyyMMdd_HHmmss" />
10
   </tstamp>
11

    
12
   <condition property="p2jpl.jar.path" value="${deploy.home.abs}/lib/p2jpl.jar" else="/usr/share/java/p2jpl.jar">
13
      <isset property="isWindows"  />
14
   </condition>
15

    
16
   <!-- drop the H2 database by deleting the ${db.home} directory -->
17
   <target name="clean.db.h2" description="Remove generated database directory." if="${db.h2}">
18
      <delete failonerror="false">
19
         <fileset dir="${db.home}" includes="${db.name}.*" />
20
      </delete>
21
      <delete includeemptydirs="true" failonerror="false"> 
22
         <fileset dir="${db.home}" excludes="**/*" /> 
23
      </delete> 
24
   </target>
25

    
26
   <target name="create.db.h2"
27
           description="Creates an empty H2 database instance using the DDL generated during conversion."
28
           if="${db.h2}">
29
      <record name="create_db_h2_${db.name}_${LOG_STAMP}.log" action="start"/>
30
      <java classname="org.h2.tools.RunScript"
31
            fork="true"
32
            failonerror="true"
33
            dir="${basedir}" >
34
         <jvmarg value="-Xmx1g"/>
35
         <jvmarg value="-Dfile.encoding=UTF-8"/>
36
         <arg value ="-url"/>
37
         <arg value ="${sql.url.h2}"/>
38
         <arg value ="-user"/>
39
         <arg value="${sql.user}"/>
40
         <arg value ="-password"/>
41
         <arg value="${sql.user.pass}"/>
42
         <arg value ="-script"/>
43
         <arg value = "ddl/schema_table_${db.name}_h2.sql"/>
44
         <arg value ="-continueOnError"/>
45
         <classpath refid="app.classpath"/>
46
      </java>
47
      <record name="create_db_h2_${db.name}_${LOG_STAMP}.log" action="stop"/>
48
   </target>
49
   
50
   <target name="import.db.h2"
51
           description="Import data (.d files) into database."
52
           if="${db.h2}">
53
      <record name="import_db_h2_${db.name}_${LOG_STAMP}.log" action="start"/>
54
      <java classname="com.goldencode.p2j.pattern.PatternEngine"
55
            fork="true"
56
            failonerror="true"
57
            dir="${basedir}" >
58
         <jvmarg value="-Xmx1g"/>
59
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
60
         <jvmarg value="-Dfile.encoding=UTF-8"/>
61
         <arg value ="-d"/>
62
         <arg value ="2"/>
63
         <arg value ="dbName=${escaped.quotes}${db.name}${escaped.quotes}"/>
64
         <arg value ="targetDb=${escaped.quotes}h2${escaped.quotes}"/>
65
         <arg value ="url=${escaped.quotes}${sql.url.h2}${escaped.quotes}"/>
66
         <arg value ="uid=${escaped.quotes}${sql.user}${escaped.quotes}"/>
67
         <arg value ="pw=${escaped.quotes}${sql.user.pass}${escaped.quotes}"/>
68
         <arg value ="maxThreads=4"/>
69
         <arg value ="schema/import"/>
70
         <arg value ="data/namespace/"/>
71
         <arg value ="${db.name}.p2o"/>
72
         <classpath refid="app.classpath"/>
73
      </java>
74
      <record name="import_db_h2_${db.name}_${LOG_STAMP}.log" action="stop"/>
75
   </target>
76
   
77
   <!-- drop the PostgreSQL database -->
78
   <target name="clean.db.pg" description="Drop PostgreSQL database." if="${db.postgresql}">
79
      <record name="clean_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
80
      <exec executable="dropdb">
81
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
82
         <arg value="-U" />
83
         <arg value="${sql.admin}" />
84
         <arg value="-h" />
85
         <arg value="${db.host}" />
86
         <arg value="-p" />
87
         <arg value="${db.port}" />
88
         <arg value="${db.name}" />
89
      </exec>
90
      <record name="clean_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
91
   </target>
92
   
93
   <target name="create.db.pg"
94
           description="Create an empty PostgreSQL database instance using the DDL generated during conversion."
95
           if="${db.postgresql}">
96
      <record name="create_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
97
      <!-- create an empty database -->
98
      <exec executable="createdb">
99
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
100
         <arg value="-U" />
101
         <arg value="${sql.admin}" />
102
         <arg value="-h" />
103
         <arg value="${db.host}" />
104
         <arg value="-p" />
105
         <arg value="${db.port}" />
106
         <arg value="${db.name}" />
107
      </exec>
108
      <!-- apply the schema to it -->
109
      <exec executable="psql">
110
         <env key="PGPASSWORD" value="${sql.user.pass}" />
111
         <arg value="-U" />
112
         <arg value="${sql.user}" />
113
         <arg value="-h" />
114
         <arg value="${db.host}" />
115
         <arg value="-p" />
116
         <arg value="${db.port}" />
117
         <arg value="-f" />
118
         <arg value="ddl/schema_table_${db.name}_postgresql.sql" />
119
         <arg value="${db.name}" />
120
      </exec>
121
      <!-- enable Java as a procedure language -->
122
      <exec executable="psql">
123
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
124
         <arg value="-U" />
125
         <arg value="${sql.admin}" />
126
         <arg value="-h" />
127
         <arg value="${db.host}" />
128
         <arg value="-p" />
129
         <arg value="${db.port}" />
130
         <arg value="-c" />
131
         <arg value="create extension pljava" />
132
         <arg value="${db.name}" />
133
      </exec>
134
      <!-- grant permission for public to use sqlj schema (PL/Java) -->
135
      <exec executable="psql">
136
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
137
         <arg value="-U" />
138
         <arg value="${sql.admin}" />
139
         <arg value="-h" />
140
         <arg value="${db.host}" />
141
         <arg value="-p" />
142
         <arg value="${db.port}" />
143
         <arg value="-c" />
144
         <arg value="grant usage on schema sqlj to public" />
145
         <arg value="${db.name}" />
146
      </exec>
147
      <!-- load the FWD UDF library into the database -->
148
      <exec executable="psql">
149
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
150
         <arg value="-U" />
151
         <arg value="${sql.admin}" />
152
         <arg value="-h" />
153
         <arg value="${db.host}" />
154
         <arg value="-p" />
155
         <arg value="${db.port}" />
156
         <arg value="-c" />
157
         <arg value="select sqlj.install_jar('file://${p2jpl.jar.path}', 'p2j', true)" />
158
         <arg value="${db.name}" />
159
      </exec>
160
      <!-- set classpath for FWD UDF library -->
161
      <exec executable="psql">
162
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
163
         <arg value="-U" />
164
         <arg value="${sql.admin}" />
165
         <arg value="-h" />
166
         <arg value="${db.host}" />
167
         <arg value="-p" />
168
         <arg value="${db.port}" />
169
         <arg value="-c" />
170
         <arg value="select sqlj.set_classpath('public', 'p2j')" />
171
         <arg value="${db.name}" />
172
      </exec>
173
      <!-- triggers -->
174
 <!--
175
      <exec executable="psql">
176
         <env key="PGPASSWORD" value="${sql.user.pass}" />
177
         <arg value="-U" />
178
         <arg value="${sql.user}" />
179
         <arg value="-h" />
180
         <arg value="${db.host}" />
181
         <arg value="-p" />
182
         <arg value="${db.port}" />
183
         <arg value="-f" />
184
         <arg value="ddl/schema_trigger_${db.name}_postgresql.sql" />
185
         <arg value="${db.name}" />
186
      </exec>
187
-->
188
      <record name="create_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
189
   </target>
190
   
191
   <target name="import.db.pg"
192
           description="Import data (.d files) into PostgreSQL database."
193
           if="${db.postgresql}">
194
      <record name="import_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
195
      <java classname="com.goldencode.p2j.pattern.PatternEngine"
196
            fork="true"
197
            failonerror="true"
198
            dir="${basedir}" >
199
         <jvmarg value="-Xmx1g"/>
200
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
201
         <jvmarg value="-Dfile.encoding=UTF-8"/>
202
         <jvmarg value="-Djava.util.logging.config.file=${p2j.home}/cfg/logging.properties"/>
203
         <jvmarg value="-Xrunjdwp:transport=dt_socket,address=2080,server=y,suspend=n"/>
204
         <arg value ="-d"/>
205
         <arg value ="2"/>
206
         <arg value ="dbName=${escaped.quotes}${db.name}${escaped.quotes}"/>
207
         <arg value ="targetDb=${escaped.quotes}postgresql${escaped.quotes}"/>
208
         <arg value ="url=${escaped.quotes}${sql.url.pg}${escaped.quotes}"/>
209
         <arg value ="uid=${escaped.quotes}${sql.user}${escaped.quotes}"/>
210
         <arg value ="pw=${escaped.quotes}${sql.user.pass}${escaped.quotes}"/>
211
         <arg value ="maxThreads=1"/>
212
         <arg value ="schema/import"/>
213
         <arg value ="data/namespace/"/>
214
         <arg value ="${db.name}.p2o"/>
215
         <classpath refid="app.classpath"/>
216
      </java>
217
      <record name="import_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
218
      <record name="word_tables_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
219
      <exec executable="psql">
220
         <env key="PGPASSWORD" value="${sql.user.pass}" />
221
         <arg value="-U" />
222
         <arg value="${sql.user}" />
223
         <arg value="-h" />
224
         <arg value="${db.host}" />
225
         <arg value="-p" />
226
         <arg value="${db.port}" />
227
         <arg value="-f" />
228
         <arg value="ddl/schema_word_tables_${db.name}_postgresql.sql" />
229
         <arg value="${db.name}" />
230
      </exec>
231
      <record name="word_tables_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
232
   </target>
233
   
234
</project>