diff options
Diffstat (limited to 'sandbox/lresende/backup/company-das/src')
10 files changed, 557 insertions, 0 deletions
diff --git a/sandbox/lresende/backup/company-das/src/main/java/das/DASService.java b/sandbox/lresende/backup/company-das/src/main/java/das/DASService.java new file mode 100644 index 0000000000..0387341b87 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/java/das/DASService.java @@ -0,0 +1,61 @@ +/*
+ * 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.
+ */
+package das;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import commonj.sdo.DataObject;
+
+public interface DASService {
+
+ /**
+ * Set DAS configuration file to be used
+ * @param configStream
+ * @throws DASServiceException
+ */
+ public void configureService(InputStream configStream) throws DASServiceException;
+
+ /**
+ * Execute an existing command. The commands are defined in the DAS Configuration file being used by the service
+ * @param commandName Command name as it appears on the DAS Configuration file
+ * @param commandArguments Vector with arguments to be used by the command
+ * @throws DASServiceException
+ * @return
+ */
+ public DataObject executeCommand(String commandName, Vector commandArguments) throws DASServiceException;
+
+ /**
+ * Execute a new command, this can be any arbitrary valid query based on the backend implementation (e.g. SQL Query for DAS RDB)
+ * @param adHocQuery A new command to be executed (e.g SQL Query)
+ * @param commandArguments Vector with arguments to be used by the command
+ * @throws DASServiceException
+ * @return
+ */
+ public DataObject execute(String adHocQuery, Vector commandArguments) throws DASServiceException;
+
+ /**
+ * Apply all changes on the graph back to the persistent repository.
+ * This would save the changes on the SDO ChangeSummary back to the database
+ * Note: Your SDO ojects should have been created with ChangeSummary support
+ * @param graphRoot SDO Object with changes to be commited to persistent repository
+ * @throws DASServiceException
+ */
+ public void applyChanges(DataObject graphRoot) throws DASServiceException;
+}
diff --git a/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceClient.java b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceClient.java new file mode 100644 index 0000000000..b23731df21 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceClient.java @@ -0,0 +1,48 @@ +/* + * 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. + */ + +package das; + +import java.util.List; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +import commonj.sdo.DataObject; + +public class DASServiceClient { + + public static void main(String[] args) throws Exception { + + SCADomain scaDomain = SCADomain.newInstance("dasservice.composite"); + DASService dasService = scaDomain.getService(DASService.class, "DASServiceComponent"); + + + dasService.configureService(DASServiceClient.class.getClassLoader().getResourceAsStream("company.xml")); + + DataObject root = dasService.executeCommand("all companies", null); + List companyList = root.getList("COMPANY"); + + for(int i=0; i<companyList.size(); i++){ + System.out.println(" ID:"+(((DataObject)companyList.get(i)).getInt("ID"))+ + " NAME:"+(((DataObject)companyList.get(i)).getString("NAME"))); + } + + } + +} diff --git a/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceException.java b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceException.java new file mode 100644 index 0000000000..e62201a4de --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceException.java @@ -0,0 +1,37 @@ +/*
+ * 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.
+ */
+package das;
+
+public class DASServiceException extends Exception {
+
+ private static final long serialVersionUID = -7514653215235902874L;
+
+ public DASServiceException() {
+ super();
+ }
+
+ public DASServiceException(String msg) {
+ super(msg);
+ }
+
+ public DASServiceException(String msg, Throwable ex) {
+ super(msg, ex);
+ }
+
+}
diff --git a/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceImpl.java b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceImpl.java new file mode 100644 index 0000000000..5b9beb21cb --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/java/das/DASServiceImpl.java @@ -0,0 +1,153 @@ +/*
+ * 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.
+ */
+package das;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.DAS;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Scope;
+
+import commonj.sdo.DataObject;
+
+@Scope("COMPOSITE")
+public class DASServiceImpl implements DASService {
+
+ private DAS das = null;
+
+ /**
+ * Initialize DAS
+ * @return
+ * @throws DASServiceException
+ */
+ private void initDAS(InputStream config) throws DASServiceException {
+ if(config == null){
+ throw new DASServiceException("Missing configuration information");
+ }
+
+ if(this.das != null){
+ this.das.releaseResources();
+ this.das = null;
+ }
+
+ this.das = DAS.FACTORY.createDAS(config);
+ }
+
+ @Destroy
+ protected void destroyDAS() {
+ if(das != null) {
+ das.releaseResources();
+ }
+ }
+
+ /**
+ * Get a DAS instance based on the configuration
+ * @return
+ * @throws DASServiceException
+ */
+ private DAS getDAS() throws DASServiceException {
+ if(this.das == null){
+ throw new DASServiceException("DAS not initialized. Please provide DAS configuration torugh das.SetConfig");
+ }
+
+ return this.das;
+ }
+
+ /**
+ * Set DAS configuration file to be used
+ * @param configStream
+ * @throws DASServiceException
+ */
+ public void configureService(InputStream configStream) throws DASServiceException{
+ this.initDAS(configStream);
+ }
+
+
+
+ /**
+ * Execute an existing command. The commands are defined in the DAS Configuration file being used by the service
+ * @param commandName Command name as it appears on the DAS Configuration file
+ * @param commandArguments Vector with arguments to be used by the command
+ * @throws DASServiceException
+ * @return
+ */
+ public DataObject executeCommand(String commandName, Vector commandArguments) throws DASServiceException{
+ Command command = this.getDAS().getCommand(commandName);
+
+ if(command == null){
+ throw new DASServiceException("Invalid command: " + commandName);
+ }
+
+ //check if arguments was passed
+ if(commandArguments != null && commandArguments.size() > 0){
+ //we need to set the arguments
+ int pos=0;
+ for(Object argument : commandArguments){
+ pos++;
+ command.setParameter(pos, argument);
+ }
+ }
+
+ DataObject root = command.executeQuery();
+
+ return root;
+ }
+
+ /**
+ * Execute a new command, this can be any arbitrary valid query based on the backend implementation (e.g. SQL Query for DAS RDB)
+ * @param newCommand A new command to be executed (e.g SQL Query)
+ * @param commandArguments Vector with arguments to be used by the command
+ * @throws DASServiceException
+ * @return
+ */
+ public DataObject execute(String adHocQuery, Vector commandArguments) throws DASServiceException {
+ Command command = this.getDAS().createCommand(adHocQuery);
+
+ if(command == null){
+ throw new DASServiceException("Invalid command: " + adHocQuery);
+ }
+
+ //check if arguments was passed
+ if(commandArguments != null && commandArguments.size() > 0){
+ //we need to set the arguments
+ int pos=0;
+ for(Object argument : commandArguments){
+ pos++;
+ command.setParameter(pos, argument);
+ }
+ }
+ DataObject root = command.executeQuery();
+
+ return root;
+ }
+
+ /**
+ * Apply all changes on the graph back to the persistent repository.
+ * This would save the changes on the SDO ChangeSummary back to the database
+ * Note: Your SDO ojects should have been created with ChangeSummary support
+ * @throws DASServiceException
+ * @param graphRoot SDO Object with changes to be commited to persistent repository
+ */
+ public void applyChanges(DataObject graphRoot) throws DASServiceException{
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/sandbox/lresende/backup/company-das/src/main/resources/company.xml b/sandbox/lresende/backup/company-das/src/main/resources/company.xml new file mode 100644 index 0000000000..39935fe025 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/resources/company.xml @@ -0,0 +1,52 @@ +<?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. + --> +<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> + + <ConnectionInfo> + <ConnectionProperties + driverClass="org.apache.derby.jdbc.EmbeddedDriver" + databaseURL="jdbc:derby:target/company_db;create=true" + loginTimeout="600000"/> + </ConnectionInfo> + + + <Command name="all companies" SQL="select * from COMPANY" kind="Select"/> + + <Command name="all companies and departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID" kind="Select"/> + + <Command name="all departments for company" SQL="select * from COMPANY inner join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/> + + <Command name="company by id with departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/> + + + <Table tableName="COMPANY"> + <Column columnName="ID" primaryKey="true" generated="true"/> + </Table> + + <Table tableName="DEPARTMENT"> + <Column columnName="ID" primaryKey="true" generated="true"/> + </Table> + + <Relationship name="departments" primaryKeyTable="COMPANY" foreignKeyTable="DEPARTMENT" many="true"> + <KeyPair primaryKeyColumn="ID" foreignKeyColumn="COMPANYID"/> + </Relationship> + + +</Config> diff --git a/sandbox/lresende/backup/company-das/src/main/resources/dasservice.composite b/sandbox/lresende/backup/company-das/src/main/resources/dasservice.composite new file mode 100644 index 0000000000..06063184c9 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/resources/dasservice.composite @@ -0,0 +1,29 @@ +<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://das-service"
+ xmlns:das-service="http://das-service"
+ name="DASService">
+
+ <component name="DASServiceComponent">
+ <implementation.java class="das.DASServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sandbox/lresende/backup/company-das/src/main/resources/log4j.properties b/sandbox/lresende/backup/company-das/src/main/resources/log4j.properties new file mode 100644 index 0000000000..ab4ebbb785 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/main/resources/log4j.properties @@ -0,0 +1,36 @@ +# 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. +# +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=INFO, NULL + +# NULL Appender +log4j.appender.NULL=org.apache.log4j.varia.NullAppender + +log4j.appender.NULL.layout=org.apache.log4j.PatternLayout +log4j.appender.NULL.layout.ConversionPattern=[DAS RDB] - %c{1}.%M (%L) : %m %n + +# CONSOLE is set to be a ConsoleAppender. +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=[DAS RDB] - %c{1}.%M (%L) : %m %n + + +# Print only messages of level WARN or above in the package com.foo. +log4j.logger.org.apache.tuscany=NONE
\ No newline at end of file diff --git a/sandbox/lresende/backup/company-das/src/test/java/das/DASServiceTestCase.java b/sandbox/lresende/backup/company-das/src/test/java/das/DASServiceTestCase.java new file mode 100644 index 0000000000..b866336db6 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/test/java/das/DASServiceTestCase.java @@ -0,0 +1,53 @@ +/*
+ * 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.
+ */
+package das;
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import commonj.sdo.DataObject;
+
+public class DASServiceTestCase extends TestCase {
+
+ private SCADomain scaDomain;
+ private DASService dasService;
+
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("dasservice.composite");
+ dasService = scaDomain.getService(DASService.class, "DASServiceComponent");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ public void testDAS() throws Exception{
+ dasService.configureService(getClass().getResourceAsStream("/company.xml"));
+ DataObject root = dasService.executeCommand("all companies", null);
+ List companyList = root.getList("COMPANY");
+
+ assertNotNull(companyList);
+ assertEquals(3,companyList.size());
+ }
+}
diff --git a/sandbox/lresende/backup/company-das/src/test/resources/company.xml b/sandbox/lresende/backup/company-das/src/test/resources/company.xml new file mode 100644 index 0000000000..43da819521 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/test/resources/company.xml @@ -0,0 +1,52 @@ +<?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.
+ -->
+<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
+
+ <ConnectionInfo>
+ <ConnectionProperties
+ driverClass="org.apache.derby.jdbc.EmbeddedDriver"
+ databaseURL="jdbc:derby:target/company_db;create=true"
+ loginTimeout="600000"/>
+ </ConnectionInfo>
+
+
+ <Command name="all companies" SQL="select * from COMPANY" kind="Select"/>
+
+ <Command name="all companies and departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID" kind="Select"/>
+
+ <Command name="all departments for company" SQL="select * from COMPANY inner join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/>
+
+ <Command name="company by id with departments" SQL="select * from COMPANY left outer join DEPARTMENT on COMPANY.ID = DEPARTMENT.COMPANYID where COMPANY.ID = ?" kind="Select"/>
+
+
+ <Table tableName="COMPANY">
+ <Column columnName="ID" primaryKey="true" generated="true"/>
+ </Table>
+
+ <Table tableName="DEPARTMENT">
+ <Column columnName="ID" primaryKey="true" generated="true"/>
+ </Table>
+
+ <Relationship name="departments" primaryKeyTable="COMPANY" foreignKeyTable="DEPARTMENT" many="true">
+ <KeyPair primaryKeyColumn="ID" foreignKeyColumn="COMPANYID"/>
+ </Relationship>
+
+
+</Config>
diff --git a/sandbox/lresende/backup/company-das/src/test/resources/log4j.properties b/sandbox/lresende/backup/company-das/src/test/resources/log4j.properties new file mode 100644 index 0000000000..ab4ebbb785 --- /dev/null +++ b/sandbox/lresende/backup/company-das/src/test/resources/log4j.properties @@ -0,0 +1,36 @@ +# 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. +# +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=INFO, NULL + +# NULL Appender +log4j.appender.NULL=org.apache.log4j.varia.NullAppender + +log4j.appender.NULL.layout=org.apache.log4j.PatternLayout +log4j.appender.NULL.layout.ConversionPattern=[DAS RDB] - %c{1}.%M (%L) : %m %n + +# CONSOLE is set to be a ConsoleAppender. +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=[DAS RDB] - %c{1}.%M (%L) : %m %n + + +# Print only messages of level WARN or above in the package com.foo. +log4j.logger.org.apache.tuscany=NONE
\ No newline at end of file |