You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2014/07/05 02:07:18 UTC
[2/2] git commit: adding jpa class gen project
adding jpa class gen project
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/2c32d42b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/2c32d42b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/2c32d42b
Branch: refs/heads/master
Commit: 2c32d42b9ea7eba07c2e635071401ac391f1a8a1
Parents: c4268c1
Author: Saminda Wijeratne <sa...@gmail.com>
Authored: Fri Jul 4 20:06:52 2014 -0400
Committer: Saminda Wijeratne <sa...@gmail.com>
Committed: Fri Jul 4 20:06:52 2014 -0400
----------------------------------------------------------------------
.../client/tools/DocumentCreatorNew.java | 838 +++++++++++++++++++
.../data/resources/AbstractResource.java | 31 +-
.../resources/ApplicationInputResource.java | 42 +-
.../catalog/data/util/AppCatalogJPAUtils.java | 128 ++-
.../data/util/AppCatalogResourceType.java | 5 +-
.../src/main/resources/META-INF/persistence.xml | 4 +
.../src/main/resources/appcatalog-derby.sql | 30 +
modules/registry/jpa-gen/pom.xml | 42 +
.../java/appcatalog/BatchQueueGenerator.java | 86 ++
.../java/appcatalog/FileSystemsGenerator.java | 82 ++
.../JobSubmissionInterfaceGenerator.java | 83 ++
.../main/java/generators/AbstractGenerator.java | 119 +++
.../main/java/generators/JPAClassGenerator.java | 193 +++++
.../generators/JPAResourceClassGenerator.java | 513 ++++++++++++
.../src/main/java/generators/SQLGenerator.java | 77 ++
.../src/main/java/model/JPAClassField.java | 47 ++
.../src/main/java/model/JPAClassModel.java | 34 +
.../src/main/java/model/JPAPKClassModel.java | 30 +
.../main/java/model/JPAResourceClassModel.java | 28 +
.../jpa-gen/src/main/java/model/SQLData.java | 79 ++
.../jpa-gen/src/main/java/test/Test.java | 81 ++
.../org/apache/airavata/server/ServerMain.java | 4 +-
modules/workflow-model/pom.xml | 3 +
23 files changed, 2542 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
----------------------------------------------------------------------
diff --git a/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
new file mode 100644
index 0000000..2cf971b
--- /dev/null
+++ b/modules/airavata-client/src/main/java/org/apache/airavata/client/tools/DocumentCreatorNew.java
@@ -0,0 +1,838 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+package org.apache.airavata.client.tools;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.airavata.appcatalog.cpi.ApplicationDeployment;
+import org.airavata.appcatalog.cpi.ApplicationInterface;
+import org.airavata.appcatalog.cpi.ComputeResource;
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.commons.gfac.type.ApplicationDescription;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
+import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.computehost.ComputeResourceDescription;
+import org.apache.airavata.model.computehost.JobSubmissionProtocol;
+import org.apache.airavata.model.computehost.ResourceJobManager;
+import org.apache.airavata.model.computehost.SSHJobSubmission;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+import org.apache.airavata.schemas.gfac.DataType;
+import org.apache.airavata.schemas.gfac.GlobusHostType;
+import org.apache.airavata.schemas.gfac.GsisshHostType;
+import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
+import org.apache.airavata.schemas.gfac.InputParameterType;
+import org.apache.airavata.schemas.gfac.JobTypeType;
+import org.apache.airavata.schemas.gfac.OutputParameterType;
+import org.apache.airavata.schemas.gfac.ParameterType;
+import org.apache.airavata.schemas.gfac.ProjectAccountType;
+import org.apache.airavata.schemas.gfac.QueueType;
+
+public class DocumentCreatorNew {
+
+ private AppCatalog appcatalog = null;
+ private String trestleshpcHostAddress = "trestles.sdsc.edu";
+ private String lonestarHostAddress = "lonestar.tacc.utexas.edu";
+ private String stampedeHostAddress = "stampede.tacc.xsede.org";
+ private String gridftpAddress = "gsiftp://trestles-dm1.sdsc.edu:2811";
+ private String gramAddress = "trestles-login1.sdsc.edu:2119/jobmanager-pbstest2";
+
+
+ public DocumentCreatorNew(AppCatalog appcatalog) {
+ this.appcatalog = appcatalog;
+ }
+
+ public void createLocalHostDocs() {
+ HostDescription descriptor = new HostDescription();
+ descriptor.getType().setHostName("localhost");
+ descriptor.getType().setHostAddress("127.0.0.1");
+ try {
+ airavataAPI.getApplicationManager().saveHostDescription(descriptor);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ String serviceName = "SimpleEcho0";
+ ServiceDescription serviceDescription = new ServiceDescription();
+ List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+ List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+ serviceDescription.getType().setName(serviceName);
+ serviceDescription.getType().setDescription("Echo service");
+ // Creating input parameters
+ InputParameterType parameter = InputParameterType.Factory.newInstance();
+ parameter.setParameterName("echo_input");
+ parameter.setParameterDescription("echo input");
+ ParameterType parameterType = parameter.addNewParameterType();
+ parameterType.setType(DataType.STRING);
+ parameterType.setName("String");
+ inputParameters.add(parameter);
+
+ // Creating output parameters
+ OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+ outputParameter.setParameterName("echo_output");
+ outputParameter.setParameterDescription("Echo output");
+ ParameterType outputParaType = outputParameter.addNewParameterType();
+ outputParaType.setType(DataType.STRING);
+ outputParaType.setName("String");
+ outputParameters.add(outputParameter);
+
+ // Setting input and output parameters to serviceDescriptor
+ serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[]{}));
+ serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[]{}));
+
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+ ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription
+ .getType();
+ applicationDeploymentDescriptionType.addNewApplicationName().setStringValue("EchoApplication");
+ applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+ applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "localhost", applicationDeploymentDescription);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+
+ public InputDataObjectType createAppInput (String inputName, String value, org.apache.airavata.model.appcatalog.appinterface.DataType type ){
+ InputDataObjectType input = new InputDataObjectType();
+ input.setName(inputName);
+ input.setValue(value);
+ input.setType(type);
+ input.setApplicationArgument("test arg");
+ return input;
+ }
+
+ public OutputDataObjectType createAppOutput (String inputName, String value, org.apache.airavata.model.appcatalog.appinterface.DataType type ){
+ OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
+ outputDataObjectType.setName(inputName);
+ outputDataObjectType.setValue(value);
+ outputDataObjectType.setType(type);
+ return outputDataObjectType;
+ }
+
+ public String createSSHHostDocs() throws AppCatalogException {
+ ComputeResource computeResource = appcatalog.getComputeResource();
+ ApplicationInterface appInt = appcatalog.getApplicationInterface();
+ ApplicationDeployment appDep = appcatalog.getApplicationDeployment();
+
+ ComputeResourceDescription description = new ComputeResourceDescription();
+ description.setHostName("gw111.iu.xsede.org");
+ description.setResourceDescription("gw111 ssh access");
+ Set<String> ipdaresses = new HashSet<String>();
+ ipdaresses.add("gw111.iu.xsede.org");
+ description.setIpAddresses(ipdaresses);
+ description.setHostAliases(new HashSet<String>());
+ SSHJobSubmission jobSubmission = new SSHJobSubmission();
+ jobSubmission.setSshPort(22);
+ jobSubmission.setResourceJobManager(ResourceJobManager.PBS);
+ String sshsubmissionId = appcatalog.getComputeResource().addSSHJobSubmission(jobSubmission);
+ description.setPreferredJobSubmissionProtocol(sshsubmissionId);
+ Map<String, JobSubmissionProtocol> jobProtools = new HashMap<String, JobSubmissionProtocol>();
+ jobProtools.put(sshsubmissionId, JobSubmissionProtocol.SSH);
+ description.setJobSubmissionProtocols(jobProtools);
+ String resourceId = computeResource.addComputeResource(description);
+
+
+ ApplicationModule module = new ApplicationModule();
+ module.setAppModuleName("echo");
+ module.setAppModuleVersion("1.0.0");
+ String echoModuleId = appInt.addApplicationModule(module);
+
+
+ ApplicationDeploymentDescription deployment = new ApplicationDeploymentDescription();
+ deployment.setAppModuleId(echoModuleId);
+ deployment.setComputeHostId(resourceId);
+ deployment.setExecutablePath("/bin/echo");
+ deployment.setAppDeploymentDescription("SSHEchoApplication");
+ appDep.addApplicationDeployment(deployment);
+
+
+ ApplicationInterfaceDescription application = new ApplicationInterfaceDescription();
+ List<String> modules = new ArrayList<String>();
+ modules.add(echoModuleId);
+ application.setApplicationModules(modules);
+ List<InputDataObjectType> inputs = new ArrayList<InputDataObjectType>();
+ List<OutputDataObjectType> outputs = new ArrayList<OutputDataObjectType>();
+ InputDataObjectType appInput1 = createAppInput("echo_input", null, org.apache.airavata.model.appcatalog.appinterface.DataType.STRING);
+ OutputDataObjectType output1 = createAppOutput("echo_output", null, org.apache.airavata.model.appcatalog.appinterface.DataType.STRING);
+ inputs.add(appInput1);
+ outputs.add(output1);
+ application.setApplicationName("SSHEcho1");
+ application.setApplicationInputs(inputs);
+ application.setApplicationOutputs(outputs);
+ return appInt.addApplicationInterface(application);
+ }
+
+ public void createGramDocs() {
+// /*
+// creating host descriptor for gram
+// */
+// HostDescription host = new HostDescription(GlobusHostType.type);
+// host.getType().setHostAddress(trestleshpcHostAddress);
+// host.getType().setHostName(trestleshpcHostAddress);
+// ((GlobusHostType) host.getType()).setGlobusGateKeeperEndPointArray(new String[]{gramAddress});
+// ((GlobusHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+// try {
+// airavataAPI.getApplicationManager().saveHostDescription(host);
+// } catch (AiravataAPIInvocationException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// }
+//
+//
+// /*
+// * Service Description creation and saving
+// */
+// String serviceName = "SimpleEcho1";
+// ServiceDescription serv = new ServiceDescription();
+// serv.getType().setName(serviceName);
+//
+// List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+// List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+//
+// InputParameterType input = InputParameterType.Factory.newInstance();
+// input.setParameterName("echo_input");
+// ParameterType parameterType = input.addNewParameterType();
+// parameterType.setType(DataType.STRING);
+// parameterType.setName("String");
+//
+// OutputParameterType output = OutputParameterType.Factory.newInstance();
+// output.setParameterName("echo_output");
+// ParameterType parameterType1 = output.addNewParameterType();
+// parameterType1.setType(DataType.STRING);
+// parameterType1.setName("String");
+//
+// inputList.add(input);
+// outputList.add(output);
+//
+// InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+// OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+//
+// serv.getType().setInputParametersArray(inputParamList);
+// serv.getType().setOutputParametersArray(outputParamList);
+// try {
+// airavataAPI.getApplicationManager().saveServiceDescription(serv);
+// } catch (AiravataAPIInvocationException e) {
+// e.printStackTrace();
+// }
+//
+// /*
+// Application descriptor creation and saving
+// */
+// ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+// HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+// ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+// name.setStringValue("EchoLocal");
+// app.setApplicationName(name);
+// ProjectAccountType projectAccountType = app.addNewProjectAccount();
+// projectAccountType.setProjectAccountNumber("sds128");
+//
+// QueueType queueType = app.addNewQueue();
+// queueType.setQueueName("normal");
+//
+// app.setCpuCount(1);
+// app.setJobType(JobTypeType.SERIAL);
+// app.setNodeCount(1);
+// app.setProcessorsPerNode(1);
+//
+// /*
+// * Use bat file if it is compiled on Windows
+// */
+// app.setExecutableLocation("/bin/echo");
+//
+// /*
+// * Default tmp location
+// */
+// String tempDir = "/home/ogce/scratch";
+// app.setScratchWorkingDirectory(tempDir);
+// app.setMaxMemory(10);
+//
+//
+// try {
+// airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc);
+// } catch (AiravataAPIInvocationException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// }
+ }
+
+ public void createPBSDocsForOGCE() {
+ HostDescription host = new HostDescription(GsisshHostType.type);
+ host.getType().setHostAddress(trestleshpcHostAddress);
+ host.getType().setHostName(trestleshpcHostAddress);
+ ((GsisshHostType) host.getType()).setPort(22);
+ ((GsisshHostType) host.getType()).setInstalledPath("/opt/torque/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveHostDescription(host);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ /*
+ * Service Description creation and saving
+ */
+ String serviceName = "SimpleEcho2";
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName(serviceName);
+
+ List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+ List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+
+
+ InputParameterType input = InputParameterType.Factory.newInstance();
+ input.setParameterName("echo_input");
+ ParameterType parameterType = input.addNewParameterType();
+ parameterType.setType(DataType.STRING);
+ parameterType.setName("String");
+
+ OutputParameterType output = OutputParameterType.Factory.newInstance();
+ output.setParameterName("echo_output");
+ ParameterType parameterType1 = output.addNewParameterType();
+ parameterType1.setType(DataType.STRING);
+ parameterType1.setName("String");
+
+ inputList.add(input);
+ outputList.add(output);
+
+ InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+ OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+
+ serv.getType().setInputParametersArray(inputParamList);
+ serv.getType().setOutputParametersArray(outputParamList);
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(serv);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ /*
+ Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name.setStringValue("EchoLocal");
+ app.setApplicationName(name);
+ ProjectAccountType projectAccountType = app.addNewProjectAccount();
+ projectAccountType.setProjectAccountNumber("sds128");
+
+ QueueType queueType = app.addNewQueue();
+ queueType.setQueueName("normal");
+
+ app.setCpuCount(1);
+ app.setJobType(JobTypeType.SERIAL);
+ app.setNodeCount(1);
+ app.setProcessorsPerNode(1);
+ app.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir = "/oasis/scratch/trestles/ogce/temp_project/";
+
+
+ app.setScratchWorkingDirectory(tempDir);
+ app.setInstalledParentPath("/opt/torque/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ /*
+ * Service Description creation and saving
+ */
+ String wrfserviceName = "WRF";
+ ServiceDescription wrfServ = new ServiceDescription();
+ wrfServ.getType().setName(wrfserviceName);
+
+ List<InputParameterType> wrfinputList = new ArrayList<InputParameterType>();
+ List<OutputParameterType> wrfoutputList = new ArrayList<OutputParameterType>();
+
+
+ InputParameterType wrfinput1 = InputParameterType.Factory.newInstance();
+ wrfinput1.setParameterName("WRF_Namelist");
+ ParameterType wrfparameterType1 = wrfinput1.addNewParameterType();
+ wrfparameterType1.setType(DataType.URI);
+ wrfparameterType1.setName("URI");
+
+ InputParameterType wrfinput2 = InputParameterType.Factory.newInstance();
+ wrfinput2.setParameterName("WRF_Input_File");
+ ParameterType wrfparameterType2 = wrfinput2.addNewParameterType();
+ wrfparameterType2.setType(DataType.URI);
+ wrfparameterType2.setName("URI");
+
+ InputParameterType wrfinput3 = InputParameterType.Factory.newInstance();
+ wrfinput3.setParameterName("WRF_Boundary_File");
+ ParameterType wrfparameterType3 = wrfinput3.addNewParameterType();
+ wrfparameterType3.setType(DataType.URI);
+ wrfparameterType3.setName("URI");
+
+ OutputParameterType wrfOutput1 = OutputParameterType.Factory.newInstance();
+ wrfOutput1.setParameterName("WRF_Output");
+ ParameterType wrfoutparameterType1 = wrfOutput1.addNewParameterType();
+ wrfoutparameterType1.setType(DataType.URI);
+ wrfoutparameterType1.setName("URI");
+
+ OutputParameterType wrfOutput2 = OutputParameterType.Factory.newInstance();
+ wrfOutput2.setParameterName("WRF_Execution_Log");
+ ParameterType wrfoutparameterType2 = wrfOutput2.addNewParameterType();
+ wrfoutparameterType2.setType(DataType.URI);
+ wrfoutparameterType2.setName("URI");
+
+ wrfinputList.add(wrfinput1);
+ wrfinputList.add(wrfinput2);
+ wrfinputList.add(wrfinput3);
+ wrfoutputList.add(wrfOutput1);
+ wrfoutputList.add(wrfOutput2);
+
+ InputParameterType[] wrfinputParamList = wrfinputList.toArray(new InputParameterType[wrfinputList.size()]);
+ OutputParameterType[] wrfoutputParamList = wrfoutputList.toArray(new OutputParameterType[wrfoutputList.size()]);
+
+ wrfServ.getType().setInputParametersArray(wrfinputParamList);
+ wrfServ.getType().setOutputParametersArray(wrfoutputParamList);
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(wrfServ);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ /*
+ Application descriptor creation and saving
+ */
+ ApplicationDescription wrfAppDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType wrfApp = (HpcApplicationDeploymentType) wrfAppDesc.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName wrfName = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ wrfName.setStringValue("WRF");
+ wrfApp.setApplicationName(wrfName);
+ ProjectAccountType wrfprojectAccountType = wrfApp.addNewProjectAccount();
+ wrfprojectAccountType.setProjectAccountNumber("sds128");
+
+ QueueType wrfQueueType = wrfApp.addNewQueue();
+ wrfQueueType.setQueueName("normal");
+
+ wrfApp.setCpuCount(32);
+ wrfApp.setJobType(JobTypeType.MPI);
+ wrfApp.setNodeCount(2);
+ wrfApp.setProcessorsPerNode(1);
+ wrfApp.setMaxWallTime(30);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ wrfApp.setExecutableLocation("/home/ogce/apps/wrf_wrapper.sh");
+
+ /*
+ * Default tmp location
+ */
+ String wrfTempDir = "/oasis/scratch/trestles/ogce/temp_project/";
+
+ wrfApp.setScratchWorkingDirectory(wrfTempDir);
+ wrfApp.setInstalledParentPath("/opt/torque/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(wrfserviceName, trestleshpcHostAddress, wrfAppDesc);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+
+ public void createSlurmDocs() {
+ HostDescription host = new HostDescription(GsisshHostType.type);
+ host.getType().setHostAddress(stampedeHostAddress);
+ host.getType().setHostName(stampedeHostAddress);
+ ((GsisshHostType) host.getType()).setJobManager("slurm");
+ ((GsisshHostType) host.getType()).setInstalledPath("/usr/bin/");
+ ((GsisshHostType) host.getType()).setPort(2222);
+ ((GsisshHostType) host.getType()).setMonitorMode("push");
+
+
+ try {
+ airavataAPI.getApplicationManager().saveHostDescription(host);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ /*
+ * Service Description creation and saving
+ */
+ String serviceName = "SimpleEcho3";
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName(serviceName);
+
+ List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+ List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+
+
+ InputParameterType input = InputParameterType.Factory.newInstance();
+ input.setParameterName("echo_input");
+ ParameterType parameterType = input.addNewParameterType();
+ parameterType.setType(DataType.STRING);
+ parameterType.setName("String");
+
+ OutputParameterType output = OutputParameterType.Factory.newInstance();
+ output.setParameterName("echo_output");
+ ParameterType parameterType1 = output.addNewParameterType();
+ parameterType1.setType(DataType.STRING);
+ parameterType1.setName("String");
+
+ inputList.add(input);
+ outputList.add(output);
+
+ InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+ OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+
+ serv.getType().setInputParametersArray(inputParamList);
+ serv.getType().setOutputParametersArray(outputParamList);
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(serv);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ /*
+ Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name.setStringValue("EchoLocal");
+ app.setApplicationName(name);
+ ProjectAccountType projectAccountType = app.addNewProjectAccount();
+ projectAccountType.setProjectAccountNumber("TG-STA110014S");
+
+ QueueType queueType = app.addNewQueue();
+ queueType.setQueueName("normal");
+
+ app.setCpuCount(1);
+ app.setJobType(JobTypeType.SERIAL);
+ app.setNodeCount(1);
+ app.setProcessorsPerNode(1);
+ app.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir = "/home1/01437/ogce";
+
+
+ app.setScratchWorkingDirectory(tempDir);
+ app.setInstalledParentPath("/usr/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, stampedeHostAddress, appDesc);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+ public void createSGEDocs() {
+ HostDescription host = new HostDescription(GsisshHostType.type);
+ host.getType().setHostAddress(lonestarHostAddress);
+ host.getType().setHostName(lonestarHostAddress);
+ ((GsisshHostType) host.getType()).setJobManager("sge");
+ ((GsisshHostType) host.getType()).setInstalledPath("/opt/sge6.2/bin/lx24-amd64/");
+ ((GsisshHostType) host.getType()).setPort(22);
+ try {
+ airavataAPI.getApplicationManager().saveHostDescription(host);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ /*
+ * Service Description creation and saving
+ */
+ String serviceName = "SimpleEcho4";
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName(serviceName);
+
+ List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+ List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+
+
+ InputParameterType input = InputParameterType.Factory.newInstance();
+ input.setParameterName("echo_input");
+ ParameterType parameterType = input.addNewParameterType();
+ parameterType.setType(DataType.STRING);
+ parameterType.setName("String");
+
+ OutputParameterType output = OutputParameterType.Factory.newInstance();
+ output.setParameterName("echo_output");
+ ParameterType parameterType1 = output.addNewParameterType();
+ parameterType1.setType(DataType.STRING);
+ parameterType1.setName("String");
+
+ inputList.add(input);
+ outputList.add(output);
+
+ InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
+ OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
+
+ serv.getType().setInputParametersArray(inputParamList);
+ serv.getType().setOutputParametersArray(outputParamList);
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(serv);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ /*
+ Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name.setStringValue("EchoLocal");
+ app.setApplicationName(name);
+ ProjectAccountType projectAccountType = app.addNewProjectAccount();
+ projectAccountType.setProjectAccountNumber("TG-STA110014S");
+
+ QueueType queueType = app.addNewQueue();
+ queueType.setQueueName("normal");
+
+ app.setCpuCount(1);
+ app.setJobType(JobTypeType.SERIAL);
+ app.setNodeCount(1);
+ app.setProcessorsPerNode(1);
+ app.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir = "/home1/01437/ogce";
+
+
+ app.setScratchWorkingDirectory(tempDir);
+ app.setInstalledParentPath("/opt/sge6.2/bin/lx24-amd64/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, lonestarHostAddress, appDesc);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+ public void createEchoHostDocs() {
+ String serviceName = "Echo";
+ ServiceDescription serviceDescription = new ServiceDescription();
+ List<InputParameterType> inputParameters = new ArrayList<InputParameterType>();
+ List<OutputParameterType> outputParameters = new ArrayList<OutputParameterType>();
+ serviceDescription.getType().setName(serviceName);
+ serviceDescription.getType().setDescription("Echo service");
+ // Creating input parameters
+ InputParameterType parameter = InputParameterType.Factory.newInstance();
+ parameter.setParameterName("echo_input");
+ parameter.setParameterDescription("echo input");
+ ParameterType parameterType = parameter.addNewParameterType();
+ parameterType.setType(DataType.STRING);
+ parameterType.setName("String");
+ inputParameters.add(parameter);
+
+ // Creating output parameters
+ OutputParameterType outputParameter = OutputParameterType.Factory.newInstance();
+ outputParameter.setParameterName("echo_output");
+ outputParameter.setParameterDescription("Echo output");
+ ParameterType outputParaType = outputParameter.addNewParameterType();
+ outputParaType.setType(DataType.STRING);
+ outputParaType.setName("String");
+ outputParameters.add(outputParameter);
+
+ // Setting input and output parameters to serviceDescriptor
+ serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new InputParameterType[] {}));
+ serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new OutputParameterType[] {}));
+
+ try {
+ airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); // To change body of catch statement use File |
+ // Settings | File Templates.
+ }
+ // Localhost
+ ApplicationDescription applicationDeploymentDescription = new ApplicationDescription();
+ ApplicationDeploymentDescriptionType applicationDeploymentDescriptionType = applicationDeploymentDescription.getType();
+ applicationDeploymentDescriptionType.addNewApplicationName().setStringValue(serviceName);
+ applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
+ applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, "localhost", applicationDeploymentDescription);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); // To change body of catch statement use File |
+ // Settings | File Templates.
+ }
+ // Stampede
+ /*
+ * Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc1 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app1 = (HpcApplicationDeploymentType) appDesc1.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name.setStringValue(serviceName);
+ app1.setApplicationName(name);
+ ProjectAccountType projectAccountType = app1.addNewProjectAccount();
+ projectAccountType.setProjectAccountNumber("TG-STA110014S");
+
+ QueueType queueType = app1.addNewQueue();
+ queueType.setQueueName("normal");
+
+ app1.setCpuCount(1);
+ app1.setJobType(JobTypeType.SERIAL);
+ app1.setNodeCount(1);
+ app1.setProcessorsPerNode(1);
+ app1.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app1.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir = "/home1/01437/ogce";
+
+ app1.setScratchWorkingDirectory(tempDir);
+ app1.setInstalledParentPath("/usr/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, stampedeHostAddress, appDesc1);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); // To change body of catch statement use File |
+ // Settings | File Templates.
+ }
+ // Trestles
+ /*
+ * Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc2 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app2 = (HpcApplicationDeploymentType) appDesc2.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name2 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name2.setStringValue(serviceName);
+ app2.setApplicationName(name);
+ ProjectAccountType projectAccountType2 = app2.addNewProjectAccount();
+ projectAccountType2.setProjectAccountNumber("sds128");
+
+ QueueType queueType2 = app2.addNewQueue();
+ queueType2.setQueueName("normal");
+
+ app2.setCpuCount(1);
+ app2.setJobType(JobTypeType.SERIAL);
+ app2.setNodeCount(1);
+ app2.setProcessorsPerNode(1);
+ app2.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app2.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir2 = "/home/ogce/scratch";
+
+ app2.setScratchWorkingDirectory(tempDir2);
+ app2.setInstalledParentPath("/opt/torque/bin/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, trestleshpcHostAddress, appDesc2);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); // To change body of catch statement use File |
+ // Settings | File Templates.
+ }
+ // Lonestar
+ /*
+ * Application descriptor creation and saving
+ */
+ ApplicationDescription appDesc3 = new ApplicationDescription(HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app3 = (HpcApplicationDeploymentType) appDesc3.getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name3 = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+ name3.setStringValue(serviceName);
+ app3.setApplicationName(name);
+ ProjectAccountType projectAccountType3 = app3.addNewProjectAccount();
+ projectAccountType3.setProjectAccountNumber("TG-STA110014S");
+
+ QueueType queueType3 = app3.addNewQueue();
+ queueType3.setQueueName("normal");
+
+ app3.setCpuCount(1);
+ app3.setJobType(JobTypeType.SERIAL);
+ app3.setNodeCount(1);
+ app3.setProcessorsPerNode(1);
+ app3.setMaxWallTime(10);
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app3.setExecutableLocation("/bin/echo");
+
+ /*
+ * Default tmp location
+ */
+ String tempDir3 = "/home1/01437/ogce";
+
+ app3.setScratchWorkingDirectory(tempDir3);
+ app3.setInstalledParentPath("/opt/sge6.2/bin/lx24-amd64/");
+
+ try {
+ airavataAPI.getApplicationManager().saveApplicationDescription(serviceName, lonestarHostAddress, appDesc3);
+ } catch (AiravataAPIInvocationException e) {
+ e.printStackTrace(); // To change body of catch statement use File |
+ // Settings | File Templates.
+ }
+
+ }
+ public AiravataAPI getAiravataAPI() {
+ return airavataAPI;
+ }
+
+ public void setAiravataAPI(AiravataAPI airavataAPI) {
+ this.airavataAPI = airavataAPI;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
index 78edf60..4166e1e 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
@@ -49,7 +49,10 @@ public abstract class AbstractResource implements Resource {
public static final String APPLICATION_OUTPUT = "ApplicationOutput";
public static final String GATEWAY_PROFILE = "GatewayProfile";
public static final String COMPUTE_RESOURCE_PREFERENCE = "ComputeResourcePreference";
-
+ public static final String BATCH_QUEUE = "BatchQueue";
+ public static final String COMPUTE_RESOURCE_FILE_SYSTEM = "ComputeResourceFileSystem";
+ public static final String JOB_SUBMISSION_INTERFACE = "JobSubmissionInterface";
+
// Compute Resource Table
public final class ComputeResourceConstants {
public static final String RESOURCE_ID = "resourceID";
@@ -226,5 +229,29 @@ public abstract class AbstractResource implements Resource {
public static final String ALLOCATION_PROJECT_NUMBER = "projectNumber";
}
-
+ // Batch Queue Table
+ public final class BatchQueueConstants {
+ public static final String COMPUTE_RESOURCE_ID = "computeResourceId";
+ public static final String MAX_RUNTIME = "maxRuntime";
+ public static final String MAX_JOB_IN_QUEUE = "maxJobInQueue";
+ public static final String QUEUE_DESCRIPTION = "queueDescription";
+ public static final String QUEUE_NAME = "queueName";
+ public static final String MAX_PROCESSORS = "maxProcessors";
+ public static final String MAX_NODES = "maxNodes";
+ }
+
+ // Compute Resource File System Table
+ public final class ComputeResourceFileSystemConstants {
+ public static final String COMPUTE_RESOURCE_ID = "computeResourceId";
+ public static final String PATH = "path";
+ public static final String FILE_SYSTEM = "fileSystem";
+ }
+
+ // Job Submission Interface Table
+ public final class JobSubmissionInterfaceConstants {
+ public static final String JOB_SUBMISSION_INTERFACE_ID = "jobSubmissionInterfaceId";
+ public static final String COMPUTE_RESOURCE_ID = "computeResourceId";
+ public static final String JOB_SUBMISSION_PROTOCOL = "jobSubmissionProtocol";
+ public static final String PRIORITY_ORDER = "priorityOrder";
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
index 84f6889..356c743 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
@@ -240,34 +240,28 @@ public class ApplicationInputResource extends AbstractResource {
em = AppCatalogJPAUtils.getEntityManager();
ApplicationInput existingApplicationInput = em.find(ApplicationInput.class, new AppInput_PK(interfaceID, inputKey));
em.close();
-
+ ApplicationInput applicationInput;
em = AppCatalogJPAUtils.getEntityManager();
em.getTransaction().begin();
- if (existingApplicationInput != null) {
- existingApplicationInput.setInterfaceID(interfaceID);
- ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
- existingApplicationInput.setApplicationInterface(applicationInterface);
- existingApplicationInput.setDataType(dataType);
- existingApplicationInput.setInputKey(inputKey);
- existingApplicationInput.setInputVal(inputVal);
- existingApplicationInput.setMetadata(metadata);
- existingApplicationInput.setAppArgument(appArgument);
- existingApplicationInput.setUserFriendlyDesc(userFriendlyDesc);
- existingApplicationInput.setStandardInput(standareInput);
- em.merge(existingApplicationInput);
+ if (existingApplicationInput == null) {
+ applicationInput = new ApplicationInput();
} else {
- ApplicationInput applicationInput = new ApplicationInput();
- applicationInput.setInterfaceID(interfaceID);
- ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
- applicationInput.setApplicationInterface(applicationInterface);
- applicationInput.setDataType(dataType);
- applicationInput.setInputKey(inputKey);
- applicationInput.setInputVal(inputVal);
- applicationInput.setMetadata(metadata);
- applicationInput.setAppArgument(appArgument);
- applicationInput.setUserFriendlyDesc(userFriendlyDesc);
- applicationInput.setStandardInput(standareInput);
+ applicationInput=existingApplicationInput;
+ }
+ applicationInput.setInterfaceID(interfaceID);
+ ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
+ applicationInput.setApplicationInterface(applicationInterface);
+ applicationInput.setDataType(dataType);
+ applicationInput.setInputKey(inputKey);
+ applicationInput.setInputVal(inputVal);
+ applicationInput.setMetadata(metadata);
+ applicationInput.setAppArgument(appArgument);
+ applicationInput.setUserFriendlyDesc(userFriendlyDesc);
+ applicationInput.setStandardInput(standareInput);
+ if (existingApplicationInput == null) {
em.persist(applicationInput);
+ } else {
+ em.merge(applicationInput);
}
em.getTransaction().commit();
em.close();
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index 160083a..4d6fe9b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -21,18 +21,76 @@
package org.apache.aiaravata.application.catalog.data.util;
-import org.apache.aiaravata.application.catalog.data.model.*;
-import org.apache.aiaravata.application.catalog.data.resources.*;
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.HashMap;
+import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
-import java.util.HashMap;
-import java.util.Map;
+
+import org.apache.aiaravata.application.catalog.data.model.AppEnvironment;
+import org.apache.aiaravata.application.catalog.data.model.AppModuleMapping;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationDeployment;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationInput;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationInterface;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationModule;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationOutput;
+import org.apache.aiaravata.application.catalog.data.model.BatchQueue;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResourceFileSystem;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResourcePreference;
+import org.apache.aiaravata.application.catalog.data.model.DataMovementProtocol;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHExport;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPostJobCommand;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHPreJobCommand;
+import org.apache.aiaravata.application.catalog.data.model.GSISSHSubmission;
+import org.apache.aiaravata.application.catalog.data.model.GatewayProfile;
+import org.apache.aiaravata.application.catalog.data.model.GlobusGKEndpoint;
+import org.apache.aiaravata.application.catalog.data.model.GlobusJobSubmission;
+import org.apache.aiaravata.application.catalog.data.model.GridFTPDMEndpoint;
+import org.apache.aiaravata.application.catalog.data.model.GridFTPDataMovement;
+import org.apache.aiaravata.application.catalog.data.model.HostAlias;
+import org.apache.aiaravata.application.catalog.data.model.HostIPAddress;
+import org.apache.aiaravata.application.catalog.data.model.JobSubmissionInterface;
+import org.apache.aiaravata.application.catalog.data.model.JobSubmissionProtocol;
+import org.apache.aiaravata.application.catalog.data.model.LibraryApendPath;
+import org.apache.aiaravata.application.catalog.data.model.LibraryPrepandPath;
+import org.apache.aiaravata.application.catalog.data.model.SCPDataMovement;
+import org.apache.aiaravata.application.catalog.data.model.SSHSubmission;
+import org.apache.aiaravata.application.catalog.data.resources.AppDeploymentResource;
+import org.apache.aiaravata.application.catalog.data.resources.AppEnvironmentResource;
+import org.apache.aiaravata.application.catalog.data.resources.AppInterfaceResource;
+import org.apache.aiaravata.application.catalog.data.resources.AppModuleMappingResource;
+import org.apache.aiaravata.application.catalog.data.resources.AppModuleResource;
+import org.apache.aiaravata.application.catalog.data.resources.ApplicationInputResource;
+import org.apache.aiaravata.application.catalog.data.resources.ApplicationOutputResource;
+import org.apache.aiaravata.application.catalog.data.resources.BatchQueueResource;
+import org.apache.aiaravata.application.catalog.data.resources.ComputeHostPreferenceResource;
+import org.apache.aiaravata.application.catalog.data.resources.ComputeHostResource;
+import org.apache.aiaravata.application.catalog.data.resources.ComputeResourceFileSystemResource;
+import org.apache.aiaravata.application.catalog.data.resources.DataMovementProtocolResource;
+import org.apache.aiaravata.application.catalog.data.resources.GSISSHExportResource;
+import org.apache.aiaravata.application.catalog.data.resources.GSISSHPostJobCommandResource;
+import org.apache.aiaravata.application.catalog.data.resources.GSISSHPreJobCommandResource;
+import org.apache.aiaravata.application.catalog.data.resources.GSISSHSubmissionResource;
+import org.apache.aiaravata.application.catalog.data.resources.GatewayProfileResource;
+import org.apache.aiaravata.application.catalog.data.resources.GlobusGKEndpointResource;
+import org.apache.aiaravata.application.catalog.data.resources.GlobusJobSubmissionResource;
+import org.apache.aiaravata.application.catalog.data.resources.GridFTPDMEndpointResource;
+import org.apache.aiaravata.application.catalog.data.resources.GridFTPDataMovementResource;
+import org.apache.aiaravata.application.catalog.data.resources.HostAliasResource;
+import org.apache.aiaravata.application.catalog.data.resources.HostIPAddressResource;
+import org.apache.aiaravata.application.catalog.data.resources.JobSubmissionInterfaceResource;
+import org.apache.aiaravata.application.catalog.data.resources.JobSubmissionProtocolResource;
+import org.apache.aiaravata.application.catalog.data.resources.LibraryApendPathResource;
+import org.apache.aiaravata.application.catalog.data.resources.LibraryPrepandPathResource;
+import org.apache.aiaravata.application.catalog.data.resources.Resource;
+import org.apache.aiaravata.application.catalog.data.resources.SCPDataMovementResource;
+import org.apache.aiaravata.application.catalog.data.resources.SSHSubmissionResource;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class AppCatalogJPAUtils {
private final static Logger logger = LoggerFactory.getLogger(AppCatalogJPAUtils.class);
@@ -267,12 +325,64 @@ public class AppCatalogJPAUtils {
logger.error("Object should be a ApplicationInput.", new IllegalArgumentException());
throw new IllegalArgumentException("Object should be a ApplicationInput.");
}
+ case BATCH_QUEUE:
+ if (o instanceof BatchQueue){
+ return createBatchQueue((BatchQueue) o);
+ }else{
+ logger.error("Object should be a Batch Queue.", new IllegalArgumentException());
+ throw new IllegalArgumentException("Object should be a Batch Queue.");
+ }
+ case COMPUTE_RESOURCE_FILE_SYSTEM:
+ if (o instanceof ComputeResourceFileSystem){
+ return createComputeResourceFileSystem((ComputeResourceFileSystem) o);
+ }else{
+ logger.error("Object should be a Compute Resource File System.", new IllegalArgumentException());
+ throw new IllegalArgumentException("Object should be a Compute Resource File System.");
+ }
+ case JOB_SUBMISSION_INTERFACE:
+ if (o instanceof JobSubmissionInterface){
+ return createJobSubmissionInterface((JobSubmissionInterface) o);
+ }else{
+ logger.error("Object should be a Job Submission Interface.", new IllegalArgumentException());
+ throw new IllegalArgumentException("Object should be a Job Submission Interface.");
+ }
default:
logger.error("Illegal data type..", new IllegalArgumentException());
throw new IllegalArgumentException("Illegal data type..");
}
}
-
+
+ private static Resource createJobSubmissionInterface(JobSubmissionInterface o) {
+ JobSubmissionInterfaceResource jobSubmissionInterfaceResource = new JobSubmissionInterfaceResource();
+ jobSubmissionInterfaceResource.setJobSubmissionInterfaceId(o.getJobSubmissionInterfaceId());
+ jobSubmissionInterfaceResource.setComputeResourceId(o.getComputeResourceId());
+ jobSubmissionInterfaceResource.setComputeHostResource((ComputeHostResource)createComputeResource(o.getComputeResource()));
+ jobSubmissionInterfaceResource.setJobSubmissionProtocol(o.getJobSubmissionProtocol());
+ jobSubmissionInterfaceResource.setPriorityOrder(o.getPriorityOrder());
+ return jobSubmissionInterfaceResource;
+ }
+
+ private static Resource createComputeResourceFileSystem(ComputeResourceFileSystem o) {
+ ComputeResourceFileSystemResource computeResourceFileSystemResource = new ComputeResourceFileSystemResource();
+ computeResourceFileSystemResource.setComputeResourceId(o.getComputeResourceId());
+ computeResourceFileSystemResource.setComputeHostResource((ComputeHostResource)createComputeResource(o.getComputeResource()));
+ computeResourceFileSystemResource.setPath(o.getPath());
+ computeResourceFileSystemResource.setFileSystem(o.getFileSystem());
+ return computeResourceFileSystemResource;
+ }
+
+ private static Resource createBatchQueue(BatchQueue o) {
+ BatchQueueResource batchQueueResource = new BatchQueueResource();
+ batchQueueResource.setComputeResourceId(o.getComputeResourceId());
+ batchQueueResource.setComputeHostResource((ComputeHostResource)createComputeResource(o.getComputeResource()));
+ batchQueueResource.setMaxRuntime(o.getMaxRuntime());
+ batchQueueResource.setMaxJobInQueue(o.getMaxJobInQueue());
+ batchQueueResource.setQueueDescription(o.getQueueDescription());
+ batchQueueResource.setQueueName(o.getQueueName());
+ batchQueueResource.setMaxProcessors(o.getMaxProcessors());
+ batchQueueResource.setMaxNodes(o.getMaxNodes());
+ return batchQueueResource;
+ }
private static Resource createComputeResource(ComputeResource o) {
ComputeHostResource hostResource = new ComputeHostResource();
hostResource.setResoureId(o.getResourceID());
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
index 174dfa5..e8ee430 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
@@ -47,5 +47,8 @@ public enum AppCatalogResourceType {
APPLICATION_INPUT,
APPLICATION_OUTPUT,
GATEWAY_PROFILE,
- COMPUTE_RESOURCE_PREFERENCE
+ COMPUTE_RESOURCE_PREFERENCE,
+ BATCH_QUEUE,
+ COMPUTE_RESOURCE_FILE_SYSTEM,
+ JOB_SUBMISSION_INTERFACE
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
index c7ca38d..da522a9 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
@@ -49,6 +49,10 @@
<class>org.apache.aiaravata.application.catalog.data.model.ApplicationOutput</class>
<class>org.apache.aiaravata.application.catalog.data.model.GatewayProfile</class>
<class>org.apache.aiaravata.application.catalog.data.model.ComputeResourcePreference</class>
+ <class>org.apache.aiaravata.application.catalog.data.model.BatchQueue</class>
+ <class>org.apache.aiaravata.application.catalog.data.model.ComputeResourceFileSystem</class>
+ <class>org.apache.aiaravata.application.catalog.data.model.JobSubmissionInterface</class>
+ <class>org.apache.aiaravata.application.catalog.data.model.BatchQueue</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>
</persistence>
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
index 765c50b..c111759 100644
--- a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
+++ b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
@@ -255,7 +255,37 @@ CREATE TABLE COMPUTE_RESOURCE_PREFERENCE
FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY_PROFILE(GATEWAY_ID) ON DELETE CASCADE
);
+CREATE TABLE BATCH_QUEUE
+(
+ COMPUTE_RESOURCE_ID VARCHAR(255) NOT NULL,
+ MAX_RUNTIME INTEGER,
+ MAX_JOB_IN_QUEUE INTEGER,
+ QUEUE_DESCRIPTION VARCHAR(255),
+ QUEUE_NAME VARCHAR(255) NOT NULL,
+ MAX_PROCESSORS INTEGER,
+ MAX_NODES INTEGER,
+ PRIMARY KEY (COMPUTE_RESOURCE_ID,QUEUE_NAME),
+ FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+);
+CREATE TABLE COMPUTE_RESOURCE_FILE_SYSTEM
+(
+ COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
+ PATH VARCHAR (255),
+ FILE_SYSTEM VARCHAR (255) NOT NULL,
+ PRIMARY KEY (COMPUTE_RESOURCE_ID,FILE_SYSTEM),
+ FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE JOB_SUBMISSION_INTERFACE
+(
+ JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+ COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
+ JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
+ PRIORITY_ORDER INTEGER,
+ PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
+ FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
+);
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/registry/jpa-gen/pom.xml
----------------------------------------------------------------------
diff --git a/modules/registry/jpa-gen/pom.xml b/modules/registry/jpa-gen/pom.xml
new file mode 100644
index 0000000..ee9e0ea
--- /dev/null
+++ b/modules/registry/jpa-gen/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under
+ the Apache License, Version 2.0 (theĆ "License"); you may not use this file except in compliance with the License. You may
+ obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to
+ in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+ ANY ~ KIND, either express or implied. See the License for the specific language governing permissions and limitations under
+ the License. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.apache.airavata</groupId>
+ <artifactId>registry</artifactId>
+ <version>0.13-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>jpa-gen</artifactId>
+ <packaging>jar</packaging>
+ <name>JPA Class Data Generator</name>
+ <url>http://airavata.apache.org/</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/airavata/blob/2c32d42b/modules/registry/jpa-gen/src/main/java/appcatalog/BatchQueueGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/jpa-gen/src/main/java/appcatalog/BatchQueueGenerator.java b/modules/registry/jpa-gen/src/main/java/appcatalog/BatchQueueGenerator.java
new file mode 100644
index 0000000..7e760e1
--- /dev/null
+++ b/modules/registry/jpa-gen/src/main/java/appcatalog/BatchQueueGenerator.java
@@ -0,0 +1,86 @@
+/*
+ *
+ * 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;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class BatchQueueGenerator {
+ private static SQLData createSQLData() {
+ SQLData data = new SQLData();
+ data.setTableName("BATCH_QUEUE");
+ data.getFieldData().put("COMPUTE_RESOURCE_ID", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("QUEUE_NAME", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("QUEUE_DESCRIPTION", Arrays.asList(new String[]{"VARCHAR", "(255)",}));
+ data.getFieldData().put("MAX_RUNTIME", Arrays.asList(new String[]{"INTEGER"}));
+ data.getFieldData().put("MAX_NODES", Arrays.asList(new String[]{"INTEGER"}));
+ data.getFieldData().put("MAX_PROCESSORS", Arrays.asList(new String[]{"INTEGER"}));
+ data.getFieldData().put("MAX_JOB_IN_QUEUE", Arrays.asList(new String[]{"INTEGER"}));
+ data.getPrimaryKeys().add("COMPUTE_RESOURCE_ID");
+ data.getPrimaryKeys().add("QUEUE_NAME");
+ data.getForiegnKeys().put("COMPUTE_RESOURCE_ID", new SQLData.ForiegnKeyData("COMPUTE_RESOURCE(RESOURCE_ID)","ComputeResource","ComputeHostResource"));
+ 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();
+ 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/2c32d42b/modules/registry/jpa-gen/src/main/java/appcatalog/FileSystemsGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/jpa-gen/src/main/java/appcatalog/FileSystemsGenerator.java b/modules/registry/jpa-gen/src/main/java/appcatalog/FileSystemsGenerator.java
new file mode 100644
index 0000000..b3194e4
--- /dev/null
+++ b/modules/registry/jpa-gen/src/main/java/appcatalog/FileSystemsGenerator.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;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class FileSystemsGenerator {
+ private static SQLData createSQLData() {
+ SQLData data = new SQLData();
+ data.setTableName("COMPUTE_RESOURCE_FILE_SYSTEM");
+ data.getFieldData().put("COMPUTE_RESOURCE_ID", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("FILE_SYSTEM", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("PATH", Arrays.asList(new String[]{"VARCHAR", "(255)",}));
+ data.getPrimaryKeys().add("COMPUTE_RESOURCE_ID");
+ data.getPrimaryKeys().add("FILE_SYSTEM");
+ data.getForiegnKeys().put("COMPUTE_RESOURCE_ID", new SQLData.ForiegnKeyData("COMPUTE_RESOURCE(RESOURCE_ID)","ComputeResource","ComputeHostResource"));
+ 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();
+ 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/2c32d42b/modules/registry/jpa-gen/src/main/java/appcatalog/JobSubmissionInterfaceGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/jpa-gen/src/main/java/appcatalog/JobSubmissionInterfaceGenerator.java b/modules/registry/jpa-gen/src/main/java/appcatalog/JobSubmissionInterfaceGenerator.java
new file mode 100644
index 0000000..f556e51
--- /dev/null
+++ b/modules/registry/jpa-gen/src/main/java/appcatalog/JobSubmissionInterfaceGenerator.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;
+
+import generators.JPAClassGenerator;
+import generators.JPAResourceClassGenerator;
+import generators.SQLGenerator;
+
+import java.util.Arrays;
+
+import model.JPAClassModel;
+import model.JPAResourceClassModel;
+import model.SQLData;
+
+public class JobSubmissionInterfaceGenerator {
+ private static SQLData createSQLData() {
+ SQLData data = new SQLData();
+ data.setTableName("JOB_SUBMISSION_INTERFACE");
+ data.getFieldData().put("COMPUTE_RESOURCE_ID", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("JOB_SUBMISSION_INTERFACE_ID", Arrays.asList(new String[]{"VARCHAR", "(255)", "NOT", "NULL"}));
+ data.getFieldData().put("JOB_SUBMISSION_PROTOCOL", Arrays.asList(new String[]{"VARCHAR", "(255)","NOT", "NULL"}));
+ data.getFieldData().put("PRIORITY_ORDER", Arrays.asList(new String[]{"INTEGER"}));
+ data.getPrimaryKeys().add("COMPUTE_RESOURCE_ID");
+ data.getPrimaryKeys().add("JOB_SUBMISSION_INTERFACE_ID");
+ data.getForiegnKeys().put("COMPUTE_RESOURCE_ID", new SQLData.ForiegnKeyData("COMPUTE_RESOURCE(RESOURCE_ID)","ComputeResource","ComputeHostResource"));
+ 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();
+ 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/2c32d42b/modules/registry/jpa-gen/src/main/java/generators/AbstractGenerator.java
----------------------------------------------------------------------
diff --git a/modules/registry/jpa-gen/src/main/java/generators/AbstractGenerator.java b/modules/registry/jpa-gen/src/main/java/generators/AbstractGenerator.java
new file mode 100644
index 0000000..b4fb643
--- /dev/null
+++ b/modules/registry/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);
+ }
+}