You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2013/01/21 19:01:21 UTC

svn commit: r1436516 - in /airavata/trunk/tools: ./ registry-migrate/ registry-migrate/src/ registry-migrate/src/main/ registry-migrate/src/main/java/ registry-migrate/src/main/java/org/ registry-migrate/src/main/java/org/apache/ registry-migrate/src/m...

Author: chathuri
Date: Mon Jan 21 18:01:20 2013
New Revision: 1436516

URL: http://svn.apache.org/viewvc?rev=1436516&view=rev
Log:
adding project for registry migration

Added:
    airavata/trunk/tools/registry-migrate/
    airavata/trunk/tools/registry-migrate/pom.xml
    airavata/trunk/tools/registry-migrate/src/
    airavata/trunk/tools/registry-migrate/src/main/
    airavata/trunk/tools/registry-migrate/src/main/java/
    airavata/trunk/tools/registry-migrate/src/main/java/org/
    airavata/trunk/tools/registry-migrate/src/main/java/org/apache/
    airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/
    airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/
    airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/
    airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/DBMigrator.java
    airavata/trunk/tools/registry-migrate/src/main/resources/
    airavata/trunk/tools/registry-migrate/src/main/resources/airavata-server.properties
    airavata/trunk/tools/registry-migrate/src/main/resources/migrate_derby.sql
    airavata/trunk/tools/registry-migrate/src/main/resources/migrate_mysql.sql
Modified:
    airavata/trunk/tools/pom.xml

Modified: airavata/trunk/tools/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/pom.xml?rev=1436516&r1=1436515&r2=1436516&view=diff
==============================================================================
--- airavata/trunk/tools/pom.xml (original)
+++ airavata/trunk/tools/pom.xml Mon Jan 21 18:01:20 2013
@@ -31,6 +31,7 @@
             </activation>
             <modules>
                 <module>phoebus-integration</module>
+		<module>registry-migrate</module>
             </modules>
         </profile>
     </profiles>

Added: airavata/trunk/tools/registry-migrate/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/registry-migrate/pom.xml?rev=1436516&view=auto
==============================================================================
--- airavata/trunk/tools/registry-migrate/pom.xml (added)
+++ airavata/trunk/tools/registry-migrate/pom.xml Mon Jan 21 18:01:20 2013
@@ -0,0 +1,87 @@
+<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata-tools-parent</artifactId>
+        <version>0.6-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.airavata</groupId>
+    <artifactId>registry-migrate</artifactId>
+    <packaging>jar</packaging>
+    <name>registry-migrate</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-jpa-registry</artifactId>
+            <version>0.6-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <version>10.9.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbyclient</artifactId>
+            <version>10.9.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbynet</artifactId>
+            <version>10.9.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbytools</artifactId>
+            <version>10.9.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-all</artifactId>
+            <version>2.2.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>jcl104-over-slf4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/DBMigrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/DBMigrator.java?rev=1436516&view=auto
==============================================================================
--- airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/DBMigrator.java (added)
+++ airavata/trunk/tools/registry-migrate/src/main/java/org/apache/airavata/registry/migrate/DBMigrator.java Mon Jan 21 18:01:20 2013
@@ -0,0 +1,296 @@
+/*
+ *
+ * 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.airavata.registry.migrate;
+
+import org.apache.airavata.common.exception.AiravataConfigurationException;
+import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.registry.api.AiravataRegistryFactory;
+import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
+import org.apache.airavata.registry.api.exception.RegistryAccessorInstantiateException;
+import org.apache.airavata.registry.api.exception.RegistryAccessorInvalidException;
+import org.apache.airavata.registry.api.exception.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+import java.net.URI;
+import java.net.URL;
+import java.sql.*;
+import java.util.*;
+import java.util.Date;
+
+public class DBMigrator {
+    private static final Logger logger = LoggerFactory.getLogger(DBMigrator.class);
+    private static final String delimiter = ";";
+    private static final String MIGRATE_SQL_DERBY = "migrate_derby.sql";
+    private static final String MIGRATE_SQL_MYSQL = "migrate_mysql.sql";
+    private static final String AIRAVATA_PROPERTIES = "airavata-server.properties";
+    private static final String MIGRATED_AIRAVATA_VERSION = "migrated.airavata.version";
+    private static final String DEFAULT_SYSTEM_GATEWAY = "system.gateway";
+    private static final String DEFAULT_SYSTEM_USER = "system.user";
+
+
+
+    public static void main(String[] args) {
+         updateDB("jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata",
+                 "airavata",
+                 "airavata");
+    }
+
+    //we assume given database is up and running
+    public static void updateDB (String jdbcUrl, String jdbcUser, String jdbcPwd){
+        Scanner in = new Scanner(System.in);
+        if (jdbcPwd == null){
+            System.out.println("Enter JDBC password : ");
+            jdbcPwd = in.next();
+        }
+        File sqlFile = null;
+        String dbType = getDBType(jdbcUrl);
+        String jdbcDriver = null;
+
+        Connection connection;
+        try {
+            if (dbType.contains("derby")){
+                jdbcDriver = "org.apache.derby.jdbc.ClientDriver";
+                URL url = DBMigrator.class.getClassLoader()
+                        .getResource(MIGRATE_SQL_DERBY);
+                sqlFile = new File(url.toURI());
+
+            } else if (dbType.contains("mysql")){
+                jdbcDriver = "com.mysql.jdbc.Driver";
+                URL url = DBMigrator.class.getClassLoader()
+                        .getResource(MIGRATE_SQL_MYSQL);
+                sqlFile = new File(url.toURI());
+            }
+            Class.forName(jdbcDriver).newInstance();
+            connection = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPwd);
+            InputStream sqlStream = new FileInputStream(sqlFile);
+            if (canUpdated()){
+                executeSQLScript(connection, sqlStream);
+                //update configuration table with airavata version
+                updateConfigTable();
+            }
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static boolean canUpdated (){
+        try {
+            AiravataRegistry2 registry = getRegistry();
+            Object configuration = registry.getConfiguration(MIGRATED_AIRAVATA_VERSION);
+            if (configuration != null){
+                return false;
+            } else {
+                return true;
+            }
+        } catch (RegistryAccessorInvalidException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    private static void updateConfigTable (){
+        try {
+            AiravataRegistry2 registry = getRegistry();
+            registry.addConfiguration(MIGRATED_AIRAVATA_VERSION, registry.getVersion().getVersion(), getCurrentDate());
+        } catch (RegistryAccessorInvalidException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static Date getCurrentDate (){
+        Calendar cal = Calendar.getInstance();
+        Date date = cal.getTime();
+        return date;
+    }
+
+    private static AiravataRegistry2 getRegistry() throws RegistryAccessorInvalidException {
+        try {
+            URL url = DBMigrator.class.getClassLoader()
+                    .getResource(AIRAVATA_PROPERTIES);
+            Properties properties = new Properties();
+            properties.load(url.openStream());
+            String gatewayName = properties.getProperty(DEFAULT_SYSTEM_GATEWAY);
+            String airavataUserName = properties.getProperty(DEFAULT_SYSTEM_USER);
+            Gateway gateway = new Gateway(gatewayName);
+            AiravataUser airavataUser = new AiravataUser(airavataUserName);
+            AiravataRegistry2 registry = AiravataRegistryFactory.getRegistry(gateway, airavataUser);
+            return registry;
+        } catch (RegistryAccessorInstantiateException e) {
+            e.printStackTrace();
+        } catch (RegistryException e) {
+            e.printStackTrace();
+        } catch (AiravataConfigurationException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private static void executeSQLScript(Connection conn, InputStream inputStream) throws Exception {
+        StringBuffer sql = new StringBuffer();
+        BufferedReader reader = null;
+        try{
+            reader = new BufferedReader(new InputStreamReader(inputStream));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                line = line.trim();
+                if (line.startsWith("//")) {
+                    continue;
+                }
+                if (line.startsWith("--")) {
+                    continue;
+                }
+                StringTokenizer st = new StringTokenizer(line);
+                if (st.hasMoreTokens()) {
+                    String token = st.nextToken();
+                    if ("REM".equalsIgnoreCase(token)) {
+                        continue;
+                    }
+                }
+                sql.append(" ").append(line);
+
+                // SQL defines "--" as a comment to EOL
+                // and in Oracle it may contain a hint
+                // so we cannot just remove it, instead we must end it
+                if (line.indexOf("--") >= 0) {
+                    sql.append("\n");
+                }
+                if ((checkStringBufferEndsWith(sql, delimiter))) {
+                    String sqlString = sql.substring(0, sql.length() - delimiter.length());
+                    System.out.println("##########sql string = " + sqlString);
+                    executeSQL(sqlString, conn);
+                    sql.replace(0, sql.length(), "");
+                }
+            }
+            // Catch any statements not followed by ;
+            if (sql.length() > 0) {
+                System.out.println("sql string = " + sql.toString());
+                executeSQL(sql.toString(), conn);
+            }
+        }catch (IOException e){
+            logger.error("Error occurred while executing SQL script for creating Airavata database", e);
+            throw new Exception("Error occurred while executing SQL script for creating Airavata database", e);
+        }finally {
+            if (reader != null) {
+                reader.close();
+            }
+
+        }
+
+    }
+
+    private static String getDBType(String jdbcURL){
+        try{
+            String cleanURI = jdbcURL.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getScheme();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return null;
+        }
+    }
+
+    public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) {
+        if (suffix.length() > buffer.length()) {
+            return false;
+        }
+        // this loop is done on purpose to avoid memory allocation performance
+        // problems on various JDKs
+        // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and
+        // implementation is ok though does allocation/copying
+        // StringBuffer.toString().endsWith() does massive memory
+        // allocation/copying on JDK 1.5
+        // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169
+        int endIndex = suffix.length() - 1;
+        int bufferIndex = buffer.length() - 1;
+        while (endIndex >= 0) {
+            if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) {
+                return false;
+            }
+            bufferIndex--;
+            endIndex--;
+        }
+        return true;
+    }
+
+    private static void executeSQL(String sql, Connection conn) throws Exception {
+        if ("".equals(sql.trim())) {
+            return;
+        }
+        Statement statement = null;
+        try {
+            logger.debug("SQL : " + sql);
+
+            boolean ret;
+            int updateCount = 0, updateCountTotal = 0;
+            statement = conn.createStatement();
+            ret = statement.execute(sql);
+            updateCount = statement.getUpdateCount();
+            do {
+                if (!ret) {
+                    if (updateCount != -1) {
+                        updateCountTotal += updateCount;
+                    }
+                }
+                ret = statement.getMoreResults();
+                if (ret) {
+                    updateCount = statement.getUpdateCount();
+                }
+            } while (ret);
+
+            logger.debug(sql + " : " + updateCountTotal + " rows affected");
+
+            SQLWarning warning = conn.getWarnings();
+            while (warning != null) {
+                logger.warn(warning + " sql warning");
+                warning = warning.getNextWarning();
+            }
+            conn.clearWarnings();
+        } catch (SQLException e) {
+            if (e.getSQLState().equals("X0Y32")) {
+                logger.info("Table Already Exists", e);
+            } else {
+                throw new Exception("Error occurred while executing : " + sql, e);
+            }
+        } finally {
+            if (statement != null) {
+                try {
+                    statement.close();
+                } catch (SQLException e) {
+                    logger.error("Error occurred while closing result set.", e);
+                }
+            }
+        }
+    }
+}

Added: airavata/trunk/tools/registry-migrate/src/main/resources/airavata-server.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/registry-migrate/src/main/resources/airavata-server.properties?rev=1436516&view=auto
==============================================================================
--- airavata/trunk/tools/registry-migrate/src/main/resources/airavata-server.properties (added)
+++ airavata/trunk/tools/registry-migrate/src/main/resources/airavata-server.properties Mon Jan 21 18:01:20 2013
@@ -0,0 +1,233 @@
+#
+#
+# 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.
+#
+
+###########################################################################
+#
+#  This properties file provides configuration for all Airavata Services: 
+#  Registry, Workflow Interpreter, GFac, Message Broker, Message Box
+#
+###########################################################################
+
+###########################################################################
+# Airavata Embedded-Tomcat Server Configuration
+###########################################################################
+# By default, tomcat runs on port 80. If the port is changed, it will be  
+#  have to be specified with port properties. This will be picked up by 
+#  the registry service to register the service end-points.
+
+port=8080
+
+# Axis2 server automatically picks up IP address from axis configuration, 
+#  but some DHCP enables machines do not report correct ip addresses,  
+#  in which case, the IP address can be manually specified. 
+
+#ip=192.2.33.12
+
+###########################################################################
+# Airavata Registry Configuration
+###########################################################################
+
+#registry.user=admin
+#registry.password=admin
+gateway.id=default
+#registry.jdbc.user=airavata
+#registry.jdbc.password=airavata
+#start.derby.server.mode=true
+
+system.gateway=default
+system.user=admin
+system.password=admin
+
+#for mysql
+    #registry.jdbc.driver=com.mysql.jdbc.Driver
+#registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
+
+#for derby
+#registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+#registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata
+
+###########################################################################
+# Airavata Workflow Interpreter Configurations
+###########################################################################
+
+runInThread=true
+provenance=true
+provenanceWriterThreadPoolSize=20
+gfac.embedded=true
+
+#
+# Security Configuration used by Airavata Generic Factory Service
+#  to interact with Computational Resources.
+#
+
+###########################################################################
+# Airavata GFac MyProxy GSI credentials to access Grid Resources.
+###########################################################################
+
+myproxy.server=myproxy.teragrid.org
+myproxy.user=username
+myproxy.pass=password
+myproxy.life=3600
+# XSEDE Trusted certificates can be downloaded from https://software.xsede.org/security/xsede-certs.tar.gz
+trusted.cert.location=/path/to/trusted/certificates
+
+# SSH PKI key pair is SSH based authentication is used.
+#ssh.key=/home/user/.ssh/id_rsa
+#ssh.keypass=
+#ssh.username=usernameAtHost
+
+###########################################################################
+# Airavata Message Broker Basic Configurations.
+#  the Advanced section provides detailed custom configuration properties.
+###########################################################################
+
+# Default derby database configuration
+broker.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
+broker.jdbc.url=jdbc:derby:wsmg;create=true;user=airavata;password=airavata
+
+# Note: This database will only be used  if 'broker.storage.type=persistent' 
+#       is set in advanced properties below.
+# MySql database configuration
+#broker.jdbc.driver=com.mysql.jdbc.Driver
+#broker.jdbc.url=jdbc:mysql://localhost:3306/wsmg?user=airavata&password=airavata
+
+###########################################################################
+# Airavata Message Box Basic Configurations, 
+#  the Advanced section provides detailed custom configuration properties.
+###########################################################################  
+
+# Default derby database
+msgBox.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
+msgBox.jdbc.url=jdbc:derby:wsmg;create=true;user=airavata;password=airavata
+
+# MySql database configuration
+#msgBox.jdbc.driver=com.mysql.jdbc.Driver
+#msgBox.jdbc.url=jdbc:mysql://localhost:3306/wsmg?user=airavata&password=airavata
+
+###########################################################################
+# Advance configuration to change service implementations
+###########################################################################
+
+#Update the server context root path if airavata server is deployed under a different context root other than axis2
+#server.context-root=axis2
+
+#
+# Class which implemented Scheduler interface. It will be used to determine a Provider
+#
+scheduler.class= org.apache.airavata.core.gfac.scheduler.impl.SchedulerImpl
+
+#
+# Data Service Plugins classes
+#
+datachain.classes= org.apache.airavata.core.gfac.extension.data.RegistryDataService
+
+#
+# Pre execution Plugins classes. For example, GridFTP Input Staging
+#
+prechain.classes= org.apache.airavata.core.gfac.extension.pre.GridFtpInputStaging
+prechain.classes= org.apache.airavata.core.gfac.extension.pre.HttpInputStaging
+
+#
+# Post execution Plugins classes. For example, GridFTP Output Staging
+#
+postchain.classes= org.apache.airavata.core.gfac.extension.post.GridFtpOutputStaging
+postchain.classes= org.apache.airavata.core.gfac.extension.post.OutputRegister
+
+#
+# Advanced Message Broker Configurations
+#
+
+#socket time out in milliseconds for sending messages. (defaults is 20000)
+broker.socket.timeout=60000
+
+broker.storage.type=persistent
+#broker.storage.type=memory
+
+#specifies wether delivery component should be started or not.
+broker.start.delivery.thread=true
+
+#fixed thread pool based delivery
+#broker.delivery.method=pcrew
+
+#dynamic thread pool based delivery
+#broker.delivery.method=parallel
+
+#single thread delivery
+broker.delivery.method=serial
+
+#number of message delivery failures before a url become black listed (default is 2)
+#broker.msg.delivery.retries=2
+
+#time period (in seconds) a url will be kept blacklisted (default is 5 seconds) 
+#consumer.expiration.time.gap=5 
+
+#maximum number of messages to be send to a one consumer/url at time. 
+#applicable if 'broker.delivery.method' is 'pcrew' . (default is 10)
+
+#sending.batch.size=10
+
+#size of the thread pool. only applicable if 'broker.delivery.method' is 'pcrew'. (default is 4)
+#sending.thread.pool.size=4
+
+#
+# Advanced Message Box Configurations
+# 
+msgBox.usedatabase=true
+messagePreservationDays=2
+messagePreservationHours=0
+messagePreservationMinutes=0
+messagePerservationIntervalDays=0
+messagePerservationIntervalHours=1
+messagePerservationIntervalMinutes=0
+
+###---------------------------REGISTRY API IMPLEMENTATION---------------------------###
+
+class.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.registry.accessor=org.apache.airavata.rest.client.RegistryClient
+
+###---------------------REGISTRY API IMPLEMENTATION - CUSTOM SETTINGS----------------------###
+
+#for mysql [AiravataJPARegistry]
+#registry.jdbc.driver=com.mysql.jdbc.Driver
+#registry.jdbc.url=jdbc:mysql://localhost:3306/persistent_data
+
+#for derby [AiravataJPARegistry]
+registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+registry.jdbc.url=jdbc:derby://localhost:1527/persistent_data;create=true;user=airavata;password=airavata
+registry.jdbc.user=airavata
+registry.jdbc.password=airavata
+start.derby.server.mode=true
+
+default.registry.user=admin
+default.registry.password=admin
+default.registry.password.hash.method=SHA
+default.registry.gateway=default
+
+#for rest [RegistryClient]
+#registry.jdbc.url=http://localhost:9080/airavata-services
+
+#user defined registry accessor classes
+#class.provenance.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.configuration.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.descriptor.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.project.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.user.workflow.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+#class.published.workflow.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
+

Added: airavata/trunk/tools/registry-migrate/src/main/resources/migrate_derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/registry-migrate/src/main/resources/migrate_derby.sql?rev=1436516&view=auto
==============================================================================
--- airavata/trunk/tools/registry-migrate/src/main/resources/migrate_derby.sql (added)
+++ airavata/trunk/tools/registry-migrate/src/main/resources/migrate_derby.sql Mon Jan 21 18:01:20 2013
@@ -0,0 +1,12 @@
+ALTER TABLE Configuration ADD category_id varchar(255) NOT NULL DEFAULT 'SYSTEM';
+
+ALTER TABLE Configuration DROP PRIMARY KEY;
+
+ALTER TABLE Configuration ADD PRIMARY KEY(config_key, config_val, category_id);
+
+ALTER TABLE Node_Data
+ADD execution_index int NOT NULL DEFAULT 0;
+
+ALTER TABLE Node_Data DROP PRIMARY KEY;
+
+ALTER TABLE Node_Data ADD PRIMARY KEY(workflow_instanceID, node_id, execution_index);
\ No newline at end of file

Added: airavata/trunk/tools/registry-migrate/src/main/resources/migrate_mysql.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/tools/registry-migrate/src/main/resources/migrate_mysql.sql?rev=1436516&view=auto
==============================================================================
--- airavata/trunk/tools/registry-migrate/src/main/resources/migrate_mysql.sql (added)
+++ airavata/trunk/tools/registry-migrate/src/main/resources/migrate_mysql.sql Mon Jan 21 18:01:20 2013
@@ -0,0 +1,11 @@
+ALTER TABLE Configuration
+ADD category_id varchar(255);
+
+UPDATE Configuration SET category_id="SYSTEM" ;
+
+ALTER TABLE Configuration DROP PRIMARY KEY, ADD PRIMARY KEY(config_key, config_val, category_id);
+
+ALTER TABLE Node_Data
+ADD execution_index int NOT NULL;
+
+ALTER TABLE Node_Data DROP PRIMARY KEY, ADD PRIMARY KEY(workflow_instanceID, node_id, execution_index);
\ No newline at end of file