From ad0e368eeedb0454e1dd398bd84c23cbfbd692f8 Mon Sep 17 00:00:00 2001 From: lresende Date: Mon, 2 Nov 2009 22:23:40 +0000 Subject: Moving das tags git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@832150 13f79535-47bb-0310-9956-ffa450edef68 --- .../samples/das/databaseSetup/DB2Setup.java | 225 +++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 das-java/tags/1.0-incubating-beta1/samples/customer/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DB2Setup.java (limited to 'das-java/tags/1.0-incubating-beta1/samples/customer/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DB2Setup.java') diff --git a/das-java/tags/1.0-incubating-beta1/samples/customer/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DB2Setup.java b/das-java/tags/1.0-incubating-beta1/samples/customer/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DB2Setup.java new file mode 100644 index 0000000000..97cda531bb --- /dev/null +++ b/das-java/tags/1.0-incubating-beta1/samples/customer/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DB2Setup.java @@ -0,0 +1,225 @@ +/* + * 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 org.apache.tuscany.samples.das.databaseSetup; + +import java.sql.SQLException; + +public class DB2Setup extends DatabaseSetup { + + public DB2Setup(String databaseInfo){ + super(databaseInfo); + } + + protected void initConnectionProtocol(String databaseURL){ + this.platformName=DB2; + this.driverName = "com.ibm.db2.jcc.DB2Driver"; + this.databaseURL = databaseURL; + } + + public void setUp(){ + try{ + super.setUp(); + + try { + s = connection.createStatement(); + + dropTriggers(); + dropSequences(); + dropTables(); + dropProcedures(); + + createSequences(); + createTables(); + createTriggers(); + createProcedures(); + connection.commit(); + + insertData(); + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + } + }catch(Exception e){ + e.printStackTrace(); + } + + System.out.println("Database setup complete!"); + } + + private void insertData(){ + System.out.println("Inserting data in tables"); + + String[] statements = {"INSERT INTO CUSTOMER VALUES (1,'John','USA')", + "INSERT INTO CUSTOMER VALUES (2,'Amita','INDIA')", + "INSERT INTO CUSTOMER VALUES (3,'Patrick','UK')", + "INSERT INTO CUSTOMER VALUES (4,'Jane','UN')"}; + + for (int i = 0; i < statements.length; i++) { + try { + s.execute(statements[i]); + } catch (SQLException e) { + // If the table does not exist then ignore the exception on drop + if ((!e.getMessage().contains("does not exist")) && (!e.getMessage().contains("Unknown table")) + && (!e.getMessage().contains("42704"))) { + throw new RuntimeException(e); + } + } + } + } + + private void dropTables() { + System.out.println("Dropping tables"); + + String[] statements = { + "DROP TABLE CUSTOMER" + }; + + for (int i = 0; i < statements.length; i++) { + try { + s.execute(statements[i]); + } catch (SQLException e) { + // If the table does not exist then ignore the exception on drop + if ((!e.getMessage().contains("does not exist")) && (!e.getMessage().contains("Unknown table")) + && (!e.getMessage().contains("42704"))) { + throw new RuntimeException(e); + } + } + } + } + + protected void dropTriggers() { + + } + + protected void createTriggers() { + + } + + protected void dropSequences() { + + } + + protected void createSequences() { + + } + + protected void dropProcedures() { + + System.out.println("Dropping procedures"); + + String[] statements = { + + "DROP PROCEDURE GETNAMEDCUSTOMERS" + + }; + + for (int i = 0; i < statements.length; i++) { + try { + s.execute(statements[i]); + } catch (SQLException e) { + // If the proc does not exist then ignore the exception on drop + if (!e.getMessage().contains("does not exist") && !e.getMessage().contains("42704")) { + throw new RuntimeException(e); + } + } + } + } + + private void createTables() { + + System.out.println("Creating tables"); + + try { + + s.execute(getCreateCustomer()); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + protected void createProcedures() { + + System.out.println("Creating procedures"); + try { + + s.execute("CREATE PROCEDURE GETNAMEDCUSTOMERS(theName VARCHAR(100), OUT theCount INTEGER) " + + "PARAMETER STYLE JAVA LANGUAGE JAVA READS SQL DATA DYNAMIC RESULT SETS 1 EXTERNAL NAME " + + "'org.apache.tuscany.samples.das.orders.MyStoredProcs.getNamedCustomers'"); + // TODO - "GETNAMEDCUSTOMERS" is failing on DB2 with SQLCODE: 42723. Need to investigate + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + + // + // This section povides methods that return strings for table creation. + // Platform-specific sublcasses + // can override these as necessary + // + + protected String getCreateCustomer() { + return "CREATE TABLE CUSTOMER (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("LASTNAME", 30) + + " DEFAULT 'Garfugengheist', " + getStringColumn("ADDRESS", 30) + ")"; + } + + + // ///////////////// + + protected String getForeignKeyConstraint(String pkTable, String pkColumn, String foreignKey) { + StringBuffer buffer = new StringBuffer(); + buffer.append("CONSTRAINT FK1 FOREIGN KEY ("); + buffer.append(foreignKey); + buffer.append(") REFERENCES "); + buffer.append(pkTable); + buffer.append("("); + buffer.append(pkColumn); + buffer.append(") ON DELETE NO ACTION ON UPDATE NO ACTION"); + return buffer.toString(); + } + + protected String getStringColumn(String name, int length) { + return name + ' ' + stringType + "(" + Integer.valueOf(length).toString() + ")"; + } + + protected String getIntegerColumn(String name) { + return name + ' ' + integerType; + } + + protected String getGeneratedKeyClause() { + return "GENERATED ALWAYS AS IDENTITY"; + } + + protected String getDecimalColumn(String name, int size1, int size2) { + return name + ' ' + decimalType + "(" + Integer.valueOf(size1).toString() + ',' + + Integer.valueOf(size2).toString() + ")"; + } + + protected String getFloatColumn(String name) { + return name + ' ' + floatType; + } + + protected String getTimestampColumn(String name) { + return name + ' ' + timestampType; + } + +} -- cgit v1.2.3