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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Tuscany RDB DAS Database Setup Utility</title>
<style>
.code {font-size: 11px; color: #006699}
.codebox {border: 1px solid #6699CC; background-color: #F1F7FA;padding:15px}
.codebox2 {border: 1px solid #6699CC; background-color: #F1F7FA;padding:15px; width:85%}
.codeboxW {border: 1px solid #6699CC; background-color: #FFFFFF;padding:15px}
.codeboxB {background-color: #C9DBED;padding:1px 10px 10px 10px}
</style>
</head>
<h1><center>Tuscany RDB DAS Database Setup Utility</center></h1>
<br>
<p>This utility provides a jar file to be used by RDB DAS sample
applications (web or standalone) to do database setup. So far the
samples provided canned pre-created Derby database with tables and data.
There was no convenient way to refresh table data during the samples
execution. This utility supports Derby database at present and uses a
config file to get the setup information.</p>
<h2>APIs</h2>
<ul style="border-right-style: solid; border-left-style: solid; border-top-style: solid; border-bottom-style: solid">
public DBInitializer() – uses default provided ConfigFile CannedSampleDBConfig.xml <br>
public DBInitializer(String ConfigFileLocation) <br>
public DBInitializer (InputStream ConfigFileStream) <br>
public void initializeDatabase(boolean clean) - Create database tables and fill data. If clean=true, all tables will be dropped and recreated. <br>
public void initializeDatabaseData(boolean clean) - create database data (with clean=true, if a table has pre-existing data, it will be deleted first) <br>
public void refreshDatabaseData() – calls initializeDatabase(clean=true) <br>
public boolean isDatabaseReady() - will return true, if the tables exist in the database <br>
public boolean isDatabasePopulated() - will return true, if the tables have data <br>
</ul>
<h2>Assumptions:</h2>
<p><table> element lists tables in proper sequence, i.e. parent tables
first and then child tables. This sequence will be used in
create,insert,delete,drop to take care of referential integrity. The
config file required by utility supports the following features through
different attributes and elements. Sample xml file is shown at the end.
</p>
<h2><ConnectionInfo></h2>
<p>This element provides connection specific information - like vendor
specific database URL, user name, password etc. If the DataSource is
provided by the web container, user needs to only fill dataSource
attribute in this. In case of standalone J2SE samples, user needs to
fill ConnectionProperties element inside ConnectionInfo. These two ways
of connection specification are mutually exclusive.</p>
<h2><table></h2>
<p>This element needs to specify the table names required by the
sample. Only these tables will be considered for creation, data
population. This gives flexibility to the user to choose the required
set of tables based on the sample's requirement. It also needs to
specify in the attributes, the Create SQL command used to create this
table.<table> has sequence element <row> which is used to provide
the data to be populated in the table.
</p>
<h2>Set Up</h2>
<p>To use this utility, include its jar and required database
driver's jar in the classpath. Provide the config file used by this
utility , similar to the example below, in the source folder of the
sample.<br>
</p>
<h2>DBConfig.xml example</h2>
<ul style="border-right-style: solid; border-left-style: solid; border-top-style: solid; border-bottom-style: solid">
<?xml version="1.0" encoding="ASCII"?><br>
<!-- Licensed to the Apache Software Foundation (ASF) under one or
more contributor license agreements. See the NOTICE file distributed
with this work for additional information regarding copyright
ownership. The ASF licenses this file to you under the Apache License,
Version 2.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 Unless required by
applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the
License. --> <br><br>
<DBConfig
xmlns="http:///org.apache.tuscany.das.rdb/dbconfig.xsd"><br><br>
<ConnectionInfo><br>
<ConnectionProperties
driverClass="org.apache.derby.jdbc.EmbeddedDriver"
databaseURL="jdbc:derby:target/dastest; create = true"
loginTimeout="600000" /><br>
</ConnectionInfo> <br><br>
<Table
name="COMPANY" SQLCreate="CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT
NULL, NAME VARCHAR(30), EOTMID INTEGER)"> <br>
<row> 51, 'ACME Publishing', 0 </row> <br>
<row> 52, 'Do-rite plumbing', 0 </row><br>
<row> 53, 'MegaCorp', 0 </row><br>
</Table><br><br>
<Table name="DEPARTMENT" SQLCreate="CREATE TABLE DEPARTMENT (ID INT
PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY, NAME
VARCHAR(30),LOCATION VARCHAR(30), DEPNUMBER VARCHAR(10),COMPANYID
INT)"> <br>
<row> 'Advanced Technologies', 'NY', '123', 1 </row> <br>
<row> 'Default Name', '', '', 51 </row><br>
<row> 'Default Name', '', '', 51 </row> <br>
<row> 'Default Name', '', '', 51 </row> <br>
<row> 'Default Name', '', '', 51 </row> <br>
<row> 'Default Name', '', '', 51 </row><br>
<row> 'Default Name', '', '', 51 </row> <br>
</Table><br><br>
<Table name="EMPLOYEE" SQLCreate="CREATE TABLE EMPLOYEE (ID INT
PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,NAME VARCHAR(30),SN
VARCHAR(10), MANAGER SMALLINT, DEPARTMENTID INT)"> <br>
<row> 'John Jones','E0001',0,12 </row> <br>
<row> 'Mary Smith','E0002',1,null </row> <br>
<row> 'Jane Doe','E0003',0,12 </row> <br>
<row> 'Al Smith','E0004',1,12 </row><br>
</Table> <br><br></DBConfig><br>
</ul>
</BODY>
</HTML>
|