From 6fadbc9cd1fcf03d0b3630f772d91df149b70428 Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 11 Nov 2009 23:07:19 +0000 Subject: Moving 1.x branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835123 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/das/DASServiceImpl.java | 146 +++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 sca-java-1.x/branches/sca-java-1.0.1/samples/company-das-webapp/src/main/java/das/DASServiceImpl.java (limited to 'sca-java-1.x/branches/sca-java-1.0.1/samples/company-das-webapp/src/main/java/das/DASServiceImpl.java') diff --git a/sca-java-1.x/branches/sca-java-1.0.1/samples/company-das-webapp/src/main/java/das/DASServiceImpl.java b/sca-java-1.x/branches/sca-java-1.0.1/samples/company-das-webapp/src/main/java/das/DASServiceImpl.java new file mode 100644 index 0000000000..70d9e379ef --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.0.1/samples/company-das-webapp/src/main/java/das/DASServiceImpl.java @@ -0,0 +1,146 @@ +/* + * 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.Scope; + +import commonj.sdo.DataObject; + +@Scope("COMPOSITE") +public class DASServiceImpl implements DASService { + + protected 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); + } + + /** + * 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 + + } +} -- cgit v1.2.3