airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chath...@apache.org
Subject [1/7] adding thrift generated classes AIRAVATA-994
Date Thu, 06 Feb 2014 16:33:26 GMT
Updated Branches:
  refs/heads/master da4c153a4 -> b8152e39f


http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
new file mode 100644
index 0000000..84eeda3
--- /dev/null
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -0,0 +1,130 @@
+/*
+ *
+ * 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.persistance.registry.jpa.impl;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.model.experiment.BasicMetadata;
+import org.apache.airavata.model.experiment.ConfigurationData;
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentConfigDataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.ExperimentMetadataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
+import org.apache.airavata.registry.cpi.DependentDataType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.List;
+import java.util.UUID;
+
+public class ExperimentRegistry {
+    private GatewayRegistry gatewayRegistry;
+    private final static Logger logger = LoggerFactory.getLogger(ExperimentRegistry.class);
+
+    public void add(BasicMetadata basicMetadata) {
+        try {
+            gatewayRegistry = new GatewayRegistry();
+            GatewayResource gateway = gatewayRegistry.getGateway();
+            ExperimentMetadataResource exBasicData = gateway.createBasicMetada(getExperimentID(basicMetadata.getExperimentName()));
+            exBasicData.setExperimentName(basicMetadata.getExperimentName());
+            exBasicData.setDescription(basicMetadata.getExperimentDescription());
+            exBasicData.setExecutionUser(basicMetadata.getUserName());
+            exBasicData.setSubmittedDate(getCurrentTimestamp());
+            exBasicData.setShareExp(basicMetadata.isSetShareExperimentPublicly());
+            exBasicData.save();
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata-server properties", e.getMessage());
+        }
+    }
+
+    public void add(ConfigurationData configurationData, String experimentID) {
+        try {
+            gatewayRegistry = new GatewayRegistry();
+            GatewayResource gateway = gatewayRegistry.getGateway();
+            ExperimentMetadataResource exBasicData = (ExperimentMetadataResource)gateway.get(ResourceType.EXPERIMENT_METADATA,
experimentID);
+            ExperimentConfigDataResource exConfigData = (ExperimentConfigDataResource)exBasicData.create(ResourceType.EXPERIMENT_CONFIG_DATA);
+            BasicMetadata updatedBasicMetadata = configurationData.getBasicMetadata();
+            if (updatedBasicMetadata != null){
+                if (updatedBasicMetadata.getExperimentName() != null && !updatedBasicMetadata.getExperimentName().equals("")){
+                    exBasicData.setExperimentName(updatedBasicMetadata.getExperimentName());
+                }
+                if (updatedBasicMetadata.getExperimentDescription() != null && !updatedBasicMetadata.getExperimentDescription().equals("")){
+                    exBasicData.setDescription(updatedBasicMetadata.getExperimentDescription());
+                }
+                if (updatedBasicMetadata.getUserName() != null && !updatedBasicMetadata.getUserName().equals("")){
+                    exBasicData.setExecutionUser(updatedBasicMetadata.getUserName());
+                }
+                exBasicData.setShareExp(updatedBasicMetadata.isSetShareExperimentPublicly());
+                exBasicData.save();
+            }
+            exConfigData.setExMetadata(exBasicData);
+            exConfigData.setApplicationID(configurationData.getApplicationId());
+            exConfigData.setApplicationVersion(configurationData.getApplicationVersion());
+            exConfigData.setWorkflowTemplateId(configurationData.getWorkflowTemplateId());
+            exConfigData.setWorkflowTemplateVersion(configurationData.getWorklfowTemplateVersion());
+
+            exConfigData.setCpuCount(configurationData.getComputationalResourceScheduling().getTotalCPUCount());
+            exConfigData.setAiravataAutoSchedule(configurationData.getComputationalResourceScheduling().isAiravataAutoSchedule());
+            exConfigData.setOverrideManualSchedule(configurationData.getComputationalResourceScheduling().isOverrideManualScheduledParams());
+            exConfigData.setResourceHostID(configurationData.getComputationalResourceScheduling().getResourceHostId());
+
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata-server properties", e.getMessage());
+        }
+    }
+
+    public String getExperimentID (String experimentName){
+        return experimentName + "_" + UUID.randomUUID();
+    }
+
+    public void update(DependentDataType dataType, Object newObjectToUpdate) {
+
+    }
+
+    public void update(DependentDataType dataType, Object identifier, Object field, Object
value) {
+
+    }
+
+    public List<Object> get(DependentDataType dataType, Object filteredBy, Object value)
{
+        return null;
+    }
+
+    public Object getValue(DependentDataType dataType, Object identifier, Object field) {
+        return null;
+    }
+
+    public void remove(DependentDataType dataType, Object identifier) {
+
+    }
+
+    public boolean isExist(DependentDataType dataType, Object identifier) {
+        return false;
+    }
+
+    public Timestamp getCurrentTimestamp() {
+        Calendar calender = Calendar.getInstance();
+        java.util.Date d = calender.getTime();
+        return new Timestamp(d.getTime());
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
new file mode 100644
index 0000000..931f62f
--- /dev/null
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * 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.persistance.registry.jpa.impl;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
+import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
+
+public class GatewayRegistry {
+    public GatewayResource getGateway () throws ApplicationSettingsException {
+        GatewayResource gateway = (GatewayResource)ResourceUtils.getGateway(ServerSettings.getSystemUserGateway());
+        return gateway;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
new file mode 100644
index 0000000..bd1be77
--- /dev/null
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -0,0 +1,127 @@
+/*
+ *
+ * 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.persistance.registry.jpa.impl;
+
+import org.apache.airavata.model.experiment.BasicMetadata;
+import org.apache.airavata.model.experiment.ConfigurationData;
+import org.apache.airavata.registry.cpi.DataType;
+import org.apache.airavata.registry.cpi.TopLevelDataType;
+import org.apache.airavata.registry.cpi.DependentDataType;
+import org.apache.airavata.registry.cpi.Registry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+public class RegistryImpl implements Registry {
+    private final static Logger logger = LoggerFactory.getLogger(RegistryImpl.class);
+    ExperimentRegistry experimentRegistry = new ExperimentRegistry();
+
+    public void add(TopLevelDataType dataType, Object newObjectToAdd) {
+        switch (dataType){
+            case EXPERIMENT_BASIC_DATA:
+                experimentRegistry.add((BasicMetadata)newObjectToAdd);
+                break;
+            default:
+                logger.error("Unsupported data type", new UnsupportedOperationException());
+                throw new UnsupportedOperationException();
+        }
+    }
+
+    @Override
+    public void add(DependentDataType dataType, Object newObjectToAdd, Object dependentIdentifier)
{
+        switch (dataType){
+            case EXPERIMENT_CONFIGURATION_DATA:
+                experimentRegistry.add((ConfigurationData)newObjectToAdd, (String)dependentIdentifier);
+                break;
+            case EXPERIMENT_SUMMARY:
+                break;
+            case EXPERIMENT_GENERATED_DATA:
+                break;
+            case EXECUTION_ERROR:
+                break;
+            default:
+                logger.error("Unsupported data type", new UnsupportedOperationException());
+                throw new UnsupportedOperationException();
+        }
+
+    }
+
+    @Override
+    public void update(TopLevelDataType dataType, Object newObjectToUpdate) {
+
+    }
+
+    @Override
+    public void update(DependentDataType dataType, Object newObjectToUpdate, Object dependentIdentifier)
{
+
+    }
+
+    @Override
+    public void update(DataType dataType, Object identifier, Object field, Object value)
{
+
+    }
+
+    @Override
+    public List<Object> get(DataType dataType, Object filteredBy, Object value) {
+        return null;
+    }
+
+    @Override
+    public Object getValue(DataType dataType, Object identifier, Object field) {
+        return null;
+    }
+
+    @Override
+    public void remove(DataType dataType, Object identifier) {
+
+    }
+
+    @Override
+    public boolean isExist(DataType dataType, Object identifier) {
+        return false;
+    }
+
+    public void update(DependentDataType dataType, Object newObjectToUpdate) {
+
+    }
+
+    public void update(DependentDataType dataType, Object identifier, Object field, Object
value) {
+
+    }
+
+    public List<Object> get(DependentDataType dataType, Object filteredBy, Object value)
{
+        return null;
+    }
+
+    public Object getValue(DependentDataType dataType, Object identifier, Object field) {
+        return null;
+    }
+
+    public void remove(DependentDataType dataType, Object identifier) {
+
+    }
+
+    public boolean isExist(DependentDataType dataType, Object identifier) {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
index 8ba17d4..dc68cb3 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
@@ -37,7 +37,6 @@ public class Experiment_Configuration_Data {
     private int total_cpu_count;
     @Column(name = "NODE_COUNT")
     private int node_count;
-
     @Column(name = "NUMBER_OF_THREADS")
     private int number_of_threads;
     @Column(name = "QUEUE_NAME")
@@ -50,13 +49,12 @@ public class Experiment_Configuration_Data {
     private int total_physical_memory;
     @Column(name = "COMPUTATIONAL_PROJECT_ACCOUNT")
     private String computational_project_account;
-
     @Column(name = "AIRAVATA_AUTO_SCHEDULE")
     private boolean airavata_auto_schedule;
     @Column(name = "OVERRIDE_MANUAL_SCHEDULE_PARAMS")
     private boolean override_manual_schedule;
-    @Column(name = "WORKING_DIR")
-    private String working_dir;
+    @Column(name = "UNIQUE_WORKING_DIR")
+    private String unique_working_dir;
     @Column(name = "STAGE_INPUT_FILES_TO_WORKING_DIR")
     private boolean stage_input_files_to_working_dir;
     @Column(name = "OUTPUT_DATA_DIR")
@@ -67,6 +65,23 @@ public class Experiment_Configuration_Data {
     private boolean persist_output_data;
     @Column(name = "CLEAN_AFTER_JOB")
     private boolean clean_after_job;
+    @Column(name = "APPLICATION_ID")
+    private String application_id;
+    @Column(name = "APPLICATION_VERSION")
+    private String application_version;
+    @Column(name = "WORKFLOW_TEMPLATE_ID")
+    private String workflow_template_id;
+    @Column(name = "WORKFLOW_TEMPLATE_VERSION")
+    private String workflow_template_version;
+    @Column(name = "WORKING_DIR_PARENT")
+    private String working_dir_parent;
+    @Column(name = "START_EXECUTION_AT")
+    private String start_execution_at;
+    @Column(name = "EXECUTE_BEFORE")
+    private String execute_before;
+    @Column(name = "NUMBER_OF_RETRIES")
+    private int number_of_retries;
+
     @Lob
     @Column(name = "EXPERIMENT_CONFIG_DATA")
     private byte[] experiment_config_data;
@@ -167,14 +182,6 @@ public class Experiment_Configuration_Data {
         this.override_manual_schedule = override_manual_schedule;
     }
 
-    public String getWorking_dir() {
-        return working_dir;
-    }
-
-    public void setWorking_dir(String working_dir) {
-        this.working_dir = working_dir;
-    }
-
     public boolean isStage_input_files_to_working_dir() {
         return stage_input_files_to_working_dir;
     }
@@ -222,4 +229,76 @@ public class Experiment_Configuration_Data {
     public void setExperiment_config_data(byte[] experiment_config_data) {
         this.experiment_config_data = experiment_config_data;
     }
+
+    public String getUnique_working_dir() {
+        return unique_working_dir;
+    }
+
+    public void setUnique_working_dir(String unique_working_dir) {
+        this.unique_working_dir = unique_working_dir;
+    }
+
+    public String getApplication_id() {
+        return application_id;
+    }
+
+    public void setApplication_id(String application_id) {
+        this.application_id = application_id;
+    }
+
+    public String getApplication_version() {
+        return application_version;
+    }
+
+    public void setApplication_version(String application_version) {
+        this.application_version = application_version;
+    }
+
+    public String getWorkflow_template_id() {
+        return workflow_template_id;
+    }
+
+    public void setWorkflow_template_id(String workflow_template_id) {
+        this.workflow_template_id = workflow_template_id;
+    }
+
+    public String getWorkflow_template_version() {
+        return workflow_template_version;
+    }
+
+    public void setWorkflow_template_version(String workflow_template_version) {
+        this.workflow_template_version = workflow_template_version;
+    }
+
+    public String getWorking_dir_parent() {
+        return working_dir_parent;
+    }
+
+    public void setWorking_dir_parent(String working_dir_parent) {
+        this.working_dir_parent = working_dir_parent;
+    }
+
+    public String getStart_execution_at() {
+        return start_execution_at;
+    }
+
+    public void setStart_execution_at(String start_execution_at) {
+        this.start_execution_at = start_execution_at;
+    }
+
+    public String getExecute_before() {
+        return execute_before;
+    }
+
+    public void setExecute_before(String execute_before) {
+        this.execute_before = execute_before;
+    }
+
+    public int getNumber_of_retries() {
+        return number_of_retries;
+    }
+
+    public void setNumber_of_retries(int number_of_retries) {
+        this.number_of_retries = number_of_retries;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
index 09272cb..72b2ef6 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
@@ -53,6 +53,15 @@ public class ExperimentConfigDataResource extends AbstractResource {
     private String dataRegURL;
     private boolean persistOutputData;
     private boolean cleanAfterJob;
+    private String applicationID;
+    private String applicationVersion;
+    private String workflowTemplateId;
+    private String workflowTemplateVersion;
+    private String workingDirParent;
+    private String startExecutionAt;
+    private String executeBefore;
+    private int numberOfRetries;
+
     private byte[] request;
 
     public ExperimentMetadataResource getExMetadata() {
@@ -207,6 +216,74 @@ public class ExperimentConfigDataResource extends AbstractResource {
         this.request = request;
     }
 
+    public static Logger getLogger() {
+        return logger;
+    }
+
+    public String getApplicationID() {
+        return applicationID;
+    }
+
+    public void setApplicationID(String applicationID) {
+        this.applicationID = applicationID;
+    }
+
+    public String getApplicationVersion() {
+        return applicationVersion;
+    }
+
+    public void setApplicationVersion(String applicationVersion) {
+        this.applicationVersion = applicationVersion;
+    }
+
+    public String getWorkflowTemplateId() {
+        return workflowTemplateId;
+    }
+
+    public void setWorkflowTemplateId(String workflowTemplateId) {
+        this.workflowTemplateId = workflowTemplateId;
+    }
+
+    public String getWorkflowTemplateVersion() {
+        return workflowTemplateVersion;
+    }
+
+    public void setWorkflowTemplateVersion(String workflowTemplateVersion) {
+        this.workflowTemplateVersion = workflowTemplateVersion;
+    }
+
+    public String getWorkingDirParent() {
+        return workingDirParent;
+    }
+
+    public void setWorkingDirParent(String workingDirParent) {
+        this.workingDirParent = workingDirParent;
+    }
+
+    public String getStartExecutionAt() {
+        return startExecutionAt;
+    }
+
+    public void setStartExecutionAt(String startExecutionAt) {
+        this.startExecutionAt = startExecutionAt;
+    }
+
+    public String getExecuteBefore() {
+        return executeBefore;
+    }
+
+    public void setExecuteBefore(String executeBefore) {
+        this.executeBefore = executeBefore;
+    }
+
+    public int getNumberOfRetries() {
+        return numberOfRetries;
+    }
+
+    public void setNumberOfRetries(int numberOfRetries) {
+        this.numberOfRetries = numberOfRetries;
+    }
+
     public Resource create(ResourceType type) {
         logger.error("Unsupported resource type for experiment config data resource.", new
UnsupportedOperationException());
         throw new UnsupportedOperationException();
@@ -251,7 +328,15 @@ public class ExperimentConfigDataResource extends AbstractResource {
         exconfig.setTotal_cpu_count(cpuCount);
         exconfig.setTotal_physical_memory(physicalMemory);
         exconfig.setWalltime_limit(wallTimeLimit);
-        exconfig.setWorking_dir(workingDir);
+        exconfig.setUnique_working_dir(workingDir);
+        exconfig.setWorking_dir_parent(workingDirParent);
+        exconfig.setApplication_id(applicationID);
+        exconfig.setApplication_version(applicationVersion);
+        exconfig.setWorkflow_template_id(workflowTemplateId);
+        exconfig.setWorkflow_template_version(workflowTemplateVersion);
+        exconfig.setStart_execution_at(startExecutionAt);
+        exconfig.setExecute_before(executeBefore);
+        exconfig.setNumber_of_retries(numberOfRetries);
 
         if (existingConfig != null){
             existingConfig.setAiravata_auto_schedule(isAiravataAutoSchedule());
@@ -272,7 +357,16 @@ public class ExperimentConfigDataResource extends AbstractResource {
             existingConfig.setTotal_cpu_count(cpuCount);
             existingConfig.setTotal_physical_memory(physicalMemory);
             existingConfig.setWalltime_limit(wallTimeLimit);
-            existingConfig.setWorking_dir(workingDir);
+            existingConfig.setUnique_working_dir(workingDir);
+            existingConfig.setUnique_working_dir(workingDir);
+            existingConfig.setWorking_dir_parent(workingDirParent);
+            existingConfig.setApplication_id(applicationID);
+            existingConfig.setApplication_version(applicationVersion);
+            existingConfig.setWorkflow_template_id(workflowTemplateId);
+            existingConfig.setWorkflow_template_version(workflowTemplateVersion);
+            existingConfig.setStart_execution_at(startExecutionAt);
+            existingConfig.setExecute_before(executeBefore);
+            existingConfig.setNumber_of_retries(numberOfRetries);
             exconfig = em.merge(existingConfig);
         }
         else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
index 31ddfc1..5e030fb 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
@@ -781,5 +781,11 @@ public class GatewayResource extends AbstractResource {
     	dataResource.setExperimentID(experimentID);
     	return dataResource;
     }
+
+    public ExperimentMetadataResource createBasicMetada (String experimentID){
+        ExperimentMetadataResource metadataResource = (ExperimentMetadataResource)create(ResourceType.EXPERIMENT_METADATA);
+        metadataResource.setExpID(experimentID);
+        return metadataResource;
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
index 417a724..e9703b5 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
@@ -569,7 +569,15 @@ public class Utils {
         exConfigDataResource.setStageInputsToWDir(o.isStage_input_files_to_working_dir());
         exConfigDataResource.setWallTimeLimit(o.getWalltime_limit());
         exConfigDataResource.setOverrideManualSchedule(o.isOverride_manual_schedule());
-        exConfigDataResource.setWorkingDir(o.getWorking_dir());
+        exConfigDataResource.setWorkingDir(o.getUnique_working_dir());
+        exConfigDataResource.setWorkingDirParent(o.getWorking_dir_parent());
+        exConfigDataResource.setApplicationID(o.getApplication_id());
+        exConfigDataResource.setApplicationVersion(o.getApplication_version());
+        exConfigDataResource.setWorkflowTemplateId(o.getWorkflow_template_id());
+        exConfigDataResource.setWorkflowTemplateVersion(o.getWorkflow_template_version());
+        exConfigDataResource.setStartExecutionAt(o.getStart_execution_at());
+        exConfigDataResource.setExecuteBefore(o.getExecute_before());
+        exConfigDataResource.setNumberOfRetries(o.getNumber_of_retries());
         return exConfigDataResource;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-derby.sql
b/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-derby.sql
index c5a9065..04e25c0 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-derby.sql
@@ -151,6 +151,10 @@ CREATE TABLE EXPERIMENT_SUMMARY
 CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
 (
           EXPERIMENT_ID VARCHAR(255) NOT NULL,
+          APPLICATION_ID VARCHAR(255),
+          APPLICATION_VERSION VARCHAR(255),
+          WORKFLOW_TEMPLATE_ID VARCHAR(255),
+          WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
           RESOURCE_HOST_ID VARCHAR (255),
           TOTAL_CPU_COUNT INTEGER,
           NODE_COUNT INTEGER,
@@ -162,12 +166,16 @@ CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
           COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
           AIRAVATA_AUTO_SCHEDULE SMALLINT,
           OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT,
-          WORKING_DIR VARCHAR(255),
+          WORKING_DIR_PARENT VARCHAR(255),
+          UNIQUE_WORKING_DIR VARCHAR(255),
           STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
           OUTPUT_DATA_DIR VARCHAR(255),
           DATA_REG_URL VARCHAR (255),
           PERSIST_OUTPUT_DATA SMALLINT,
           CLEAN_AFTER_JOB SMALLINT,
+          START_EXECUTION_AT VARCHAR(255),
+          EXECUTE_BEFORE VARCHAR(255),
+          NUMBER_OF_RETRIES INTEGER,
           EXPERIMENT_CONFIG_DATA BLOB,
           PRIMARY KEY (EXPERIMENT_ID),
           FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT_METADATA(EXPERIMENT_ID) ON DELETE
CASCADE

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-mysql.sql
b/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-mysql.sql
index f5e9f4f..ac38407 100644
--- a/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-mysql.sql
+++ b/modules/registry/airavata-jpa-registry/src/main/resources/airavata-registry-mysql.sql
@@ -153,6 +153,10 @@ CREATE TABLE EXPERIMENT_SUMMARY
 CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
 (
           EXPERIMENT_ID VARCHAR(255) NOT NULL,
+          APPLICATION_ID VARCHAR(255),
+          APPLICATION_VERSION VARCHAR(255),
+          WORKFLOW_TEMPLATE_ID VARCHAR(255),
+          WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
           RESOURCE_HOST_ID VARCHAR (255),
           TOTAL_CPU_COUNT INT(11),
           NODE_COUNT INT(11),
@@ -164,12 +168,16 @@ CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
           COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
           AIRAVATA_AUTO_SCHEDULE SMALLINT,
           OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT,
-          WORKING_DIR VARCHAR(255),
+          WORKING_DIR_PARENT VARCHAR(255),
+          UNIQUE_WORKING_DIR VARCHAR(255),
           STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
           OUTPUT_DATA_DIR VARCHAR(255),
           DATA_REG_URL VARCHAR (255),
           PERSIST_OUTPUT_DATA SMALLINT,
           CLEAN_AFTER_JOB SMALLINT,
+          START_EXECUTION_AT VARCHAR(255),
+          EXECUTE_BEFORE VARCHAR(255),
+          NUMBER_OF_RETRIES INTEGER,
           EXPERIMENT_CONFIG_DATA BLOB,
           PRIMARY KEY (EXPERIMENT_ID),
           FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT_METADATA(EXPERIMENT_ID) ON DELETE
CASCADE

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-jpa-registry/src/test/resources/airavata-registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/test/resources/airavata-registry-derby.sql
b/modules/registry/airavata-jpa-registry/src/test/resources/airavata-registry-derby.sql
index c5a9065..04e25c0 100644
--- a/modules/registry/airavata-jpa-registry/src/test/resources/airavata-registry-derby.sql
+++ b/modules/registry/airavata-jpa-registry/src/test/resources/airavata-registry-derby.sql
@@ -151,6 +151,10 @@ CREATE TABLE EXPERIMENT_SUMMARY
 CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
 (
           EXPERIMENT_ID VARCHAR(255) NOT NULL,
+          APPLICATION_ID VARCHAR(255),
+          APPLICATION_VERSION VARCHAR(255),
+          WORKFLOW_TEMPLATE_ID VARCHAR(255),
+          WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
           RESOURCE_HOST_ID VARCHAR (255),
           TOTAL_CPU_COUNT INTEGER,
           NODE_COUNT INTEGER,
@@ -162,12 +166,16 @@ CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
           COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
           AIRAVATA_AUTO_SCHEDULE SMALLINT,
           OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT,
-          WORKING_DIR VARCHAR(255),
+          WORKING_DIR_PARENT VARCHAR(255),
+          UNIQUE_WORKING_DIR VARCHAR(255),
           STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
           OUTPUT_DATA_DIR VARCHAR(255),
           DATA_REG_URL VARCHAR (255),
           PERSIST_OUTPUT_DATA SMALLINT,
           CLEAN_AFTER_JOB SMALLINT,
+          START_EXECUTION_AT VARCHAR(255),
+          EXECUTE_BEFORE VARCHAR(255),
+          NUMBER_OF_RETRIES INTEGER,
           EXPERIMENT_CONFIG_DATA BLOB,
           PRIMARY KEY (EXPERIMENT_ID),
           FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT_METADATA(EXPERIMENT_ID) ON DELETE
CASCADE

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/airavata-registry-test/src/test/resources/airavata-registry-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-registry-test/src/test/resources/airavata-registry-derby.sql
b/modules/registry/airavata-registry-test/src/test/resources/airavata-registry-derby.sql
index c5a9065..04e25c0 100644
--- a/modules/registry/airavata-registry-test/src/test/resources/airavata-registry-derby.sql
+++ b/modules/registry/airavata-registry-test/src/test/resources/airavata-registry-derby.sql
@@ -151,6 +151,10 @@ CREATE TABLE EXPERIMENT_SUMMARY
 CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
 (
           EXPERIMENT_ID VARCHAR(255) NOT NULL,
+          APPLICATION_ID VARCHAR(255),
+          APPLICATION_VERSION VARCHAR(255),
+          WORKFLOW_TEMPLATE_ID VARCHAR(255),
+          WORKFLOW_TEMPLATE_VERSION VARCHAR(255),
           RESOURCE_HOST_ID VARCHAR (255),
           TOTAL_CPU_COUNT INTEGER,
           NODE_COUNT INTEGER,
@@ -162,12 +166,16 @@ CREATE TABLE EXPERIMENT_CONFIGURATION_DATA
           COMPUTATIONAL_PROJECT_ACCOUNT VARCHAR(255),
           AIRAVATA_AUTO_SCHEDULE SMALLINT,
           OVERRIDE_MANUAL_SCHEDULE_PARAMS SMALLINT,
-          WORKING_DIR VARCHAR(255),
+          WORKING_DIR_PARENT VARCHAR(255),
+          UNIQUE_WORKING_DIR VARCHAR(255),
           STAGE_INPUT_FILES_TO_WORKING_DIR SMALLINT,
           OUTPUT_DATA_DIR VARCHAR(255),
           DATA_REG_URL VARCHAR (255),
           PERSIST_OUTPUT_DATA SMALLINT,
           CLEAN_AFTER_JOB SMALLINT,
+          START_EXECUTION_AT VARCHAR(255),
+          EXECUTE_BEFORE VARCHAR(255),
+          NUMBER_OF_RETRIES INTEGER,
           EXPERIMENT_CONFIG_DATA BLOB,
           PRIMARY KEY (EXPERIMENT_ID),
           FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT_METADATA(EXPERIMENT_ID) ON DELETE
CASCADE

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DependentDataType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DependentDataType.java
b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DependentDataType.java
new file mode 100644
index 0000000..843f543
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DependentDataType.java
@@ -0,0 +1,10 @@
+package org.apache.airavata.registry.cpi;
+
+public enum DependentDataType {
+    EXPERIMENT_SUMMARY,
+    EXPERIMENT_CONFIGURATION_DATA,
+    EXPERIMENT_GENERATED_DATA,
+    MONITORING_DATA,
+    PROVENANCE_DATA,
+    EXECUTION_ERROR
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
index a740f09..7bc9198 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/Registry.java
@@ -1,5 +1,6 @@
 package org.apache.airavata.registry.cpi;
 
+import javax.xml.crypto.Data;
 import java.util.List;
 
 /**
@@ -15,7 +16,32 @@ public interface Registry {
      *                       thrift model object. In experiment case this object can be BasicMetadata,
ConfigurationData
      *                       etc
      */
-    public void add(DataType dataType, Object newObjectToAdd);
+    public void add(TopLevelDataType dataType, Object newObjectToAdd);
+
+    /**
+     * This method is to add an object in to the registry
+     * @param dataType Data type is a predefined type which the programmer should choose
according to the object he
+     *                 is going to save in to registry
+     * @param newObjectToAdd Object which contains the fields that need to be saved in to
registry. This object is a
+     *                       thrift model object. In experiment case this object can be BasicMetadata,
ConfigurationData
+     *                       etc
+     * @param dependentIdentifier Object which contains the identifier if the object that
is going to add is not a top
+     *                            level object in the data model. If it is a top level object,
programmer can pass it as
+     *                            null
+     */
+    public void add(DependentDataType dataType, Object newObjectToAdd, Object dependentIdentifier);
+
+    /**
+     * This method is to update the whole object in registry
+     * @param dataType Data type is a predefined type which the programmer should choose
according to the object he
+     *                 is going to save in to registry
+     * @param newObjectToUpdate Object which contains the fields that need to be updated
in to registry. This object is a
+     *                       thrift model object. In experiment case this object can be BasicMetadata,
ConfigurationData
+     *                       etc. CPI programmer can only fill necessary fields that need
to be updated. He does not
+     *                       have to fill the whole object. He needs to only fill the mandatory
fields and whatever the
+     *                       other fields that need to be updated.
+     */
+    public void update(TopLevelDataType dataType, Object newObjectToUpdate);
 
     /**
      * This method is to update the whole object in registry
@@ -26,9 +52,11 @@ public interface Registry {
      *                       etc. CPI programmer can only fill necessary fields that need
to be updated. He does not
      *                       have to fill the whole object. He needs to only fill the mandatory
fields and whatever the
      *                       other fields that need to be updated.
-     *
+     * @param dependentIdentifier Object which contains the identifier if the object that
is going to add is not a top
+     *                            level object in the data model. If it is a top level object,
programmer can pass it as
+     *                            null
      */
-    public void update(DataType dataType, Object newObjectToUpdate);
+    public void update(DependentDataType dataType, Object newObjectToUpdate, Object dependentIdentifier);
 
     /**
      * This method is to update a specific field of the data model

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/TopLevelDataType.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/TopLevelDataType.java
b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/TopLevelDataType.java
new file mode 100644
index 0000000..5262192
--- /dev/null
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/TopLevelDataType.java
@@ -0,0 +1,12 @@
+package org.apache.airavata.registry.cpi;
+
+public enum TopLevelDataType {
+    APPLiCATION_CATALOG,
+    GROUP,
+    USER,
+    PROJECT,
+    EXPERIMENT_BASIC_DATA
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/b8152e39/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1ae708a..10744f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -430,6 +430,7 @@
                 <activeByDefault>true</activeByDefault>
             </activation>
             <modules>
+                <module>modules/airavata-api</module>
                 <module>modules/gfac</module>
                 <module>modules/ws-messenger</module>
                 <module>modules/workflow-model</module>


Mime
View raw message