http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalDataMovementGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalDataMovementGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalDataMovementGenerator.java
new file mode 100644
index 0000000..8bfc6ac
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalDataMovementGenerator.java
@@ -0,0 +1,80 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class LocalDataMovementGenerator {
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("LOCAL_DATA_MOVEMENT");
+               data.getFieldData().put("DATA_MOVEMENT_INTERFACE_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getPrimaryKeys().add("DATA_MOVEMENT_INTERFACE_ID");
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+               
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               
jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+               
jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+               
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+               
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testSqlGen();
+               testJPAClassGen();
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalSubmissionGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalSubmissionGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalSubmissionGenerator.java
new file mode 100644
index 0000000..df1d2ce
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/LocalSubmissionGenerator.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class LocalSubmissionGenerator {
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("LOCAL_SUBMISSION");
+               data.getFieldData().put("JOB_SUBMISSION_INTERFACE_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("RESOURCE_JOB_MANAGER_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getPrimaryKeys().add("JOB_SUBMISSION_INTERFACE_ID");
+               data.getForiegnKeys().put("RESOURCE_JOB_MANAGER_ID", new 
SQLData.ForiegnKeyData("RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)","ResourceJobManager","ResourceJobManagerResource"));
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+               
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               
jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+               
jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+               
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+               
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testSqlGen();
+               testJPAClassGen();
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ModuleCMDGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ModuleCMDGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ModuleCMDGenerator.java
new file mode 100644
index 0000000..2b08708
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ModuleCMDGenerator.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+import java.util.Arrays;
+
+public class ModuleCMDGenerator {
+    private static SQLData createSQLData() {
+        SQLData data = new SQLData();
+        data.setTableName("MODULE_LOAD_CMD");
+        data.getFieldData().put("CMD", Arrays.asList(new String[]{"VARCHAR", 
"(255)", "NOT", "NULL"}));
+        data.getFieldData().put("APP_DEPLOYMENT_ID", Arrays.asList(new 
String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+        data.getPrimaryKeys().add("APP_DEPLOYMENT_ID");
+        data.getPrimaryKeys().add("CMD");
+        data.getForiegnKeys().put("APP_DEPLOYMENT_ID", new 
SQLData.ForiegnKeyData("APPLICATION_DEPLOYMENT(DEPLOYMENT_ID)","ApplicationDeployment","AppDeploymentResource"));
+        return data;
+    }
+    public static void testSqlGen() {
+        SQLData data = createSQLData();
+        SQLGenerator sqlGenerator = new SQLGenerator();
+        System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+    }
+
+    public static void testJPAClassGen() {
+        SQLData data = createSQLData();
+        JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+        
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+        JPAClassModel model = jpaClassGenerator.createJPAClassModel(data);
+        System.out.println(jpaClassGenerator.generateJPAClass(model));
+        
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+        
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+    }
+
+    public static void testJPAResourceClassGen() {
+        SQLData data = createSQLData();
+        JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+        JPAClassModel model = jpaClassGenerator.createJPAClassModel(data);
+        JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+        jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+        jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+        
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+        
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+        JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+        
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+        
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+        
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+        
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+
+    }
+    public static void main(String[] args) {
+        testSqlGen();
+        testJPAClassGen();
+        testJPAResourceClassGen();
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ResourceJobManagerGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ResourceJobManagerGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ResourceJobManagerGenerator.java
new file mode 100644
index 0000000..3a1a8e0
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/ResourceJobManagerGenerator.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class ResourceJobManagerGenerator {
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("RESOURCE_JOB_MANAGER");
+               data.getFieldData().put("RESOURCE_JOB_MANAGER_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("RESOURCE_JOB_MANAGER_TYPE", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("PUSH_MONITORING_ENDPOINT", 
Arrays.asList(new String[]{"VARCHAR", "(255)",}));
+               data.getFieldData().put("JOB_MANAGER_BIN_PATH", 
Arrays.asList(new String[]{"VARCHAR", "(255)",}));
+               data.getPrimaryKeys().add("RESOURCE_JOB_MANAGER_ID");
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+               
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               
jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+               
jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+               
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+               
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testSqlGen();
+               testJPAClassGen();
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SCPDataMovementGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SCPDataMovementGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SCPDataMovementGenerator.java
new file mode 100644
index 0000000..6c196d3
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SCPDataMovementGenerator.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class SCPDataMovementGenerator {
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("SCP_DATA_MOVEMENT");
+               data.getFieldData().put("DATA_MOVEMENT_INTERFACE_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("SECURITY_PROTOCOL", Arrays.asList(new 
String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("ALTERNATIVE_SCP_HOSTNAME", 
Arrays.asList(new String[]{"VARCHAR", "(255)"}));
+               data.getFieldData().put("SSH_PORT", Arrays.asList(new 
String[]{"INTEGER"}));
+               data.getPrimaryKeys().add("DATA_MOVEMENT_INTERFACE_ID");
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+               
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               
jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+               
jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+               
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+               
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testSqlGen();
+               testJPAClassGen();
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SSHJobSubmissionGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SSHJobSubmissionGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SSHJobSubmissionGenerator.java
new file mode 100644
index 0000000..50f1fd1
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/appcatalog/computeresource/SSHJobSubmissionGenerator.java
@@ -0,0 +1,85 @@
+/*
+ *
+ * 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 appcatalog.computeresource;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class SSHJobSubmissionGenerator {
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("SSH_JOB_SUBMISSION");
+               data.getFieldData().put("JOB_SUBMISSION_INTERFACE_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("SECURITY_PROTOCOL", Arrays.asList(new 
String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+               data.getFieldData().put("RESOURCE_JOB_MANAGER_ID", 
Arrays.asList(new String[]{"VARCHAR", "(255)","NOT", "NULL"}));
+               data.getFieldData().put("ALTERNATIVE_SSH_HOSTNAME", 
Arrays.asList(new String[]{"VARCHAR", "(255)"}));
+               data.getFieldData().put("SSH_PORT", Arrays.asList(new 
String[]{"INTEGER"}));
+               data.getPrimaryKeys().add("JOB_SUBMISSION_INTERFACE_ID");
+               data.getForiegnKeys().put("RESOURCE_JOB_MANAGER_ID", new 
SQLData.ForiegnKeyData("RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)","ResourceJobManager","ResourceJobManagerResource"));
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               
jpaClassGenerator.setJpaClassPackageName("org.apache.aiaravata.application.catalog.data.model");
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+               
System.out.println(jpaClassGenerator.generatePersistenceXmlEntry(model));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               
jpaResourceClassGenerator.setExceptionClassName("AppCatalogException");
+               
jpaResourceClassGenerator.setJpaUtilsClassName("AppCatalogJPAUtils");
+               
jpaResourceClassGenerator.setResourceTypeClassName("AppCatalogResourceType");
+               
jpaResourceClassGenerator.setQueryGeneratorClassName("AppCatalogQueryGenerator");
+
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testSqlGen();
+               testJPAClassGen();
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/generators/AbstractGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/generators/AbstractGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/AbstractGenerator.java
new file mode 100644
index 0000000..b4fb643
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/AbstractGenerator.java
@@ -0,0 +1,119 @@
+package generators;
+
+import java.util.List;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class AbstractGenerator {
+       private static final String TAB="\t";
+       
+       protected String removeLastChar(String s) {
+               return s.substring(0, s.length()-1);
+       }
+       
+       protected String addLines(String s, String...lines){
+               for (String line : lines) {
+                       s=((s==null||s.equals(""))?"":s+"\n")+line;
+               }
+               return s;
+       }
+       
+       protected String convertToJavaTitleCaseStringConvention(String s){
+               String result="";
+               String[] split = s.split("_");
+               for (String item : split) {
+                       
result+=(item.toUpperCase().substring(0,1)+(item.length()>1?item.toLowerCase().substring(1):""));
+               }
+               return result;
+       }
+       
+       protected String convertToJavaVariableNameCaseStringConvention(String 
s){
+               String result=null;
+               String[] split = s.split("_");
+               for (String item : split) {
+                       
result=(result==null?item.toLowerCase():result+(item.toUpperCase().substring(0,1)+(item.length()>1?item.toLowerCase().substring(1):"")));
+               }
+               return result;
+       }
+       
+       protected String convertToJavaConstantNameCaseStringConvention(String 
s){
+               String result="";
+               for (int i = 0; i < s.length(); i++) {
+                       String c=String.valueOf(s.charAt(i));
+                       result+=((c.toUpperCase().equals(c) && 
!result.equals(""))?"_"+c:c.toUpperCase());
+               }
+               return result;
+       }
+       
+       protected String convertToTitleCaseString(String s){
+               String result="";
+               for (int i = 0; i < s.length(); i++) {
+                       String c=String.valueOf(s.charAt(i));
+                       result+=((c.toUpperCase().equals(c) && 
!result.equals(""))?" ":"")+c;
+               }
+               return result;
+       }
+       
+       protected String tabs(int n){
+               String result="";
+               for (int i = 0; i < n; i++) {
+                       result+=TAB;
+               }
+               return result;
+       }
+       
+       protected String commaSeperatedString(List<String> list, String 
delimiter){
+               String result=null;
+               for (String s : list) {
+                       result=(result==null?s:result+delimiter+s);
+               }
+               return result;
+       }
+       
+       protected String createFieldVarString(String dataType, String 
fieldName){
+               return "private " + dataType + " " + fieldName + ";";
+       }
+       
+       protected String createSetterString(int indents,String fieldName,
+                       String dataType, String fieldTitleString) {
+           String setterString=null;
+               setterString=addLines(setterString, tabs(indents));
+               setterString=addLines(setterString,tabs(indents)+"public void 
set"+fieldTitleString+"("+dataType+" "+fieldName+") {");
+               
setterString=addLines(setterString,tabs(indents+1)+"this."+fieldName+"="+fieldName+";");
+               setterString=addLines(setterString,tabs(indents)+"}");
+               return setterString;
+       }
+
+       protected String createGetterString(int indents, String fieldName,
+                       String dataType, String fieldTitleString) {
+           String getterString=null;
+               getterString=addLines(getterString, tabs(indents));
+               getterString=addLines(getterString,tabs(indents)+"public 
"+dataType+" get"+fieldTitleString+"() {");
+               getterString=addLines(getterString,tabs(indents+1)+"return 
"+fieldName+";");
+               getterString=addLines(getterString,tabs(indents)+"}");
+               return getterString;
+       }
+       
+       protected String createVarNameFromClassName(String s){
+               return s.substring(0,1).toLowerCase()+s.substring(1);
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAClassGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAClassGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAClassGenerator.java
new file mode 100644
index 0000000..a83e43e
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAClassGenerator.java
@@ -0,0 +1,224 @@
+package generators;
+import java.util.ArrayList;
+import java.util.List;
+
+import model.JPAClassField;
+import model.JPAClassModel;
+import model.JPAPKClassModel;
+import model.SQLData;
+
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class JPAClassGenerator extends AbstractGenerator{
+//    private static final Logger log = 
LoggerFactory.getLogger(JPAClassGenerator.class);
+       private String jpaClassPackageName;
+       
+    public JPAClassModel createJPAClassModel(SQLData sqlData){
+               JPAClassModel model = new JPAClassModel();
+               model.generatePKClass=sqlData.getPrimaryKeys().size()>1;
+               model.tableName=sqlData.getTableName();
+               model.className = 
convertToJavaTitleCaseStringConvention(sqlData.getTableName());
+               if (model.generatePKClass) {
+                       model.pkClassModel.className=model.className+"_PK";
+               }
+               for (String field : sqlData.getFieldData().keySet()) {
+                   String dataType = null;
+                   SQLGenerator.DataTypes sqlDataType = 
SQLGenerator.DataTypes.valueOf(sqlData.getFieldData().get(field).get(0));
+                   switch (sqlDataType){
+                   case LONGTEXT:case VARCHAR:
+                       dataType="String"; break;
+                   case INTEGER: 
+                       dataType="int"; break;
+                   case SMALLINT:
+                       dataType="boolean"; break;
+                   case TIMESTAMP: 
+                       dataType="Timestamp"; break;
+                   case CLOB:
+                       dataType="String"; break;
+                   }
+                   String fieldTitleString = 
convertToJavaTitleCaseStringConvention(field);
+                   String fieldName = 
convertToJavaVariableNameCaseStringConvention(field);
+
+                   
+                   boolean foriegnKey = 
sqlData.getForiegnKeys().containsKey(field);
+                       JPAClassField jpaField = new 
JPAClassField(field,fieldName,dataType,fieldTitleString,sqlData.getPrimaryKeys().contains(field),
+                               
foriegnKey,(foriegnKey?sqlData.getForiegnKeys().get(field).jpaClassName:null),
+                               
(foriegnKey?sqlData.getForiegnKeys().get(field).jpaResourceClassName:null));
+                       model.fields.add(jpaField);
+                   if (model.generatePKClass){
+                       if (sqlData.getPrimaryKeys().contains(field)){
+                               model.pkClassModel.pkFields.add(jpaField);
+                       }
+                   }
+                   
+               }
+               return model;
+       }
+    
+       public String generateJPAClass(JPAClassModel model){
+               String classStr = null;
+               String pkClassName = null;
+               classStr=addLines(classStr,"@DataCache");
+               classStr=addLines(classStr,"@Entity");
+               classStr=addLines(classStr,"@Table(name = 
\""+model.tableName+"\")");
+               String className = model.className;
+               if (model.generatePKClass) {
+                       pkClassName=model.pkClassModel.className;
+                       classStr = 
addLines(classStr,"@IdClass("+pkClassName+".class)");
+               }
+               classStr=addLines(classStr,"public class "+className+" 
implements Serializable {");
+               
+               List<String> columnFields=new ArrayList<String>();
+               List<String> fieldGetters=new ArrayList<String>();
+               List<String> fieldSetters=new ArrayList<String>();
+               for (JPAClassField jpaField : model.fields) {
+                       String field=jpaField.tableColumnName;
+                   String fieldString=null;
+                   
+                   String fieldName = jpaField.fieldName;
+                   String dataType = jpaField.fieldDataType;
+                   String fieldTitleString = jpaField.fieldTitle;
+
+                   
+                   fieldString=addLines(fieldString, tabs(1));
+                   if (jpaField.primaryKey){
+                       fieldString=addLines(fieldString,tabs(1)+"@Id");        
+                   }
+                   fieldString=addLines(fieldString,tabs(1)+"@Column(name = 
\""+field+"\")");
+                       
fieldString=addLines(fieldString,tabs(1)+createFieldVarString(dataType 
,fieldName));
+                   columnFields.add(fieldString);
+                   
+                   
+                   fieldGetters.add(createGetterString(1, fieldName,dataType, 
fieldTitleString));
+
+                   fieldSetters.add(createSetterString(1, fieldName,dataType, 
fieldTitleString));
+                   
+                   if (jpaField.foriegnKey){
+                           fieldString=null;
+                           
+                           fieldName = 
createVarNameFromClassName(jpaField.foriegnKeyJPAClass);
+                           dataType = jpaField.foriegnKeyJPAClass;
+                           fieldTitleString = jpaField.foriegnKeyJPAClass;
+                           
+                           
+                           fieldString=addLines(fieldString, tabs(1));
+                           
fieldString=addLines(fieldString,tabs(1)+"@ManyToOne(cascade= 
CascadeType.MERGE)");
+                           
fieldString=addLines(fieldString,tabs(1)+"@JoinColumn(name = 
\""+jpaField.tableColumnName+"\")");
+                               
fieldString=addLines(fieldString,tabs(1)+createFieldVarString(dataType 
,fieldName));
+                               columnFields.add(fieldString);
+                               
+                           fieldGetters.add(createGetterString(1, 
fieldName,dataType, fieldTitleString));
+
+                           fieldSetters.add(createSetterString(1, 
fieldName,dataType, fieldTitleString));
+                   }
+               }
+               classStr=addLines(classStr,columnFields.toArray(new 
String[]{}));
+               classStr=addLines(classStr,fieldGetters.toArray(new 
String[]{}));
+               classStr=addLines(classStr,fieldSetters.toArray(new 
String[]{}));
+               
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+
+       public String generateJPAPKClass(JPAPKClassModel model){
+               if (model.pkFields.size()==0){
+                       return "";
+               }
+               String classStr=null;
+               classStr=addLines(classStr,"public class "+model.className+" 
implements Serializable {");
+               
+               List<String> columnFields=new ArrayList<String>();
+               List<String> fieldGetters=new ArrayList<String>();
+               List<String> fieldSetters=new ArrayList<String>();
+               List<String> parameterList=new ArrayList<String>();
+               String constructorMethod=null;
+               for (JPAClassField jpaField : model.pkFields) {
+                   
+                   String dataType = jpaField.fieldDataType;
+                   String fieldTitleString = jpaField.fieldTitle;
+                   String fieldName = jpaField.fieldName;
+                   
+                   String fieldString=tabs(1)+createFieldVarString(dataType 
,fieldName);
+                   columnFields.add(fieldString);
+                   
+                   
+                   fieldGetters.add(createGetterString(1, fieldName, dataType, 
fieldTitleString));
+
+                   fieldSetters.add(createSetterString(1, fieldName,   
dataType, fieldTitleString));
+
+                   parameterList.add(dataType+" "+fieldName);
+                   constructorMethod=addLines(constructorMethod, 
tabs(2)+"this."+fieldName+" = "+fieldName+";");
+               }
+               classStr=addLines(classStr,columnFields.toArray(new 
String[]{}));
+               String 
constructorParametersString=commaSeperatedString(parameterList,", ");
+               constructorMethod=addLines(tabs(1), tabs(1)+"public 
"+model.className+"("+constructorParametersString+"){",constructorMethod);
+               constructorMethod=addLines(constructorMethod, tabs(1)+"}");
+               String emptyConstructorMethod=null;
+               emptyConstructorMethod=addLines(tabs(1),tabs(1)+"public 
"+model.className+"(){",tabs(1)+"}");
+               
+               classStr=addLines(classStr,emptyConstructorMethod);
+               classStr=addLines(classStr,constructorMethod);
+               
+
+
+
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public boolean 
equals(Object o) {");
+               classStr=addLines(classStr,tabs(2)+"return false;");
+               classStr=addLines(classStr,tabs(1)+"}");
+
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public int hashCode() {");
+               classStr=addLines(classStr,tabs(2)+"return 1;");
+               classStr=addLines(classStr,tabs(1)+"}");
+           
+               classStr=addLines(classStr,fieldGetters.toArray(new 
String[]{}));
+               classStr=addLines(classStr,fieldSetters.toArray(new 
String[]{}));
+               
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+
+       public String generatePersistenceXmlEntry(JPAClassModel model){
+               String xmlEntry=null;
+               xmlEntry=addLines(xmlEntry,"<persistence 
xmlns=\"http://java.sun.com/xml/ns/persistence\"; 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; version=\"1.0\">");
+               xmlEntry=addLines(xmlEntry,tabs(1)+"<persistence-unit 
name=\"appcatalog_data\">");
+               
xmlEntry=addLines(xmlEntry,tabs(2)+"<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>");
+               
xmlEntry=addLines(xmlEntry,tabs(2)+"<class>"+getJpaClassPackageName()+"."+model.className+"</class>");
+               
xmlEntry=addLines(xmlEntry,tabs(2)+"<exclude-unlisted-classes>true</exclude-unlisted-classes>");
+               xmlEntry=addLines(xmlEntry,tabs(1)+"</persistence-unit>");
+               xmlEntry=addLines(xmlEntry,"</persistence>");
+               return xmlEntry;
+       }
+       
+       public String getJpaClassPackageName() {
+               return jpaClassPackageName;
+       }
+
+       public void setJpaClassPackageName(String jpaClassPackageName) {
+               this.jpaClassPackageName = jpaClassPackageName;
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAResourceClassGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAResourceClassGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAResourceClassGenerator.java
new file mode 100644
index 0000000..f3f8978
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAResourceClassGenerator.java
@@ -0,0 +1,513 @@
+package generators;
+import java.util.ArrayList;
+import java.util.List;
+
+import model.JPAClassField;
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class JPAResourceClassGenerator extends AbstractGenerator {
+       private String exceptionClassName;
+       private String jpaUtilsClassName;
+       private String resourceTypeClassName;
+       private String queryGeneratorClassName;
+       
+       public JPAResourceClassModel createJPAResourceClassModel(JPAClassModel 
jpaClassModel){
+               JPAResourceClassModel jpaResourceClassModel = new 
JPAResourceClassModel();
+               jpaResourceClassModel.jpaClassModel=jpaClassModel;
+               
jpaResourceClassModel.className=jpaClassModel.className+"Resource";
+               
jpaClassModel.classNameConstant=convertToJavaConstantNameCaseStringConvention(jpaClassModel.className);
+               for (JPAClassField jpaField : jpaClassModel.fields) {
+                       
jpaField.fieldNameConstant=convertToJavaConstantNameCaseStringConvention(jpaField.fieldName);
+               }
+               
jpaResourceClassModel.jpaClassConstantClassName=jpaClassModel.className+"Constants";
+               return jpaResourceClassModel;
+       }
+       
+       public String generateJPAResourceClass(JPAResourceClassModel model){
+               String classStr = null;
+               String className = model.className;
+               classStr=addLines(classStr,"public class "+className+" extends 
AbstractResource {");
+               classStr=addLines(classStr,tabs(1)+"private final static Logger 
logger = LoggerFactory.getLogger("+className+".class);");
+
+               List<String> columnFields=new ArrayList<String>();
+               List<String> fieldGetters=new ArrayList<String>();
+               List<String> fieldSetters=new ArrayList<String>();
+               for (JPAClassField jpaField : model.jpaClassModel.fields) {
+                   String fieldName = jpaField.fieldName;
+                   String dataType = jpaField.fieldDataType;
+                   String fieldTitleString = jpaField.fieldTitle;
+                   
+                       String 
fieldString=tabs(1)+createFieldVarString(dataType, fieldName);
+                   columnFields.add(fieldString);
+                   
+                   fieldGetters.add(createGetterString(1, fieldName, dataType, 
fieldTitleString));
+                   fieldSetters.add(createSetterString(1, fieldName, dataType, 
fieldTitleString));
+                   
+                   if (jpaField.foriegnKey){
+                           fieldName = 
createVarNameFromClassName(jpaField.foriegnKeyJPAResourceClass);
+                           dataType = jpaField.foriegnKeyJPAResourceClass;
+                           fieldTitleString = 
jpaField.foriegnKeyJPAResourceClass;
+                           
+                               
fieldString=tabs(1)+createFieldVarString(dataType ,fieldName);
+                               columnFields.add(fieldString);
+                               
+                           fieldGetters.add(createGetterString(1, 
fieldName,dataType, fieldTitleString));
+                           fieldSetters.add(createSetterString(1, 
fieldName,dataType, fieldTitleString));
+                   }
+                   
+               }
+               classStr=addLines(classStr,columnFields.toArray(new 
String[]{}));
+               
+               //remove method
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public void remove(Object 
identifier) throws "+getExceptionClassName()+" {");
+               if (model.jpaClassModel.generatePKClass){
+                       classStr=addLines(classStr,tabs(2)+"HashMap<String, 
String> ids;");
+                       classStr=addLines(classStr,tabs(2)+"if (identifier 
instanceof Map) {");
+                       classStr=addLines(classStr,tabs(3)+"ids = 
(HashMap<String, String>) identifier;");
+                       classStr=addLines(classStr,tabs(2)+"} else {");
+                       
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map 
with the field name and it's value\");");
+                       classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(\"Identifier should be a map with the field name 
and it's value\");");
+            classStr=addLines(classStr,tabs(2)+"}");   
+               }
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
+               
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator 
= new 
"+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
+               if (model.jpaClassModel.generatePKClass){
+                       for(JPAClassField 
field:model.jpaClassModel.pkClassModel.pkFields){
+                               
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+",
 ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"));");
+                       }
+               }else{
+                       for(JPAClassField field:model.jpaClassModel.fields){
+                               if (field.primaryKey){
+                                       
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+",
 identifier);");
+                               }
+                       }
+               }
+               classStr=addLines(classStr,tabs(3)+"Query q = 
generator.deleteQuery(em);");
+               classStr=addLines(classStr,tabs(3)+"q.executeUpdate();");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(2)+"} catch 
(ApplicationSettingsException e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+        
+               classStr=addLines(classStr,tabs(1)+"}");
+               
+               //get method for resource class
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public Resource get(Object 
identifier) throws "+getExceptionClassName()+" {");
+               
+               if (model.jpaClassModel.generatePKClass){
+                       classStr=addLines(classStr,tabs(2)+"HashMap<String, 
String> ids;");
+                       classStr=addLines(classStr,tabs(2)+"if (identifier 
instanceof Map) {");
+                       classStr=addLines(classStr,tabs(3)+"ids = 
(HashMap<String, String>) identifier;");
+                       classStr=addLines(classStr,tabs(2)+"} else {");
+                       
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map 
with the field name and it's value\");");
+                       classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(\"Identifier should be a map with the field name 
and it's value\");");
+            classStr=addLines(classStr,tabs(2)+"}");   
+               }
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
+               
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator 
= new 
"+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
+               if (model.jpaClassModel.generatePKClass){
+                       for(JPAClassField 
field:model.jpaClassModel.pkClassModel.pkFields){
+                               
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+",
 ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"));");
+                       }
+               }else{
+                       for(JPAClassField field:model.jpaClassModel.fields){
+                               if (field.primaryKey){
+                                       
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+",
 identifier);");
+                               }
+                       }
+               }
+
+               classStr=addLines(classStr,tabs(3)+"Query q = 
generator.selectQuery(em);");
+               String 
jpaObjVar=createVarNameFromClassName(model.jpaClassModel.className);
+               
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" 
"+jpaObjVar+" = ("+model.jpaClassModel.className+") q.getSingleResult();");
+               String 
jpaObjVarResource=createVarNameFromClassName(model.className);
+               classStr=addLines(classStr,tabs(3)+model.className+" 
"+jpaObjVarResource+" = ("+model.className+") 
"+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+",
 "+jpaObjVar+");");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"return 
"+jpaObjVarResource+";");
+               classStr=addLines(classStr,tabs(2)+"} catch 
(ApplicationSettingsException e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(1)+"}");
+
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public List<Resource> 
get(String fieldName, Object value) throws "+getExceptionClassName()+" {");
+               
+               String 
resultListVarName=createVarNameFromClassName(model.className)+"s";
+               classStr=addLines(classStr,tabs(2)+"List<Resource> 
"+resultListVarName+" = new ArrayList<Resource>();");
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
+               
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator 
= new 
"+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
+
+               classStr=addLines(classStr,tabs(3)+"Query q;");
+               List<String> fieldNameValidations=new ArrayList<String>();
+               for(JPAClassField field:model.jpaClassModel.fields){
+                       
fieldNameValidations.add("(fieldName.equals("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"))");
+               }
+               String fieldNameValidationLogic = 
commaSeperatedString(fieldNameValidations, " || ");
+               classStr=addLines(classStr,tabs(3)+"if 
("+fieldNameValidationLogic+") {");
+               
classStr=addLines(classStr,tabs(4)+"generator.setParameter(fieldName, value);");
+               classStr=addLines(classStr,tabs(4)+"q = 
generator.selectQuery(em);");
+               classStr=addLines(classStr,tabs(4)+"List<?> results = 
q.getResultList();");
+               classStr=addLines(classStr,tabs(4)+"for (Object result : 
results) {");
+               
classStr=addLines(classStr,tabs(5)+model.jpaClassModel.className+" 
"+jpaObjVar+" = ("+model.jpaClassModel.className+") result;");
+               classStr=addLines(classStr,tabs(5)+model.className+" 
"+jpaObjVarResource+" = ("+model.className+") 
"+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+",
 "+jpaObjVar+");");
+               
classStr=addLines(classStr,tabs(5)+resultListVarName+".add("+jpaObjVarResource+");");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(3)+"} else {");
+               
classStr=addLines(classStr,tabs(4)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(5)+"em.close();");
+               classStr=addLines(classStr,tabs(4)+"logger.error(\"Unsupported 
field name for "+convertToTitleCaseString(model.className)+".\", new 
IllegalArgumentException());");
+               classStr=addLines(classStr,tabs(4)+"throw new 
IllegalArgumentException(\"Unsupported field name for 
"+convertToTitleCaseString(model.className)+".\");");
+               classStr=addLines(classStr,tabs(3)+"}");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(2)+"} catch 
(ApplicationSettingsException e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(2)+"return 
"+resultListVarName+";");
+               classStr=addLines(classStr,tabs(1)+"}");
+
+               //id list method
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public List<String> 
getIds(String fieldName, Object value) throws "+getExceptionClassName()+" {");
+               
+               
resultListVarName=createVarNameFromClassName(model.className)+"IDs";
+               classStr=addLines(classStr,tabs(2)+"List<String> 
"+resultListVarName+" = new ArrayList<String>();");
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
+               
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator 
= new 
"+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
+
+               classStr=addLines(classStr,tabs(3)+"Query q;");
+               fieldNameValidations=new ArrayList<String>();
+               for(JPAClassField field:model.jpaClassModel.fields){
+                       
fieldNameValidations.add("(fieldName.equals("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"))");
+               }
+               fieldNameValidationLogic = 
commaSeperatedString(fieldNameValidations, " || ");
+               classStr=addLines(classStr,tabs(3)+"if 
("+fieldNameValidationLogic+") {");
+               
classStr=addLines(classStr,tabs(4)+"generator.setParameter(fieldName, value);");
+               classStr=addLines(classStr,tabs(4)+"q = 
generator.selectQuery(em);");
+               classStr=addLines(classStr,tabs(4)+"List<?> results = 
q.getResultList();");
+               classStr=addLines(classStr,tabs(4)+"for (Object result : 
results) {");
+               
classStr=addLines(classStr,tabs(5)+model.jpaClassModel.className+" 
"+jpaObjVar+" = ("+model.jpaClassModel.className+") result;");
+               classStr=addLines(classStr,tabs(5)+model.className+" 
"+jpaObjVarResource+" = ("+model.className+") 
"+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+",
 "+jpaObjVar+");");
+               String idFieldToAdd=null;
+               if (model.jpaClassModel.generatePKClass){
+                       for (JPAClassField field : model.jpaClassModel.fields) {
+                               if (field.foriegnKey){
+                                       
idFieldToAdd=jpaObjVarResource+".get"+field.fieldTitle+"()";
+                                       break;
+                               }
+                       }
+               }else{
+                       for (JPAClassField field : model.jpaClassModel.fields) {
+                               if (field.primaryKey){
+                                       
idFieldToAdd=jpaObjVarResource+".get"+field.fieldTitle+"()";
+                               }
+                       }
+               }
+               
classStr=addLines(classStr,tabs(5)+resultListVarName+".add("+idFieldToAdd+");");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(3)+"} else {");
+               
classStr=addLines(classStr,tabs(4)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(5)+"em.close();");
+               classStr=addLines(classStr,tabs(4)+"logger.error(\"Unsupported 
field name for "+convertToTitleCaseString(model.className)+".\", new 
IllegalArgumentException());");
+               classStr=addLines(classStr,tabs(4)+"throw new 
IllegalArgumentException(\"Unsupported field name for 
"+convertToTitleCaseString(model.className)+".\");");
+               classStr=addLines(classStr,tabs(3)+"}");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(2)+"} catch 
(ApplicationSettingsException e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(2)+"return 
"+resultListVarName+";");
+               
+               
+               classStr=addLines(classStr,tabs(1)+"}");
+               
+               //save method
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public void save() throws 
"+getExceptionClassName()+" {");
+               
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+               String 
existingJPAObjVar="existing"+model.jpaClassModel.className;
+               
+               String primaryKeySearchString=null;
+               if (model.jpaClassModel.generatePKClass){
+                       List<String> fieldStrings=new ArrayList<String>();
+                       for(JPAClassField 
field:model.jpaClassModel.pkClassModel.pkFields){
+                               fieldStrings.add(field.fieldName);
+                       }
+                       primaryKeySearchString="new 
"+model.jpaClassModel.pkClassModel.className+"("+commaSeperatedString(fieldStrings,
 ", ")+")";
+               }else{
+                       for(JPAClassField field:model.jpaClassModel.fields){
+                               if (field.primaryKey){
+                                       primaryKeySearchString=field.fieldName;
+                               }
+                       }
+               }
+               
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" 
"+existingJPAObjVar+" = em.find("+model.jpaClassModel.className+".class, 
"+primaryKeySearchString+");");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" 
"+jpaObjVar+";");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
+               classStr=addLines(classStr,tabs(3)+"if ("+existingJPAObjVar+" 
== null) {");
+               classStr=addLines(classStr,tabs(4)+jpaObjVar+" = new 
"+model.jpaClassModel.className+"();");
+               classStr=addLines(classStr,tabs(3)+"} else {");
+               classStr=addLines(classStr,tabs(4)+jpaObjVar+" = 
"+existingJPAObjVar+";");
+               classStr=addLines(classStr,tabs(3)+"}");
+               for (JPAClassField field : model.jpaClassModel.fields) {
+                       
classStr=addLines(classStr,tabs(3)+jpaObjVar+".set"+field.fieldTitle+"(get"+field.fieldTitle+"());");
+                       if (field.foriegnKey){
+                               String varNameForForiegnKeyObj = 
createVarNameFromClassName(field.foriegnKeyJPAClass);
+                               
classStr=addLines(classStr,tabs(3)+field.foriegnKeyJPAClass+" 
"+varNameForForiegnKeyObj+" = em.find("+field.foriegnKeyJPAClass+".class, 
get"+field.fieldTitle+"());");
+                               
classStr=addLines(classStr,tabs(3)+jpaObjVar+".set"+field.foriegnKeyJPAClass+"("+varNameForForiegnKeyObj+");");
+                       }
+               }
+               classStr=addLines(classStr,tabs(3)+"if ("+existingJPAObjVar+" 
== null) {");
+               
classStr=addLines(classStr,tabs(4)+"em.persist("+jpaObjVar+");");
+               classStr=addLines(classStr,tabs(3)+"} else {");
+               classStr=addLines(classStr,tabs(4)+"em.merge("+jpaObjVar+");");
+               classStr=addLines(classStr,tabs(3)+"}");
+               
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(2)+"} catch (Exception e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(1)+"}");
+               
+               //isexist method
+
+               classStr=addLines(classStr,tabs(1));
+               classStr=addLines(classStr,tabs(1)+"@Override");
+               classStr=addLines(classStr,tabs(1)+"public boolean 
isExists(Object identifier) throws "+getExceptionClassName()+" {");
+               
+               if (model.jpaClassModel.generatePKClass){
+                       classStr=addLines(classStr,tabs(2)+"HashMap<String, 
String> ids;");
+                       classStr=addLines(classStr,tabs(2)+"if (identifier 
instanceof Map) {");
+                       classStr=addLines(classStr,tabs(3)+"ids = 
(HashMap<String, String>) identifier;");
+                       classStr=addLines(classStr,tabs(2)+"} else {");
+                       
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map 
with the field name and it's value\");");
+                       classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(\"Identifier should be a map with the field name 
and it's value\");");
+            classStr=addLines(classStr,tabs(2)+"}");   
+               }
+        
+               primaryKeySearchString=null;
+               if (model.jpaClassModel.generatePKClass){
+                       List<String> fieldStrings=new ArrayList<String>();
+                       for(JPAClassField 
field:model.jpaClassModel.pkClassModel.pkFields){
+                               
fieldStrings.add("ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+")");
+                       }
+                       primaryKeySearchString="new 
"+model.jpaClassModel.pkClassModel.className+"("+commaSeperatedString(fieldStrings,
 ", ")+")";
+               }else{
+                       for(JPAClassField field:model.jpaClassModel.fields){
+                               if (field.primaryKey){
+                                       primaryKeySearchString="identifier";
+                               }
+                       }
+               }
+               classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
+               classStr=addLines(classStr,tabs(2)+"try {");
+               classStr=addLines(classStr,tabs(3)+"em = 
"+getJpaUtilsClassName()+".getEntityManager();");
+               
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" 
"+jpaObjVar+" = em.find("+model.jpaClassModel.className+".class, 
"+primaryKeySearchString+");");
+
+               classStr=addLines(classStr,tabs(3)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"return "+jpaObjVar+" != 
null;");
+               classStr=addLines(classStr,tabs(2)+"} catch 
(ApplicationSettingsException e) {");
+               
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
+               classStr=addLines(classStr,tabs(3)+"throw new 
"+getExceptionClassName()+"(e);");
+               classStr=addLines(classStr,tabs(2)+"} finally {");
+               classStr=addLines(classStr,tabs(3)+"if (em != null && 
em.isOpen()) {");
+               classStr=addLines(classStr,tabs(4)+"if 
(em.getTransaction().isActive()) {");
+               
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(4)+"em.close();");
+               classStr=addLines(classStr,tabs(3)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(1)+"}");
+
+               
+               classStr=addLines(classStr,fieldGetters.toArray(new 
String[]{}));
+               classStr=addLines(classStr,fieldSetters.toArray(new 
String[]{}));
+               
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+       
+       public String 
generateAbstractResourceClassUpdates(JPAResourceClassModel model){
+               String classStr = null;
+               classStr=addLines(classStr,"public abstract class 
AbstractResource implements Resource {");
+               
+               classStr=addLines(classStr,tabs(1)+"public static final String 
"+model.jpaClassModel.classNameConstant+" = 
\""+model.jpaClassModel.className+"\";");
+               
+               classStr=addLines(classStr,tabs(1)+"// 
"+convertToTitleCaseString(model.jpaClassModel.className)+" Table");
+               classStr=addLines(classStr,tabs(1)+"public final class 
"+model.jpaClassConstantClassName+" {");
+               for (JPAClassField jpaField : model.jpaClassModel.fields) {
+                       classStr=addLines(classStr,tabs(2)+"public static final 
String "+jpaField.fieldNameConstant+" = \""+jpaField.fieldName+"\";");
+               }
+               classStr=addLines(classStr,tabs(1)+"}");
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+       
+       public String generateAppCatalogJPAUtilUpdates(JPAResourceClassModel 
model){
+               String classStr = null;
+               String 
conversionMethodName="create"+model.jpaClassModel.className;
+               classStr=addLines(classStr,"public class 
"+getJpaUtilsClassName()+" {");
+               classStr=addLines(classStr,tabs(1)+"public static Resource 
getResource("+getResourceTypeClassName()+" type, Object o) {");
+               classStr=addLines(classStr,tabs(2)+"switch (type){");
+               classStr=addLines(classStr,tabs(3)+"case 
"+model.jpaClassModel.classNameConstant+":");
+               classStr=addLines(classStr,tabs(4)+"if (o instanceof 
"+model.jpaClassModel.className+"){");
+               classStr=addLines(classStr,tabs(5)+"return 
"+conversionMethodName+"(("+model.jpaClassModel.className+") o);");
+               classStr=addLines(classStr,tabs(4)+"}else{");
+               classStr=addLines(classStr,tabs(5)+"logger.error(\"Object 
should be a "+convertToTitleCaseString(model.jpaClassModel.className)+".\", new 
IllegalArgumentException());");
+               classStr=addLines(classStr,tabs(5)+"throw new 
IllegalArgumentException(\"Object should be a 
"+convertToTitleCaseString(model.jpaClassModel.className)+".\");");
+               classStr=addLines(classStr,tabs(4)+"}");
+               classStr=addLines(classStr,tabs(2)+"}");
+               classStr=addLines(classStr,tabs(1)+"}");
+               classStr=addLines(classStr,tabs(1));
+               
+               String resourceVariableName = 
createVarNameFromClassName(model.className);
+               classStr=addLines(classStr,tabs(1)+"private static Resource 
"+conversionMethodName+"("+model.jpaClassModel.className+" o) {");
+               classStr=addLines(classStr,tabs(2)+model.className+" 
"+resourceVariableName+" = new "+model.className+"();");
+               for(JPAClassField field:model.jpaClassModel.fields){
+                       
classStr=addLines(classStr,tabs(2)+resourceVariableName+".set"+field.fieldTitle+"(o.get"+field.fieldTitle+"());");
+                       if (field.foriegnKey){
+                               
classStr=addLines(classStr,tabs(2)+resourceVariableName+".set"+field.foriegnKeyJPAResourceClass+"(("+field.foriegnKeyJPAResourceClass+")create"+field.foriegnKeyJPAClass+"(o.get"+field.foriegnKeyJPAClass+"()));");
+                       }
+               }
+               classStr=addLines(classStr,tabs(2)+"return 
"+resourceVariableName+";");
+               classStr=addLines(classStr,tabs(1)+"}");
+               
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+       
+       public String 
generateAppCatalogResourceTypeUpdates(JPAResourceClassModel model){
+               String classStr = null;
+               classStr=addLines(classStr,"public enum 
"+getResourceTypeClassName()+" {");
+               
classStr=addLines(classStr,tabs(1)+model.jpaClassModel.classNameConstant);
+               classStr=addLines(classStr,"}");
+               return classStr;
+       }
+
+       public String getExceptionClassName() {
+               return exceptionClassName;
+       }
+
+       public void setExceptionClassName(String exceptionClassName) {
+               this.exceptionClassName = exceptionClassName;
+       }
+
+       public String getJpaUtilsClassName() {
+               return jpaUtilsClassName;
+       }
+
+       public void setJpaUtilsClassName(String jpaUtilsClassName) {
+               this.jpaUtilsClassName = jpaUtilsClassName;
+       }
+
+       public String getResourceTypeClassName() {
+               return resourceTypeClassName;
+       }
+
+       public void setResourceTypeClassName(String resourceTypeClassName) {
+               this.resourceTypeClassName = resourceTypeClassName;
+       }
+
+       public String getQueryGeneratorClassName() {
+               return queryGeneratorClassName;
+       }
+
+       public void setQueryGeneratorClassName(String queryGeneratorClassName) {
+               this.queryGeneratorClassName = queryGeneratorClassName;
+       }
+       
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/generators/SQLGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/generators/SQLGenerator.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/SQLGenerator.java
new file mode 100644
index 0000000..3d326ca
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/generators/SQLGenerator.java
@@ -0,0 +1,77 @@
+package generators;
+import java.util.ArrayList;
+import java.util.List;
+
+import model.SQLData;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class SQLGenerator extends AbstractGenerator {
+    private static final Logger log = 
LoggerFactory.getLogger(SQLGenerator.class);
+    
+       public static enum DataTypes{
+               VARCHAR,
+               TIMESTAMP,
+               INTEGER,
+               LONGTEXT,
+               SMALLINT,
+               CLOB,
+       }
+       
+       public String generateSQLCreateQuery(SQLData sqlData){
+               String sql = null;
+               sql="CREATE TABLE "+sqlData.getTableName()+"\n";
+               sql+="(";
+               for (String fieldName : sqlData.getFieldData().keySet()) {
+                       List<String> fieldData = new ArrayList<String>();
+                       fieldData.addAll(sqlData.getFieldData().get(fieldName));
+                       String dataTypeStr = fieldData.get(0);
+                       fieldData.remove(0);
+                       DataTypes.valueOf(dataTypeStr);
+                       sql+="\n\t"+fieldName+" "+dataTypeStr;
+                       for (String data : fieldData) {
+                               sql+=" "+data;
+                       }
+                       sql+=",";
+               }
+               
+               if (sqlData.getPrimaryKeys().size()>0) {
+                       sql+="\n\tPRIMARY KEY (";
+                       for (String primaryKey : sqlData.getPrimaryKeys()) {
+                               sql+=primaryKey+",";
+                       }
+                       sql=removeLastChar(sql);
+                       sql+="),";
+               }
+               for (String foriegnKey : sqlData.getForiegnKeys().keySet()) {
+                       sql+="\n\tFOREIGN KEY ";
+                       sql+="("+foriegnKey+") REFERENCES 
"+sqlData.getForiegnKeys().get(foriegnKey).tableAndField+",";
+               }
+               sql=removeLastChar(sql)+"\n";
+               sql+=");";
+               return sql;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassField.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassField.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassField.java
new file mode 100644
index 0000000..b0d0090
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassField.java
@@ -0,0 +1,47 @@
+package model;
+/*
+ *
+ * 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.
+ *
+ */
+
+
+public class JPAClassField{
+       public String tableColumnName;
+       public String fieldName;
+       public String fieldNameConstant;
+       public String fieldDataType;
+       public String fieldTitle;
+       public boolean primaryKey;
+       public boolean foriegnKey=false;
+       public String foriegnKeyJPAClass;
+       public String foriegnKeyJPAResourceClass;
+       public JPAClassField(String tableColumnName, String fieldName,
+                       String fieldDataType, String fieldTitle, boolean 
primaryKey,boolean foriegnKey,String foriegnKeyJPAClass,String 
foriegnKeyJPAResourceClass) {
+               this.tableColumnName = tableColumnName;
+               this.fieldName = fieldName;
+               this.fieldDataType = fieldDataType;
+               this.fieldTitle = fieldTitle;
+               this.primaryKey=primaryKey;
+               this.foriegnKey=foriegnKey;
+               this.foriegnKeyJPAClass=foriegnKeyJPAClass;
+               this.foriegnKeyJPAResourceClass=foriegnKeyJPAResourceClass;
+       }
+       
+       
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassModel.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassModel.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassModel.java
new file mode 100644
index 0000000..8ac8ff8
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAClassModel.java
@@ -0,0 +1,34 @@
+package model;
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+
+public class JPAClassModel{
+       public String className;
+       public String classNameConstant;
+       public String tableName;
+       public boolean generatePKClass=false;
+       public List<JPAClassField> fields=new ArrayList<JPAClassField>();
+       public JPAPKClassModel pkClassModel=new JPAPKClassModel();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAPKClassModel.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAPKClassModel.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAPKClassModel.java
new file mode 100644
index 0000000..f09f426
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAPKClassModel.java
@@ -0,0 +1,30 @@
+package model;
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+
+public class JPAPKClassModel{
+       public String className;
+       public List<JPAClassField> pkFields=new ArrayList<JPAClassField>();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAResourceClassModel.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAResourceClassModel.java
 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAResourceClassModel.java
new file mode 100644
index 0000000..f0b4c21
--- /dev/null
+++ 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/JPAResourceClassModel.java
@@ -0,0 +1,28 @@
+package model;
+/*
+ *
+ * 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.
+ *
+ */
+
+
+public class JPAResourceClassModel{
+       public String className;
+       public JPAClassModel jpaClassModel;
+       public String jpaClassConstantClassName;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/model/SQLData.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/model/SQLData.java 
b/modules/registry/registry-tools/jpa-gen/src/main/java/model/SQLData.java
new file mode 100644
index 0000000..59f0332
--- /dev/null
+++ b/modules/registry/registry-tools/jpa-gen/src/main/java/model/SQLData.java
@@ -0,0 +1,79 @@
+package model;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class SQLData {
+       private String tableName;
+       private Map<String,List<String>> fieldData;
+       private List<String> primaryKeys;
+       private Map<String,ForiegnKeyData> foriegnKeys;
+       
+       public static class ForiegnKeyData{
+               public String tableAndField;
+               public String jpaClassName;
+               public String jpaResourceClassName;
+               public ForiegnKeyData(String tableAndField, String 
jpaClassName,String jpaResourceClassName) {
+                       this.tableAndField = tableAndField;
+                       this.jpaClassName = jpaClassName;
+                       this.jpaResourceClassName = jpaResourceClassName;
+               }
+       }
+       
+       public String getTableName() {
+               return tableName;
+       }
+       public void setTableName(String tableName) {
+               this.tableName = tableName;
+       }
+       public Map<String, List<String>> getFieldData() {
+               if (fieldData==null){
+                       fieldData=new HashMap<String, List<String>>();
+               }
+               return fieldData;
+       }
+       
+       public void setFieldData(Map<String, List<String>> fieldData) {
+               this.fieldData = fieldData;
+       }
+       public List<String> getPrimaryKeys() {
+               if (primaryKeys==null){
+                       primaryKeys=new ArrayList<String>();
+               }
+               return primaryKeys;
+       }
+       public void setPrimaryKeys(List<String> primaryKeys) {
+               this.primaryKeys = primaryKeys;
+       }
+       public Map<String,ForiegnKeyData> getForiegnKeys() {
+               if (foriegnKeys==null){
+                       foriegnKeys=new HashMap<String, ForiegnKeyData>();
+               }
+               return foriegnKeys;
+       }
+       public void setForiegnKeys(Map<String,ForiegnKeyData> foriegnKeys) {
+               this.foriegnKeys = foriegnKeys;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/jpa-gen/src/main/java/test/Test.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-tools/jpa-gen/src/main/java/test/Test.java 
b/modules/registry/registry-tools/jpa-gen/src/main/java/test/Test.java
new file mode 100644
index 0000000..9d5510d
--- /dev/null
+++ b/modules/registry/registry-tools/jpa-gen/src/main/java/test/Test.java
@@ -0,0 +1,81 @@
+package test;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+/*
+ *
+ * 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.
+ *
+ */
+
+public class Test {
+
+
+       private static SQLData createSQLData() {
+               SQLData data = new SQLData();
+               data.setTableName("COMMUNITY_USER");
+               data.getFieldData().put("GATEWAY_NAME", Arrays.asList(new 
String[]{"VARCHAR", "256", "NOT", "NULL"}));
+               data.getFieldData().put("COMMUNITY_USER_NAME", 
Arrays.asList(new String[]{"VARCHAR", "256", "NOT", "NULL"}));
+               data.getFieldData().put("TOKEN_ID", Arrays.asList(new 
String[]{"VARCHAR", "256", "NOT", "NULL"}));
+               data.getFieldData().put("COMMUNITY_USER_EMAIL", 
Arrays.asList(new String[]{"VARCHAR", "256", "NOT", "NULL"}));
+               data.getFieldData().put("CREATION_TIME", Arrays.asList(new 
String[]{"TIMESTAMP", "DEFAULT", "NOW()"}));
+               data.getFieldData().put("CPU_COUNT", Arrays.asList(new 
String[]{"INTEGER"}));
+               data.getPrimaryKeys().add("GATEWAY_NAME");
+               data.getPrimaryKeys().add("COMMUNITY_USER_NAME");
+               data.getPrimaryKeys().add("TOKEN_ID");
+               data.getForiegnKeys().put("EXPERIMENT_ID", new 
SQLData.ForiegnKeyData("EXPERIMENT(EXPERIMENT_ID)","Experiment","ExperimentResource"));
+               return data;
+       }
+       public static void testSqlGen() {
+               SQLData data = createSQLData();
+               SQLGenerator sqlGenerator = new SQLGenerator();
+               System.out.println(sqlGenerator.generateSQLCreateQuery(data));
+       }
+       
+       public static void testJPAClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               System.out.println(jpaClassGenerator.generateJPAClass(model));
+               
System.out.println(jpaClassGenerator.generateJPAPKClass(model.pkClassModel));
+       }
+       
+       public static void testJPAResourceClassGen() {
+               SQLData data = createSQLData();
+               JPAClassGenerator jpaClassGenerator = new JPAClassGenerator();
+               JPAClassModel model = 
jpaClassGenerator.createJPAClassModel(data);
+               JPAResourceClassGenerator jpaResourceClassGenerator = new 
JPAResourceClassGenerator();
+               JPAResourceClassModel model2 = 
jpaResourceClassGenerator.createJPAResourceClassModel(model);
+               
System.out.println(jpaResourceClassGenerator.generateJPAResourceClass(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAbstractResourceClassUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogResourceTypeUpdates(model2));
+               
System.out.println(jpaResourceClassGenerator.generateAppCatalogJPAUtilUpdates(model2));
+               
+       }
+       public static void main(String[] args) {
+               testJPAResourceClassGen();
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/6c1eebe3/modules/registry/registry-tools/registry-tool/README
----------------------------------------------------------------------
diff --git a/modules/registry/registry-tools/registry-tool/README 
b/modules/registry/registry-tools/registry-tool/README
new file mode 100644
index 0000000..40a8e65
--- /dev/null
+++ b/modules/registry/registry-tools/registry-tool/README
@@ -0,0 +1,9 @@
+0.7 => 0.8
+==============
+
+1. Build registry-tools
+2. Copy registry-tool-0.8-SNAPSHOT.jar and commons-cli-1.1.jar (you will find 
this in your maven repository) to <AIRAVATA_HOME>/lib
+3. Copy db-migrate.sh file to <AIRAVATA_HOME>/bin
+4. Make sure previous version of airavata database is up and running
+5. Run db-migrate.sh script file
+        ./db-migrate.sh -url jdbc:mysql://localhost:3306/experiment_catalog 
-user airavata -pwd airavata -v 0.7
\ No newline at end of file

Reply via email to