Project

General

Profile

build_db.xml

Lorian Sandu, 06/04/2025 08:21 AM

Download (18.9 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.sql.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.sql.name}" />
7
   <property name="sql.url.mariadb" value="jdbc:mariadb://${db.host}:${db.port}/${db.sql.name}" />
8
   <condition property="java.ext.dir.param" value="-Djava.ext.dirs=${db.spi.lib}" else="-Dignorethis">
9
     <not>
10
       <javaversion atleast="11"/>
11
     </not>
12
   </condition>
13
   <condition property="java.locale.providers.param" else="-Djava.locale.providers=SPI,JRE" value="-Djava.locale.providers=SPI,CLDR,COMPAT">
14
       <javaversion atleast="11"/>
15
   </condition>
16
   <tstamp>
17
      <format property="LOG_STAMP" pattern="yyyyMMdd_HHmmss" />
18
   </tstamp>
19

    
20
   <condition property="p2jpl.jar.path" value="${deploy.home.abs}/lib/p2jpl.jar" else="/usr/share/java/p2jpl.jar">
21
      <isset property="isWindows"  />
22
   </condition>
23

    
24
   <!-- drop the H2 database by deleting the ${db.home} directory -->
25
   <target name="clean.db.h2" description="Remove generated database directory." if="${db.h2}">
26
      <delete failonerror="false">
27
         <fileset dir="${db.home}" includes="${db.sql.name}.*" />
28
      </delete>
29
      <delete includeemptydirs="true" failonerror="false"> 
30
         <fileset dir="${db.home}" excludes="**/*" /> 
31
      </delete> 
32
   </target>
33

    
34
   <!-- create a fresh H2 database -->
35
   <target name="create.db.h2"
36
           description="Creates an empty H2 database instance using the DDL generated during conversion."
37
           if="${db.h2}">
38
      <record name="create_db_h2_${db.name}_${LOG_STAMP}.log" action="start"/>
39
      <java classname="com.goldencode.p2j.persist.deploy.ScriptRunner"
40
            fork="true"
41
            failonerror="true"
42
            dir="${basedir}" >
43
         <jvmarg value="-Xmx1g"/>
44
         <jvmarg value="${java.locale.providers.param}"/>
45
         <jvmarg value="${java.ext.dir.param}"/>
46
         <jvmarg value="-Dfile.encoding=UTF-8"/>
47
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
48
         <arg value ="${sql.url.h2}"/>
49
         <arg value="${sql.user}"/>
50
         <arg value="${sql.user.pass}"/>
51
         <arg value ="create.tables"/>
52
         <arg value = "table_${db.name}"/>
53
         <arg value ="-continueOnError"/>
54
         <classpath refid="app.classpath"/>
55
      </java>
56
      <record name="create_db_h2_${db.name}_${LOG_STAMP}.log" action="stop"/>
57
   </target>
58

    
59
   <!-- do the import in the H2 database -->
60
   <target name="import.db.h2"
61
           description="Import data (.d files) into database."
62
           if="${db.h2}">
63
      <record name="import_db_h2_${db.name}_${LOG_STAMP}.log" action="start"/>
64
      <java classname="com.goldencode.p2j.pattern.PatternEngine"
65
            fork="true"
66
            failonerror="true"
67
            dir="${basedir}" >
68
         <jvmarg value="-Xmx1g"/>
69
         <jvmarg value="${java.locale.providers.param}"/>
70
         <jvmarg value="${java.ext.dir.param}"/>
71
         <jvmarg value="-Dfile.encoding=UTF-8"/>
72
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
73
         <arg value ="-d"/>
74
         <arg value ="2"/>
75
         <arg value ="dbName=${escaped.quotes}${db.name}${escaped.quotes}"/>
76
         <arg value ="targetDb=${escaped.quotes}h2${escaped.quotes}"/>
77
         <arg value ="url=${escaped.quotes}${sql.url.h2}${escaped.quotes}"/>
78
         <arg value ="uid=${escaped.quotes}${sql.user}${escaped.quotes}"/>
79
         <arg value ="pw=${escaped.quotes}${sql.user.pass}${escaped.quotes}"/>
80
         <arg value ="dataPath=${escaped.quotes}${data.rel}/dump/${db.name}${escaped.quotes}"/>
81
         <arg value ="maxThreads=${db.import_threads}"/>
82
         <arg value ="jdbcBatchSize=${db.batch_size}"/>
83
         <arg value ="schema/import"/>
84
         <arg value ="${data.rel}"/>
85
         <arg value ="${db.name}.p2o"/>
86
         <classpath refid="import.classpath"/>
87
      </java>
88
      <record name="import_db_h2_${db.name}_${LOG_STAMP}.log" action="stop"/>
89
   </target>
90
   
91
   <!-- do the export from the H2 database -->
92
   <target name="export.db.h2"
93
           description="Export data from H2 database into (.d files)"
94
           if="${db.h2}">
95
      <record name="export_db_h2_${db.name}_${LOG_STAMP}.log" action="start"/>
96
      <!-- create export and lobs directories if they don't exist -->
97
      <mkdir dir="${data.rel}/export/${db.logical.name}" />
98
      <mkdir dir="${data.rel}/export/${db.logical.name}/lobs" />
99
      <java classname="com.goldencode.p2j.schema.ExportWorker"
100
            fork="true"
101
            failonerror="true"
102
            dir="${basedir}" >
103
         <jvmarg value="-Xmx4g"/>
104
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
105
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
106
         <jvmarg value="-Dfile.encoding=UTF-8"/>
107
         <jvmarg value="-Ddmo_package=${pkgroot.dot}.dmo"/>
108
         <jvmarg value="-Ddatabase_name=${db.logical.name}"/>
109
         <jvmarg value="-Dconnection.password=${sql.admin.pass}"/>
110
         <jvmarg value="-Dconnection.username=${sql.admin}"/>
111
         <jvmarg value="-Dconnection.url=${sql.url.h2}"/>
112
         <arg line="
113
          -exportPath ${data.rel}/export/${db.logical.name}
114
          -lobsPath ${data.rel}/export/${db.logical.name}/lobs
115
          -maxThreads ${db.export_threads}
116
          -encoding UTF-8"/>
117
         <classpath refid="export.classpath"/>
118
      </java>
119
      <record name="export_db_h2_${db.name}_${LOG_STAMP}.log" action="stop"/>
120
   </target>
121
   
122
   <!-- drop the PostgreSQL database -->
123
   <target name="clean.db.pg" description="Drop PostgreSQL database." if="${db.postgresql}">
124
      <record name="clean_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
125
      <exec executable="dropdb">
126
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
127
         <arg value="-U" />
128
         <arg value="${sql.admin}" />
129
         <arg value="-h" />
130
         <arg value="${db.host}" />
131
         <arg value="-p" />
132
         <arg value="${db.port}" />
133
         <arg value="${db.sql.name}" />
134
      </exec>
135
      <record name="clean_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
136
   </target>
137
   
138
   <!-- create a fresh PostgreSQL database -->
139
   <target name="create.db.pg"
140
           description="Create an empty PostgreSQL database instance using the DDL generated during conversion."
141
           if="${db.postgresql}">
142
      <record name="create_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
143
      <!-- create an empty database -->
144
      <exec executable="createdb">
145
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
146
         <arg value="-U" />
147
         <arg value="${sql.admin}" />
148
         <arg value="-h" />
149
         <arg value="${db.host}" />
150
         <arg value="-p" />
151
         <arg value="${db.port}" />
152
         <arg value="${db.sql.name}" />
153
      </exec>
154
      <!-- apply the schema to it -->
155
      <exec executable="psql">
156
         <env key="PGPASSWORD" value="${sql.user.pass}" />
157
         <arg value="-U" />
158
         <arg value="${sql.user}" />
159
         <arg value="-h" />
160
         <arg value="${db.host}" />
161
         <arg value="-p" />
162
         <arg value="${db.port}" />
163
         <arg value="-f" />
164
         <arg value="ddl/schema_table_${db.name}_postgresql.sql" />
165
         <arg value="${db.sql.name}" />
166
      </exec>
167
      <antcall target="sql.udfs.pg" inheritAll="true" inheritRefs="true"/>
168
      <record name="create_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
169
   </target>
170

    
171
   <!-- install the native UDFs in PostgreSQL database -->
172
   <target name="sql.udfs.pg" if="${db.sql.udfs}">
173
      <record name="sql_udfs_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
174
      <java classname="com.goldencode.p2j.persist.deploy.ScriptRunner"
175
            fork="true"
176
            failonerror="true"
177
            dir="${basedir}" >
178
         <classpath refid="app.classpath"/>
179
         <jvmarg value="-Xmx1g"/>
180
         <jvmarg value="-Dfile.encoding=UTF-8"/>
181
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
182
         <arg value ="${sql.url.pg}"/>
183
         <arg value="${sql.admin}" />
184
         <arg value ="${sql.admin.pass}"/>
185
         <arg value ="udf.install.search_path"/>
186
      </java>
187
      <record name="sql_udfs_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
188
   </target>
189
   
190
   <!-- do the import in the PostgreSQL database -->
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="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
202
         <jvmarg value="-Dfile.encoding=UTF-8"/>
203
         <arg value ="-d"/>
204
         <arg value ="2"/>
205
         <arg value ="dbName=${escaped.quotes}${db.name}${escaped.quotes}"/>
206
         <arg value ="targetDb=${escaped.quotes}postgresql${escaped.quotes}"/>
207
         <arg value ="url=${escaped.quotes}${sql.url.pg}${escaped.quotes}"/>
208
         <arg value ="uid=${escaped.quotes}${sql.user}${escaped.quotes}"/>
209
         <arg value ="pw=${escaped.quotes}${sql.user.pass}${escaped.quotes}"/>
210
         <arg value ="dataPath=${escaped.quotes}${data.rel}/dump/${db.name}${escaped.quotes}"/>
211
         <arg value ="maxThreads=${db.import_threads}"/>
212
         <arg value ="jdbcBatchSize=${db.batch_size}"/>
213
         <arg value ="schema/import"/>
214
         <arg value ="${data.rel}"/>
215
         <arg value ="${db.name}.p2o"/>
216
         <classpath refid="import.classpath"/>
217
      </java>
218
      <record name="import_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
219

    
220
      <record name="word_tables_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
221
      <exec executable="psql">
222
         <env key="PGPASSWORD" value="${sql.user.pass}" />
223
         <arg value="-U" />
224
         <arg value="${sql.user}" />
225
         <arg value="-h" />
226
         <arg value="${db.host}" />
227
         <arg value="-p" />
228
         <arg value="${db.port}" />
229
         <arg value="-f" />
230
         <arg value="ddl/schema_word_tables_${db.name}_postgresql.sql" />
231
         <arg value="${db.sql.name}" />
232
      </exec>
233
      <exec executable="psql">
234
         <env key="PGPASSWORD" value="${sql.admin.pass}" />
235
         <arg value="-U" />
236
         <arg value="${sql.admin}" />
237
         <arg value="-h" />
238
         <arg value="${db.host}" />
239
         <arg value="-p" />
240
         <arg value="${db.port}" />
241
         <arg value="-c" />
242
         <arg value="analyze" />
243
         <arg value="${db.sql.name}" />
244
      </exec>
245
      <record name="word_tables_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
246
   </target>
247

    
248
   <!-- do the export from the PostgreSQL database -->
249
   <target name="export.db.pg"
250
           description="Export data from PostgreSQL database into (.d files)"
251
           if="${db.postgresql}">
252
      <record name="export_db_pg_${db.name}_${LOG_STAMP}.log" action="start"/>
253
      <!-- create export and lobs directories if they don't exist -->
254
      <mkdir dir="${data.rel}/export/${db.logical.name}" />
255
      <mkdir dir="${data.rel}/export/${db.logical.name}/lobs" />
256
      <java classname="com.goldencode.p2j.schema.ExportWorker"
257
            fork="true"
258
            failonerror="true"
259
            dir="${basedir}" >
260
         <jvmarg value="-Xmx4g"/>
261
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
262
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
263
         <jvmarg value="-Dfile.encoding=UTF-8"/>
264
         <jvmarg value="-Ddmo_package=${pkgroot.dot}.dmo"/>
265
         <jvmarg value="-Ddatabase_name=${db.logical.name}"/>
266
         <jvmarg value="-Dconnection.password=${sql.admin.pass}"/>
267
         <jvmarg value="-Dconnection.username=${sql.admin}"/>
268
         <jvmarg value="-Dconnection.url=${sql.url.pg}"/>
269
         <arg line="
270
          -exportPath ${data.rel}/export/${db.logical.name}
271
          -lobsPath ${data.rel}/export/${db.logical.name}/lobs
272
          -maxThreads ${db.export_threads}
273
          -encoding UTF-8"/>
274
         <classpath refid="export.classpath"/>
275
      </java>
276
      <record name="export_db_pg_${db.name}_${LOG_STAMP}.log" action="stop"/>
277
   </target>
278

    
279
   <!-- drop the MariaDb database -->
280
   <target name="clean.db.mariadb" description="Drop MariaDb database." if="${db.mariadb}">
281
      <record name="clean_db_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
282
      <exec executable="mysqladmin">
283
         <arg value="drop" />
284
         <arg value="${db.sql.name}" />
285
         <arg value="--force" />
286
         <arg value="--host=${db.host}" />
287
         <arg value="--port=${db.port}" />
288
         <arg value="--user=${sql.admin}" />
289
         <arg value="--password=${sql.admin.pass}" />
290
      </exec>
291
      <record name="clean_db_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
292
   </target>
293

    
294
   <!-- create a fresh MariaDb database -->
295
   <target name="create.db.mariadb"
296
           description="Create an empty MariaDb database instance using the DDL generated during conversion."
297
           if="${db.mariadb}">
298
      <record name="create_db_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
299
      <exec executable="mysqladmin">
300
         <arg value="create" />
301
         <arg value="${db.sql.name}" />
302
         <arg value="--host=${db.host}" />
303
         <arg value="--port=${db.port}" />
304
         <arg value="--user=${sql.admin}" />
305
         <arg value="--password=${sql.admin.pass}" />
306
      </exec>
307
      
308
      <!-- apply the schema to it -->
309
      <exec executable="mariadb">
310
         <arg value="--host=${db.host}" />
311
         <arg value="--port=${db.port}" />
312
         <arg value="--user=${sql.admin}" />
313
         <arg value="--password=${sql.admin.pass}" />
314
         <!--<arg value="&#45;&#45;verbose" />-->
315
         <arg value="${db.sql.name}" />
316
         <redirector input="ddl/schema_table_${db.name}_mariadb.sql" />
317
      </exec>
318

    
319
      <antcall target="sql.udfs.mariadb" inheritAll="true" inheritRefs="true"/>
320
      <record name="create_db_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
321
   </target>
322
   
323
   <!-- install the native UDFs in MariaDb database -->
324
   <target name="sql.udfs.mariadb" if="${db.sql.udfs}">
325
      <record name="sql_udfs_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
326
      <java classname="com.goldencode.p2j.persist.deploy.ScriptRunner"
327
            fork="true"
328
            failonerror="true"
329
            dir="${basedir}" >
330
         <classpath refid="app.classpath"/>
331
         <jvmarg value="-Xmx1g"/>
332
         <jvmarg value="-Dfile.encoding=UTF-8"/>
333
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
334
         <arg value ="${sql.url.mariadb}"/>
335
         <arg value="${sql.admin}" />
336
         <arg value ="${sql.admin.pass}"/>
337
         <arg value ="udf.install.search_path"/>
338
      </java>
339
      <record name="sql_udfs_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
340
   </target>
341
   
342
   <!-- do the import in the MariaDb database -->
343
   <target name="import.db.mariadb"
344
           description="Import data (.d files) into MariaDb database."
345
           if="${db.mariadb}">
346
      <record name="import_db_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
347
      <java classname="com.goldencode.p2j.pattern.PatternEngine"
348
            fork="true"
349
            failonerror="true"
350
            dir="${basedir}" >
351
         <jvmarg value="-Xmx1g"/>
352
         <jvmarg value="-server"/>
353
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
354
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
355
         <jvmarg value="-Dfile.encoding=UTF-8"/>
356
         <arg value ="-d"/>
357
         <arg value ="2"/>
358
         <arg value ="dbName=${escaped.quotes}${db.name}${escaped.quotes}"/>
359
         <arg value ="targetDb=${escaped.quotes}mariadb${escaped.quotes}"/>
360
         <arg value ="url=${escaped.quotes}${sql.url.mariadb}${escaped.quotes}"/>
361
         <arg value ="uid=${escaped.quotes}${sql.admin}${escaped.quotes}"/>
362
         <arg value ="pw=${escaped.quotes}${sql.admin.pass}${escaped.quotes}"/>
363
         <arg value ="dataPath=${escaped.quotes}${data.rel}/dump/${db.name}${escaped.quotes}"/>
364
         <arg value ="maxThreads=${db.import_threads}"/>
365
         <arg value ="jdbcBatchSize=${db.batch_size}"/>
366
         <arg value ="schema/import"/>
367
         <arg value ="${data.rel}"/>
368
         <arg value ="${db.name}.p2o"/>
369
         <classpath refid="import.classpath"/>
370
      </java>
371
      <record name="import_db_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
372

    
373
      <record name="word_tables_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
374
      <exec executable="mariadb">
375
         <arg value="--host=${db.host}" />
376
         <arg value="--port=${db.port}" />
377
         <arg value="--user=${sql.admin}" />
378
         <arg value="--password=${sql.admin.pass}" />
379
         <!--<arg value="&#45;&#45;verbose" />-->
380
         <arg value="${db.sql.name}" />
381
         <redirector input="ddl/schema_word_tables_${db.name}_mariadb.sql" />
382
      </exec>
383
      <record name="word_tables_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
384
   </target>
385

    
386
   <!-- do the export from the MariaDb database -->
387
   <target name="export.db.mariadb"
388
           description="Export data from MariaDb database into (.d files)"
389
           if="${db.mariadb}">
390
      <record name="export_db_mariadb_${db.name}_${LOG_STAMP}.log" action="start"/>
391
      <!-- create export and lobs directories if they don't exist -->
392
      <mkdir dir="${data.rel}/export/${db.logical.name}" />
393
      <mkdir dir="${data.rel}/export/${db.logical.name}/lobs" />
394
      <java classname="com.goldencode.p2j.schema.ExportWorker"
395
            fork="true"
396
            failonerror="true"
397
            dir="${basedir}" >
398
         <jvmarg value="-Xmx4g"/>
399
         <jvmarg value="-Djava.system.class.loader=com.goldencode.asm.AsmClassLoader"/>
400
         <jvmarg value="-Djava.util.logging.config.file=${fwd.home}/cfg/logging.properties"/>
401
         <jvmarg value="-Dfile.encoding=UTF-8"/>
402
         <jvmarg value="-Ddmo_package=${pkgroot.dot}.dmo"/>
403
         <jvmarg value="-Ddatabase_name=${db.logical.name}"/>
404
         <jvmarg value="-Dconnection.password=${sql.admin.pass}"/>
405
         <jvmarg value="-Dconnection.username=${sql.admin}"/>
406
         <jvmarg value="-Dconnection.url=${sql.url.mariadb}"/>
407
         <arg line="
408
          -exportPath ${data.rel}/export/${db.logical.name}
409
          -lobsPath ${data.rel}/export/${db.logical.name}/lobs
410
          -maxThreads ${db.export_threads}
411
          -encoding UTF-8"/>
412
         <classpath refid="export.classpath"/>
413
      </java>
414
      <record name="export_db_mariadb_${db.name}_${LOG_STAMP}.log" action="stop"/>
415
   </target>
416
   
417
</project>