Hi Luciano, Yes, I am making a util jar for that. Please check all the below details and let me know yout suggestions.
Trying to reuse part of DAS config.xsd's (ConnectionInfo portion ) to supply the connection params and adding a new element to xsd to list database table names that need to be created. This way different samples can restrict the number of tables created based on their need. Also, making methods to do force/needBased refresh of tables and data. i.e. control table creation and data refresh. We can use same jar in web samples and standalone samples. The methods exposed to the clients of this jar will be dbInit.createDB (DBConfigFileName); dbInit.createSchema(boolean) - for force/need base table creation, dbInit.createData(boolean)- for force/need base data refresh. Can be more granular - like which table to create/data to refresh - but then the whole referntial integrity will need to be taken care, So to keep it simple - at present - its all tables/none , not selective. I am assuming that the table structure is internal knowledge of this util, i.e. not allowing externally defining table structures etc. (sim. to what we have at present in rdb). Only flexibility is - which are the tables required by the current client. Will that suffice for the current need? We can add that later if it is essential for some apps/samples. Pasting here the structure of DBConfig.xsd. See if this will meet the requirements. Can add database vendor name to support different databases like Derby, DB2, MySQL etc. One question here is - For DB2 database creation - from java, how to do this? There are ways for this in MySQL and Derby but could not find for DB2, any pointers? Below is the xsd. _________________________________________________________________________________ <?xml version="1.0" encoding="UTF-8"?> <!-- 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. --> <xsd:schema xmlns:DBConfig="http:///org.apache.tuscany.das.rdb/DBConfig.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http:///org.apache.tuscany.das.rdb/DBConfig.xsd"> <xsd:element name="DBConfig" type="DBConfig:DBConfig"/> <xsd:complexType name="DBConfig"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="ConnectionInfo" type="DBConfig:ConnectionInfo"/> <xsd:element maxOccurs="1" minOccurs="1" name="TableList" type="DBConfig:TableList"/> </xsd:sequence> <xsd:attribute name="forceRecreate" type="xsd:boolean"/> <xsd:attribute name="forceDataRefresh" type="xsd:boolean"/> </xsd:complexType> <xsd:complexType name="ConnectionProperties"> <xsd:attribute name="driverClass" type="xsd:string"/> <xsd:attribute name="databaseURL" type="xsd:string"/> <xsd:attribute default="" name="userName" type="xsd:string"/> <xsd:attribute default="" name="password" type="xsd:string"/> <xsd:attribute default="0" name="loginTimeout" type="xsd:int"/> </xsd:complexType> <xsd:complexType name="ConnectionInfo"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="ConnectionProperties" type="DBConfig:ConnectionProperties"/> </xsd:sequence> <xsd:attribute name="dataSource" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="TableList"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="TableName" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> On 4/10/07, Luciano Resende <[EMAIL PROTECTED]> wrote:
Hi Amita Today, we have couple of DAS sample applications (companyWeb, customer, das-service) and they mostly rely on same set of databases table and the solution we have today is to have the actual derby canned db checked in and copied when it need to be used. This per si is a problem, but also, if you want to use the sample with another db (e.g MySQL) you would have to create the canned DB yourself. There is also a small issue when performing automated integration testings using htmlUnit, that we need a way to refresh the data to it's initial status, to allow running the test again without having to re-copy the canned databases. The idea behind Tuscany-863 is to try solve these issues mentioned above, so the solution should be something that we could share between all the sample applications, maybe a module that would create a jar to handle this canned db, and the applications using the canned DBs would include the jar to handle creation population and refreshing the canned DB data. The patch you produced for Tuscany-863 is embedded on the companyWeb sample, so I think it would be better to investigate the possibility to move it to it's own module. I'm also open to hear other possible solutions, or approaches, that would address the scenarios mentioned above. Thoughts ? -- Luciano Resende http://people.apache.org/~lresende