summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db')
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/pom.xml149
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java34
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java27
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java120
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java29
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java79
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite31
-rw-r--r--sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/store.sql37
8 files changed, 506 insertions, 0 deletions
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/pom.xml b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/pom.xml
new file mode 100644
index 0000000000..4a8675fbb2
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/pom.xml
@@ -0,0 +1,149 @@
+<?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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-tutorial</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tutorial-store-db</artifactId>
+ <name>Apache Tuscany SCA Tutorial Catalog Database</name>
+
+ <repositories>
+ <repository>
+ <id>apache.incubator</id>
+ <url>http://people.apache.org/repo/m2-incubating-repository</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tutorial-assets</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-sca-axis2</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>2.0-incubating-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchCatalog</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.0</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.1.2.1</version>
+ </dependency>
+ </dependencies>
+
+ <executions>
+ <execution>
+ <id>create-db</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
+ <url>jdbc:derby:target/store_db;create=true</url>
+ <autocommit>true</autocommit>
+ <onError>continue</onError>
+ <delimiter>;</delimiter>
+ <srcFiles>
+ <srcFile>${pom.basedir}/store.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+</project>
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java
new file mode 100644
index 0000000000..c46845722c
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/launch/LaunchCatalog.java
@@ -0,0 +1,34 @@
+/*
+ * 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 launch;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class LaunchCatalog {
+ public static void main(String[] args) throws Exception {
+ System.out.println("Starting ...");
+ SCADomain scaDomain = SCADomain.newInstance("store-catalog-database.composite");
+ System.out.println("store-catalog-database.composite ready for big business !!!");
+ System.in.read();
+ System.out.println("Stopping ...");
+ scaDomain.close();
+ System.out.println();
+ }
+}
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java
new file mode 100644
index 0000000000..9f784b0848
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/Catalog.java
@@ -0,0 +1,27 @@
+/*
+ * 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 services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Catalog {
+ String[] get();
+}
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java
new file mode 100644
index 0000000000..c8b3bbf621
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CatalogImpl.java
@@ -0,0 +1,120 @@
+/*
+ * 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 services;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+public class CatalogImpl implements Catalog {
+ @Property
+ public String currencyCode = "USD";
+
+ @Reference
+ public CurrencyConverter currencyConverter;
+
+ private String currencySymbol;
+
+ public String[] get() {
+
+ String[] catalogArray = null;
+
+ String itemName;
+ float itemPrice;
+ String itemCurrencyCode;
+
+ Connection conn = null;
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+
+ currencySymbol = currencyConverter.getCurrencySymbol(currencyCode);
+
+ try {
+ //initialize driver and register it with DriverManager
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+
+ conn = DriverManager.getConnection(
+ "jdbc:derby:target/store_db",
+ "",
+ "");
+
+ pstmt = conn.prepareStatement("select * from \"Catalog\"",
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_READ_ONLY);
+
+ rs = pstmt.executeQuery();
+ rs.last();
+
+ catalogArray = new String[rs.getRow()];
+
+ do {
+ itemName = rs.getString(2);
+ itemPrice = rs.getFloat(4);
+ itemCurrencyCode = rs.getString(3);
+
+ catalogArray[rs.getRow()-1] = new String(itemName+" - "+
+ currencySymbol+" "+
+ currencyConverter.getConversion(itemCurrencyCode, currencyCode, itemPrice));
+
+ } while(rs.previous());
+
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ } finally {
+ cleanup(conn,pstmt,rs);
+ }
+
+ return catalogArray;
+ }
+
+ private void cleanup(Connection conn, PreparedStatement pstmt, ResultSet rs) {
+
+ if (rs!=null) {
+ try {
+ rs.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (pstmt!=null) {
+ try {
+ pstmt.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (conn!=null) {
+ try {
+ conn.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java
new file mode 100644
index 0000000000..8b0f70907d
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/services/CurrencyConverter.java
@@ -0,0 +1,29 @@
+/*
+ * 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 services;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CurrencyConverter {
+ public float getConversion(String fromCurrenycCode, String toCurrencyCode, float amount);
+
+ public String getCurrencySymbol(String currencyCode);
+}
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java
new file mode 100644
index 0000000000..a4dc2e67e6
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/java/util/CreateDB.java
@@ -0,0 +1,79 @@
+package util;
+
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class CreateDB {
+
+ public static void main(String[] args) {
+ System.out.println("Creating database ...");
+
+ Connection connection = null;
+ PreparedStatement preparedStatement = null;
+
+ try {
+ //initialize driver and register it with DriverManager
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+
+ //connect and create the db if not present
+ connection = DriverManager.getConnection(
+ "jdbc:derby:target/store_db;create=true",
+ "",
+ "");
+
+
+ try {
+ preparedStatement = connection.prepareStatement("DROP TABLE CATALOG");
+ preparedStatement.execute();
+ }catch(Exception e) {
+ //ignore to avoid erros when db is being created from scratch
+ }
+
+
+ preparedStatement = connection.prepareStatement("CREATE TABLE CATALOG("
+ + "id NUMERIC(5 , 0) NOT NULL,"
+ + "product_name VARCHAR(30),"
+ + "currency_code CHAR(3),"
+ + "price REAL,"
+ + "primary key (id)"
+ + ")");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(0,'Apple', 'USD', 2.99)");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(1,'Orange', 'USD', 3.55)");
+ preparedStatement.execute();
+
+ preparedStatement = connection.prepareStatement("INSERT INTO CATALOG VALUES(2,'Pear', 'USD', 1.55)");
+ preparedStatement.execute();
+
+ System.out.println("Done !");
+
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ } finally {
+ if (preparedStatement!=null) {
+ try {
+ preparedStatement.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ if (connection!=null) {
+ try {
+ connection.close();
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+}
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite
new file mode 100644
index 0000000000..aea8a6972c
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src/main/resources/store-catalog-database.composite
@@ -0,0 +1,31 @@
+<?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"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:s="http://store"
+ name="store-catalog-database">
+
+ <component name="Catalog">
+ <implementation.java class="services.CatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <reference name="currencyConverter" target="CurrencyConverter"/>
+ </component>
+
+</composite>
diff --git a/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/store.sql b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/store.sql
new file mode 100644
index 0000000000..4c3186abe9
--- /dev/null
+++ b/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/store.sql
@@ -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.
+--
+
+DROP TABLE CATALOG;
+
+CREATE TABLE CATALOG(
+ id NUMERIC(5 , 0) NOT NULL,
+ product_name VARCHAR(30),
+ currency_code CHAR(3),
+ price REAL,
+ primary key (id)
+);
+
+
+
+INSERT INTO CATALOG
+ VALUES(0,'Apple', 'USD', 2.99);
+INSERT INTO CATALOG
+ VALUES(1,'Orange', 'USD', 3.55);
+INSERT INTO CATALOG
+ VALUES(2,'Pear', 'USD', 1.55); \ No newline at end of file