summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/sca-node/tutorial/www-services/catalog-amazon/store-db/src')
-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
6 files changed, 320 insertions, 0 deletions
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>