You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/06/02 22:41:04 UTC
[08/25] airavata git commit: rename airavata-jpa-registry module to
experiment-catalog
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Project.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Project.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Project.java
new file mode 100644
index 0000000..96bbf54
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Project.java
@@ -0,0 +1,125 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@DataCache
+@Entity
+@Table(name ="PROJECT")
+public class Project implements Serializable {
+ @Id
+ @Column(name = "PROJECT_ID")
+ private String project_id;
+
+ @Column(name = "GATEWAY_ID")
+ private String gateway_id;
+
+ @Column(name = "PROJECT_NAME")
+ private String project_name;
+
+ @Column(name = "DESCRIPTION")
+ private String description;
+
+ @Column(name = "USER_NAME")
+ private String user_name;
+
+ @Column(name = "CREATION_TIME")
+ private Timestamp creationTime;
+
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name = "GATEWAY_ID")
+ private Gateway gateway;
+
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name = "USER_NAME")
+ private Users users;
+
+
+ public String getProject_name() {
+ return project_name;
+ }
+
+ public Gateway getGateway() {
+ return gateway;
+ }
+
+ public void setProject_name(String project_name) {
+ this.project_name = project_name;
+ }
+
+ public void setGateway(Gateway gateway) {
+ this.gateway = gateway;
+ }
+
+ public Users getUsers() {
+ return users;
+ }
+
+ public void setUsers(Users users) {
+ this.users = users;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Timestamp getCreationTime() {
+ return creationTime;
+ }
+
+ public void setCreationTime(Timestamp creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ public void setProject_id(String project_id) {
+ this.project_id = project_id;
+ }
+
+ public String getProject_id() {
+ return project_id;
+ }
+
+ public String getUser_name() {
+ return user_name;
+ }
+
+ public void setUser_name(String user_name) {
+ this.user_name = user_name;
+ }
+
+ public String getGateway_id() {
+ return gateway_id;
+ }
+
+ public void setGateway_id(String gateway_id) {
+ this.gateway_id = gateway_id;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser.java
new file mode 100644
index 0000000..5bb8804
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser.java
@@ -0,0 +1,81 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@DataCache
+@Entity
+@IdClass(ProjectUser_PK.class)
+@Table(name = "PROJECT_USER")
+public class ProjectUser implements Serializable {
+ @Id
+ @Column(name = "PROJECT_ID")
+ private String projectID;
+ @Id
+ @Column(name = "USER_NAME")
+ private String userName;
+
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name = "PROJECT_ID")
+ private Project project;
+
+ @ManyToOne(cascade=CascadeType.MERGE)
+ @JoinColumn(name = "USER_NAME")
+ private Users user;
+
+ public String getProjectID() {
+ return projectID;
+ }
+
+ public void setProjectID(String projectID) {
+ this.projectID = projectID;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public Project getProject() {
+ return project;
+ }
+
+ public void setProject(Project project) {
+ this.project = project;
+ }
+
+ public Users getUser() {
+ return user;
+ }
+
+ public void setUser(Users user) {
+ this.user = user;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser_PK.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser_PK.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser_PK.java
new file mode 100644
index 0000000..0d0fb40
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/ProjectUser_PK.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import java.io.Serializable;
+
+public class ProjectUser_PK implements Serializable {
+ private String projectID;
+ private String userName;
+
+ public ProjectUser_PK(String projectID, String userName) {
+ this.projectID = projectID;
+ this.userName = userName;
+ }
+
+ public ProjectUser_PK() {
+ ;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return 1;
+ }
+
+ public String getProjectID() {
+ return projectID;
+ }
+
+ public void setProjectID(String projectID) {
+ this.projectID = projectID;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/QosParam.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/QosParam.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/QosParam.java
new file mode 100644
index 0000000..9b3f081
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/QosParam.java
@@ -0,0 +1,103 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@DataCache
+@Entity
+@Table(name = "QOS_PARAMS")
+public class QosParam implements Serializable {
+ @Id
+ @GeneratedValue
+ @Column(name = "QOS_ID")
+ private int qosId;
+ @Column(name = "EXPERIMENT_ID")
+ private String expId;
+ @Column(name = "TASK_ID")
+ private String taskId;
+ @Column(name = "START_EXECUTION_AT")
+ private String startExecutionAt;
+ @Column(name = "EXECUTE_BEFORE")
+ private String executeBefore;
+ @Column(name = "NO_OF_RETRIES")
+ private int noOfRetries;
+
+ @ManyToOne(cascade= CascadeType.MERGE)
+ @JoinColumn(name = "EXPERIMENT_ID")
+ private Experiment experiment;
+
+ @ManyToOne(cascade= CascadeType.MERGE)
+ @JoinColumn(name = "TASK_ID")
+ private TaskDetail task;
+
+ public int getQosId() {
+ return qosId;
+ }
+
+ public void setQosId(int qosId) {
+ this.qosId = qosId;
+ }
+
+ public String getExpId() {
+ return expId;
+ }
+
+ public void setExpId(String expId) {
+ this.expId = expId;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ 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 getNoOfRetries() {
+ return noOfRetries;
+ }
+
+ public void setNoOfRetries(int noOfRetries) {
+ this.noOfRetries = noOfRetries;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Status.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Status.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Status.java
new file mode 100644
index 0000000..52e088a
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Status.java
@@ -0,0 +1,146 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@DataCache
+@Entity
+@Table(name = "STATUS")
+public class Status implements Serializable {
+ @Id
+ @GeneratedValue
+ @Column(name = "STATUS_ID")
+ private int statusId;
+ @Column(name = "EXPERIMENT_ID")
+ private String expId;
+ @Column(name = "NODE_INSTANCE_ID")
+ private String nodeId;
+ @Column(name = "TRANSFER_ID")
+ private String transferId;
+ @Column(name = "TASK_ID")
+ private String taskId;
+ @Column(name = "JOB_ID")
+ private String jobId;
+ @Column(name = "STATE")
+ private String state;
+ @Column(name = "STATUS_UPDATE_TIME")
+ private Timestamp statusUpdateTime;
+ @Column(name = "STATUS_TYPE")
+ private String statusType;
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade= CascadeType.MERGE)
+ @JoinColumn(name = "EXPERIMENT_ID")
+ private Experiment experiment;
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade= CascadeType.MERGE)
+ @JoinColumn(name = "TASK_ID")
+ private TaskDetail task;
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade= CascadeType.MERGE)
+ @JoinColumn(name = "NODE_INSTANCE_ID")
+ private WorkflowNodeDetail nodeDetail;
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade= CascadeType.MERGE)
+ @JoinColumn(name = "TRANSFER_ID")
+ private DataTransferDetail transferDetail;
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade= CascadeType.MERGE)
+ @JoinColumn(name = "JOB_ID")
+ private JobDetail jobDetail;
+
+ public int getStatusId() {
+ return statusId;
+ }
+
+ public void setStatusId(int statusId) {
+ this.statusId = statusId;
+ }
+
+ public String getExpId() {
+ return expId;
+ }
+
+ public void setExpId(String expId) {
+ this.expId = expId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public String getTransferId() {
+ return transferId;
+ }
+
+ public void setTransferId(String transferId) {
+ this.transferId = transferId;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getJobId() {
+ return jobId;
+ }
+
+ public void setJobId(String jobId) {
+ this.jobId = jobId;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public Timestamp getStatusUpdateTime() {
+ return statusUpdateTime;
+ }
+
+ public void setStatusUpdateTime(Timestamp statusUpdateTime) {
+ this.statusUpdateTime = statusUpdateTime;
+ }
+
+ public String getStatusType() {
+ return statusType;
+ }
+
+ public void setStatusType(String statusType) {
+ this.statusType = statusType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/TaskDetail.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/TaskDetail.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/TaskDetail.java
new file mode 100644
index 0000000..423b189
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/TaskDetail.java
@@ -0,0 +1,221 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.List;
+
+@DataCache
+@Entity
+@Table(name = "TASK_DETAIL")
+public class TaskDetail implements Serializable {
+ @Id
+ @Column(name = "TASK_ID")
+ private String taskId;
+ @Column(name = "NODE_INSTANCE_ID")
+ private String nodeId;
+ @Column(name = "CREATION_TIME")
+ private Timestamp creationTime;
+ @Column(name = "APPLICATION_ID")
+ private String appId;
+ @Column(name = "APPLICATION_VERSION")
+ private String appVersion;
+ @Column(name = "ALLOW_NOTIFICATION")
+ private boolean allowNotification;
+
+ @Column(name = "APPLICATION_DEPLOYMENT_ID")
+ private String applicationDeploymentId;
+
+ @ManyToOne(cascade= CascadeType.MERGE)
+ @JoinColumn(name = "NODE_INSTANCE_ID")
+ private WorkflowNodeDetail nodeDetail;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<ApplicationOutput> applicationOutputs;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<ApplicationInput> applicationInputs;
+
+ @OneToOne (fetch = FetchType.LAZY, mappedBy = "task")
+ private Computational_Resource_Scheduling resourceScheduling;
+
+ @OneToOne (fetch = FetchType.LAZY, mappedBy = "task")
+ private AdvancedInputDataHandling inputDataHandling;
+
+ @OneToOne (fetch = FetchType.LAZY, mappedBy = "task")
+ private AdvancedOutputDataHandling outputDataHandling;
+
+ @OneToOne (fetch = FetchType.LAZY, mappedBy = "task")
+ private Status taskStatus;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<JobDetail> jobDetails;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<DataTransferDetail> dataTransferDetails;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<Notification_Email> notificationEmails;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "task")
+ private List<ErrorDetail> errorDetails;
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public Timestamp getCreationTime() {
+ return creationTime;
+ }
+
+ public void setCreationTime(Timestamp creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public String getAppVersion() {
+ return appVersion;
+ }
+
+ public void setAppVersion(String appVersion) {
+ this.appVersion = appVersion;
+ }
+
+ public String getApplicationDeploymentId() {
+ return applicationDeploymentId;
+ }
+
+ public void setApplicationDeploymentId(String applicationDeploymentId) {
+ this.applicationDeploymentId = applicationDeploymentId;
+ }
+
+ public boolean isAllowNotification() {
+ return allowNotification;
+ }
+
+ public void setAllowNotification(boolean allowNotification) {
+ this.allowNotification = allowNotification;
+ }
+
+ public List<ApplicationOutput> getApplicationOutputs() {
+ return applicationOutputs;
+ }
+
+ public void setApplicationOutputs(List<ApplicationOutput> applicationOutputs) {
+ this.applicationOutputs = applicationOutputs;
+ }
+
+ public List<ApplicationInput> getApplicationInputs() {
+ return applicationInputs;
+ }
+
+ public void setApplicationInputs(List<ApplicationInput> applicationInputs) {
+ this.applicationInputs = applicationInputs;
+ }
+
+ public Computational_Resource_Scheduling getResourceScheduling() {
+ return resourceScheduling;
+ }
+
+ public void setResourceScheduling(Computational_Resource_Scheduling resourceScheduling) {
+ this.resourceScheduling = resourceScheduling;
+ }
+
+ public AdvancedInputDataHandling getInputDataHandling() {
+ return inputDataHandling;
+ }
+
+ public void setInputDataHandling(AdvancedInputDataHandling inputDataHandling) {
+ this.inputDataHandling = inputDataHandling;
+ }
+
+ public AdvancedOutputDataHandling getOutputDataHandling() {
+ return outputDataHandling;
+ }
+
+ public void setOutputDataHandling(AdvancedOutputDataHandling outputDataHandling) {
+ this.outputDataHandling = outputDataHandling;
+ }
+
+ public List<JobDetail> getJobDetails() {
+ return jobDetails;
+ }
+
+ public void setJobDetails(List<JobDetail> jobDetails) {
+ this.jobDetails = jobDetails;
+ }
+
+ public List<DataTransferDetail> getDataTransferDetails() {
+ return dataTransferDetails;
+ }
+
+ public void setDataTransferDetails(List<DataTransferDetail> dataTransferDetails) {
+ this.dataTransferDetails = dataTransferDetails;
+ }
+
+ public List<Notification_Email> getNotificationEmails() {
+ return notificationEmails;
+ }
+
+ public void setNotificationEmails(List<Notification_Email> notificationEmails) {
+ this.notificationEmails = notificationEmails;
+ }
+
+ public Status getTaskStatus() {
+ return taskStatus;
+ }
+
+ public void setTaskStatus(Status taskStatus) {
+ this.taskStatus = taskStatus;
+ }
+
+ public List<ErrorDetail> getErrorDetails() {
+ return errorDetails;
+ }
+
+ public void setErrorDetails(List<ErrorDetail> errorDetails) {
+ this.errorDetails = errorDetails;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Users.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Users.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Users.java
new file mode 100644
index 0000000..f0b9b49
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/Users.java
@@ -0,0 +1,55 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@DataCache
+@Entity
+@Table(name ="USERS")
+public class Users implements Serializable {
+
+ @Id
+ @Column(name = "USER_NAME")
+ private String user_name;
+ @Column(name = "PASSWORD")
+ private String password;
+
+
+ public String getUser_name() {
+ return user_name;
+ }
+
+ public void setUser_name(String user_name) {
+ this.user_name = user_name;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/WorkflowNodeDetail.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/WorkflowNodeDetail.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/WorkflowNodeDetail.java
new file mode 100644
index 0000000..7d38322
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/model/WorkflowNodeDetail.java
@@ -0,0 +1,155 @@
+/*
+ *
+ * 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.experiment.catalog.model;
+
+import org.apache.openjpa.persistence.DataCache;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.List;
+
+@DataCache
+@Entity
+@Table(name = "WORKFLOW_NODE_DETAIL")
+public class WorkflowNodeDetail implements Serializable {
+ @Column(name = "EXPERIMENT_ID")
+ private String expId;
+ @Id
+ @Column(name = "NODE_INSTANCE_ID")
+ private String nodeId;
+ @Column(name = "EXECUTION_UNIT")
+ private String executionUnit;
+ @Column(name = "EXECUTION_UNIT_DATA")
+ private String executionUnitData;
+ @Column(name = "CREATION_TIME")
+ private Timestamp creationTime;
+ @Column(name = "NODE_NAME")
+ private String nodeName;
+
+ @ManyToOne(cascade= CascadeType.MERGE)
+ @JoinColumn(name = "EXPERIMENT_ID")
+ private Experiment experiment;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "nodeDetail")
+ private List<TaskDetail> taskDetails;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "nodeDetail")
+ private List<NodeInput> nodeInputs;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "nodeDetail")
+ private List<NodeOutput> nodeOutputs;
+
+ @OneToOne (fetch = FetchType.LAZY, mappedBy = "nodeDetail")
+ private Status nodeStatus;
+
+ @OneToMany (fetch = FetchType.LAZY, mappedBy = "nodeDetail")
+ private List<ErrorDetail> errorDetails;
+
+ public String getExpId() {
+ return expId;
+ }
+
+ public void setExpId(String expId) {
+ this.expId = expId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ public Timestamp getCreationTime() {
+ return creationTime;
+ }
+
+ public void setCreationTime(Timestamp creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ public String getNodeName() {
+ return nodeName;
+ }
+
+ public void setNodeName(String nodeName) {
+ this.nodeName = nodeName;
+ }
+
+ public String getExecutionUnitData() {
+ return executionUnitData;
+ }
+
+ public void setExecutionUnitData(String executionUnitData) {
+ this.executionUnitData = executionUnitData;
+ }
+
+ public String getExecutionUnit() {
+ return executionUnit;
+ }
+
+ public void setExecutionUnit(String executionUnit) {
+ this.executionUnit = executionUnit;
+ }
+
+ public List<TaskDetail> getTaskDetails() {
+ return taskDetails;
+ }
+
+ public void setTaskDetails(List<TaskDetail> taskDetails) {
+ this.taskDetails = taskDetails;
+ }
+
+ public List<NodeInput> getNodeInputs() {
+ return nodeInputs;
+ }
+
+ public void setNodeInputs(List<NodeInput> nodeInputs) {
+ this.nodeInputs = nodeInputs;
+ }
+
+ public List<NodeOutput> getNodeOutputs() {
+ return nodeOutputs;
+ }
+
+ public void setNodeOutputs(List<NodeOutput> nodeOutputs) {
+ this.nodeOutputs = nodeOutputs;
+ }
+
+ public Status getNodeStatus() {
+ return nodeStatus;
+ }
+
+ public void setNodeStatus(Status nodeStatus) {
+ this.nodeStatus = nodeStatus;
+ }
+
+ public List<ErrorDetail> getErrorDetails() {
+ return errorDetails;
+ }
+
+ public void setErrorDetails(List<ErrorDetail> errorDetails) {
+ this.errorDetails = errorDetails;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AbstractResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AbstractResource.java
new file mode 100644
index 0000000..86ae071
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AbstractResource.java
@@ -0,0 +1,317 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.registry.cpi.RegistryException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractResource implements Resource {
+ // table names
+ public static final String GATEWAY = "Gateway";
+ public static final String CONFIGURATION = "Configuration";
+ public static final String USERS = "Users";
+ public static final String GATEWAY_WORKER = "Gateway_Worker";
+ public static final String PROJECT = "Project";
+ public static final String PROJECT_USER = "ProjectUser";
+ public static final String EXPERIMENT = "Experiment";
+ public static final String NOTIFICATION_EMAIL = "Notification_Email";
+ public static final String EXPERIMENT_CONFIG_DATA = "ExperimentConfigData";
+ public static final String EXPERIMENT_INPUT = "Experiment_Input";
+ public static final String EXPERIMENT_OUTPUT = "Experiment_Output";
+ public static final String WORKFLOW_NODE_DETAIL = "WorkflowNodeDetail";
+ public static final String TASK_DETAIL = "TaskDetail";
+ public static final String ERROR_DETAIL = "ErrorDetail";
+ public static final String APPLICATION_INPUT = "ApplicationInput";
+ public static final String APPLICATION_OUTPUT = "ApplicationOutput";
+ public static final String NODE_INPUT = "NodeInput";
+ public static final String NODE_OUTPUT = "NodeOutput";
+ public static final String JOB_DETAIL = "JobDetail";
+ public static final String DATA_TRANSFER_DETAIL = "DataTransferDetail";
+ public static final String STATUS = "Status";
+ public static final String CONFIG_DATA = "ExperimentConfigData";
+ public static final String COMPUTATIONAL_RESOURCE_SCHEDULING = "Computational_Resource_Scheduling";
+ public static final String ADVANCE_INPUT_DATA_HANDLING = "AdvancedInputDataHandling";
+ public static final String ADVANCE_OUTPUT_DATA_HANDLING = "AdvancedOutputDataHandling";
+ public static final String QOS_PARAMS = "QosParam";
+
+
+ // Gateway Table
+ public final class GatewayConstants {
+ public static final String GATEWAY_ID = "gateway_id";
+ public static final String GATEWAY_NAME = "gateway_name";
+ public static final String DOMAIN = "domain";
+ public static final String EMAIL_ADDRESS = "emailAddress";
+ }
+
+ // Configuration Table
+ public final class ConfigurationConstants {
+ // public static final String CONFIG_ID = "config_ID";
+ public static final String CONFIG_KEY = "config_key";
+ public static final String CONFIG_VAL = "config_val";
+ public static final String EXPIRE_DATE = "expire_date";
+ public static final String CATEGORY_ID = "category_id";
+ public static final String CATEGORY_ID_DEFAULT_VALUE = "SYSTEM";
+ }
+
+ // Users table
+ public final class UserConstants {
+ public static final String USERNAME = "user_name";
+ public static final String PASSWORD = "password";
+ }
+
+ // Gateway_Worker table
+ public final class GatewayWorkerConstants {
+ public static final String USERNAME = "user_name";
+ public static final String GATEWAY_ID = "gateway_id";
+ }
+
+ // Project table
+ public final class ProjectConstants {
+ public static final String GATEWAY_ID = "gateway_id";
+ public static final String USERNAME = "user_name";
+ public static final String PROJECT_NAME = "project_name";
+ public static final String PROJECT_ID = "project_id";
+ public static final String DESCRIPTION = "description";
+ public static final String CREATION_TIME = "creationTime";
+ }
+
+ // Project table
+ public final class ProjectUserConstants {
+ public static final String USERNAME = "userName";
+ public static final String PROJECT_ID = "projectID";
+ }
+
+ // Experiment table
+ public final class ExperimentConstants {
+ public static final String PROJECT_ID = "projectID";
+ public static final String EXECUTION_USER = "executionUser";
+ public static final String GATEWAY_ID = "gatewayId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String EXPERIMENT_NAME = "expName";
+ public static final String DESCRIPTION = "expDesc";
+ public static final String CREATION_TIME = "creationTime";
+ public static final String APPLICATION_ID = "applicationId";
+ public static final String APPLICATION_VERSION = "appVersion";
+ public static final String WORKFLOW_TEMPLATE_ID = "workflowTemplateId";
+ public static final String WORKFLOW_TEMPLATE_VERSION = "workflowTemplateVersion";
+ public static final String WORKFLOW_EXECUTION_ID = "workflowExecutionId";
+ }
+
+ // Experiment Configuration Data table
+ public final class ExperimentConfigurationDataConstants {
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String AIRAVATA_AUTO_SCHEDULE = "airavataAutoSchedule";
+ public static final String OVERRIDE_MANUAL_SCHEDULE = "overrideManualParams";
+ public static final String SHARE_EXPERIMENT = "shareExp";
+ }
+
+ public final class NotificationEmailConstants {
+ public static final String EXPERIMENT_ID = "experiment_id";
+ public static final String TASK_ID = "taskId";
+ public static final String EMAIL_ADDRESS = "emailAddress";
+ }
+
+ //Experiment Input table
+ public final class ExperimentInputConstants {
+ public static final String EXPERIMENT_ID = "experiment_id";
+ public static final String EXPERIMENT_INPUT_KEY = "ex_key";
+ public static final String EXPERIMENT_INPUT_VAL = "value";
+ public static final String INPUT_TYPE = "inputType";
+ public static final String METADATA = "metadata";
+ }
+
+ //Experiment Output table
+ public final class ExperimentOutputConstants {
+ public static final String EXPERIMENT_ID = "experiment_id";
+ public static final String EXPERIMENT_OUTPUT_KEY = "ex_key";
+ public static final String EXPERIMENT_OUTPUT_VAL = "value";
+ public static final String OUTPUT_TYPE = "outputKeyType";
+ public static final String METADATA = "metadata";
+ }
+
+ // Workflow_Data table
+ public final class WorkflowNodeDetailsConstants {
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String CREATION_TIME = "creationTime";
+ public static final String NODE_NAME = "nodeName";
+ }
+
+ // TaskDetail table
+ public final class TaskDetailConstants {
+ public static final String TASK_ID = "taskId";
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String CREATION_TIME = "creationTime";
+ public static final String APPLICATION_ID = "appId";
+ public static final String APPLICATION_VERSION = "appVersion";
+ }
+
+ // ErrorDetails table
+ public final class ErrorDetailConstants {
+ public static final String ERROR_ID = "errorID";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String TASK_ID = "taskId";
+ public static final String JOB_ID = "jobId";
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String CREATION_TIME = "creationTime";
+ public static final String ACTUAL_ERROR_MESSAGE = "actualErrorMsg";
+ public static final String USER_FRIEDNLY_ERROR_MSG = "userFriendlyErrorMsg";
+ public static final String TRANSIENT_OR_PERSISTENT = "transientPersistent";
+ public static final String ERROR_CATEGORY = "errorCategory";
+ public static final String CORRECTIVE_ACTION = "correctiveAction";
+ public static final String ACTIONABLE_GROUP = "actionableGroup";
+ }
+
+ // ApplicationInput table
+ public final class ApplicationInputConstants {
+ public static final String TASK_ID = "taskId";
+ public static final String INPUT_KEY = "inputKey";
+ public static final String INPUT_KEY_TYPE = "inputKeyType";
+ public static final String METADATA = "metadata";
+ public static final String VALUE = "value";
+ }
+
+ // ApplicationOutput table
+ public final class ApplicationOutputConstants {
+ public static final String TASK_ID = "taskId";
+ public static final String OUTPUT_KEY = "outputKey";
+ public static final String OUTPUT_KEY_TYPE = "outputKeyType";
+ public static final String METADATA = "metadata";
+ public static final String VALUE = "value";
+ }
+
+ // NodeInput table
+ public final class NodeInputConstants {
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String INPUT_KEY = "inputKey";
+ public static final String INPUT_KEY_TYPE = "inputKeyType";
+ public static final String METADATA = "metadata";
+ public static final String VALUE = "value";
+ }
+
+ // NodeOutput table
+ public final class NodeOutputConstants {
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String OUTPUT_KEY = "outputKey";
+ public static final String OUTPUT_KEY_TYPE = "outputKeyType";
+ public static final String METADATA = "metadata";
+ public static final String VALUE = "value";
+ }
+
+ // Job Details table constants
+ public final class JobDetailConstants{
+ public static final String JOB_ID = "jobId";
+ public static final String TASK_ID = "taskId";
+ public static final String JOB_DESCRIPTION = "jobDescription";
+ public static final String CREATION_TIME = "jobDescription";
+ }
+
+ // Data transfer Details table constants
+ public final class DataTransferDetailConstants{
+ public static final String TRANSFER_ID = "transferId";
+ public static final String TASK_ID = "taskId";
+ public static final String TRANSFER_DESC = "transferDesc";
+ public static final String CREATION_TIME = "creationTime";
+ }
+
+ // Status table constants
+ public final class StatusConstants {
+ public static final String STATUS_ID = "statusId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String NODE_INSTANCE_ID = "nodeId";
+ public static final String TRANSFER_ID = "transferId";
+ public static final String TASK_ID = "taskId";
+ public static final String JOB_ID = "jobId";
+ public static final String STATE = "state";
+ public static final String STATUS_UPDATE_TIME = "statusUpdateTime";
+ public static final String STATUS_TYPE = "statusType";
+ }
+
+ public static final class ComputationalResourceSchedulingConstants{
+ public static final String RESOURCE_SCHEDULING_ID = "schedulingId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String TASK_ID = "taskId";
+ public static final String RESOURCE_HOST_ID = "resourceHostId";
+ public static final String CPU_COUNT = "cpuCount";
+ public static final String NODE_COUNT = "nodeCount";
+ public static final String NO_OF_THREADS = "numberOfThreads";
+ public static final String QUEUE_NAME = "queueName";
+ public static final String WALLTIME_LIMIT = "wallTimeLimit";
+ public static final String JOB_START_TIME = "jobStartTime";
+ public static final String TOTAL_PHYSICAL_MEMORY = "totalPhysicalmemory";
+ public static final String COMPUTATIONAL_PROJECT_ACCOUNT = "projectName";
+ }
+
+ public static final class AdvancedInputDataHandlingConstants {
+ public static final String INPUT_DATA_HANDLING_ID = "dataHandlingId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String TASK_ID = "taskId";
+ public static final String WORKING_DIR_PARENT = "parentWorkingDir";
+ public static final String UNIQUE_WORKING_DIR = "workingDir";
+ public static final String STAGE_INPUT_FILES_TO_WORKING_DIR = "stageInputsToWorkingDir";
+ public static final String CLEAN_AFTER_JOB = "cleanAfterJob";
+ }
+
+ public static final class AdvancedOutputDataHandlingConstants {
+ public static final String OUTPUT_DATA_HANDLING_ID = "outputDataHandlingId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String TASK_ID = "taskId";
+ public static final String OUTPUT_DATA_DIR = "outputDataDir";
+ public static final String DATA_REG_URL = "dataRegUrl";
+ public static final String PERSIST_OUTPUT_DATA = "persistOutputData";
+ }
+
+ public static final class QosParamsConstants {
+ public static final String QOS_ID = "qosId";
+ public static final String EXPERIMENT_ID = "expId";
+ public static final String TASK_ID = "taskId";
+ public static final String START_EXECUTION_AT = "startExecutionAt";
+ public static final String EXECUTE_BEFORE = "executeBefore";
+ public static final String NO_OF_RETRIES = "noOfRetries";
+ }
+
+
+ protected AbstractResource() {
+ }
+
+ public boolean isExists(ResourceType type, Object name) throws RegistryException {
+ try {
+ return get(type, name) != null;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> List<T> getResourceList(List<Resource> resources,
+ Class<?> T) {
+ List<T> list = new ArrayList<T>();
+ for (Resource o : resources) {
+ list.add((T) o);
+ }
+ return list;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvanceInputDataHandlingResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvanceInputDataHandlingResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvanceInputDataHandlingResource.java
new file mode 100644
index 0000000..b2995dd
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvanceInputDataHandlingResource.java
@@ -0,0 +1,160 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.experiment.catalog.ResourceUtils;
+import org.apache.airavata.experiment.catalog.model.AdvancedInputDataHandling;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import java.util.List;
+
+public class AdvanceInputDataHandlingResource extends AbstractResource {
+ private static final Logger logger = LoggerFactory.getLogger(AdvanceInputDataHandlingResource.class);
+ private int dataHandlingId = 0;
+ private String workingDirParent;
+ private String workingDir;
+ private boolean stageInputFiles;
+ private boolean cleanAfterJob;
+ private String experimentId;
+ private String taskId;
+
+ public String getExperimentId() {
+ return experimentId;
+ }
+
+ public void setExperimentId(String experimentId) {
+ this.experimentId = experimentId;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public int getDataHandlingId() {
+ return dataHandlingId;
+ }
+
+ public void setDataHandlingId(int dataHandlingId) {
+ this.dataHandlingId = dataHandlingId;
+ }
+
+ public String getWorkingDirParent() {
+ return workingDirParent;
+ }
+
+ public void setWorkingDirParent(String workingDirParent) {
+ this.workingDirParent = workingDirParent;
+ }
+
+ public String getWorkingDir() {
+ return workingDir;
+ }
+
+ public void setWorkingDir(String workingDir) {
+ this.workingDir = workingDir;
+ }
+
+ public boolean isStageInputFiles() {
+ return stageInputFiles;
+ }
+
+ public void setStageInputFiles(boolean stageInputFiles) {
+ this.stageInputFiles = stageInputFiles;
+ }
+
+ public boolean isCleanAfterJob() {
+ return cleanAfterJob;
+ }
+
+ public void setCleanAfterJob(boolean cleanAfterJob) {
+ this.cleanAfterJob = cleanAfterJob;
+ }
+
+
+ public Resource create(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for input data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void remove(ResourceType type, Object name) throws RegistryException {
+ logger.error("Unsupported resource type for input data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public Resource get(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for input data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public List<Resource> get(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for input data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void save() throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ AdvancedInputDataHandling dataHandling;
+ if (dataHandlingId != 0) {
+ dataHandling = em.find(AdvancedInputDataHandling.class, dataHandlingId);
+ dataHandling.setDataHandlingId(dataHandlingId);
+ } else {
+ dataHandling = new AdvancedInputDataHandling();
+ }
+ dataHandling.setWorkingDir(workingDir);
+ dataHandling.setParentWorkingDir(workingDirParent);
+ dataHandling.setStageInputsToWorkingDir(stageInputFiles);
+ dataHandling.setCleanAfterJob(cleanAfterJob);
+ dataHandling.setExpId(experimentId);
+ dataHandling.setTaskId(taskId);
+ em.persist(dataHandling);
+ dataHandlingId = dataHandling.getDataHandlingId();
+ em.getTransaction().commit();
+ em.close();
+ }catch (Exception e){
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ }finally {
+ if (em != null && em.isOpen()){
+ if (em.getTransaction().isActive()){
+ em.getTransaction().rollback();
+ }
+ em.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvancedOutputDataHandlingResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvancedOutputDataHandlingResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvancedOutputDataHandlingResource.java
new file mode 100644
index 0000000..fc6b049
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/AdvancedOutputDataHandlingResource.java
@@ -0,0 +1,150 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.experiment.catalog.ResourceUtils;
+import org.apache.airavata.experiment.catalog.model.AdvancedOutputDataHandling;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import java.util.List;
+
+public class AdvancedOutputDataHandlingResource extends AbstractResource {
+ private static final Logger logger = LoggerFactory.getLogger(AdvancedOutputDataHandlingResource.class);
+ private int outputDataHandlingId = 0;
+ private String outputDataDir;
+ private String dataRegUrl;
+ private boolean persistOutputData;
+ private String experimentId;
+ private String taskId;
+
+ public String getExperimentId() {
+ return experimentId;
+ }
+
+ public void setExperimentId(String experimentId) {
+ this.experimentId = experimentId;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public int getOutputDataHandlingId() {
+ return outputDataHandlingId;
+ }
+
+ public void setOutputDataHandlingId(int outputDataHandlingId) {
+ this.outputDataHandlingId = outputDataHandlingId;
+ }
+
+ public String getOutputDataDir() {
+ return outputDataDir;
+ }
+
+ public void setOutputDataDir(String outputDataDir) {
+ this.outputDataDir = outputDataDir;
+ }
+
+ public String getDataRegUrl() {
+ return dataRegUrl;
+ }
+
+ public void setDataRegUrl(String dataRegUrl) {
+ this.dataRegUrl = dataRegUrl;
+ }
+
+ public boolean isPersistOutputData() {
+ return persistOutputData;
+ }
+
+ public void setPersistOutputData(boolean persistOutputData) {
+ this.persistOutputData = persistOutputData;
+ }
+
+
+ public Resource create(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for output data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void remove(ResourceType type, Object name) throws RegistryException {
+ logger.error("Unsupported resource type for output data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public Resource get(ResourceType type, Object name) throws RegistryException {
+ logger.error("Unsupported resource type for output data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
+ logger.error("Unsupported resource type for output data handling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void save() throws RegistryException {
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ AdvancedOutputDataHandling dataHandling;
+ if (outputDataHandlingId != 0 ){
+ dataHandling = em.find(AdvancedOutputDataHandling.class, outputDataHandlingId);
+ dataHandling.setOutputDataHandlingId(outputDataHandlingId);
+ }else {
+ dataHandling = new AdvancedOutputDataHandling();
+ }
+ dataHandling.setDataRegUrl(dataRegUrl);
+ dataHandling.setOutputDataDir(outputDataDir);
+ dataHandling.setPersistOutputData(persistOutputData);
+ dataHandling.setExpId(experimentId);
+ dataHandling.setTaskId(taskId);
+ em.persist(dataHandling);
+ outputDataHandlingId = dataHandling.getOutputDataHandlingId();
+ em.getTransaction().commit();
+ em.close();
+ }catch (Exception e){
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ }finally {
+ if (em != null && em.isOpen()){
+ if (em.getTransaction().isActive()){
+ em.getTransaction().rollback();
+ }
+ em.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationInputResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationInputResource.java
new file mode 100644
index 0000000..b694d38
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationInputResource.java
@@ -0,0 +1,230 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.experiment.catalog.ResourceUtils;
+import org.apache.airavata.experiment.catalog.model.ApplicationInput;
+import org.apache.airavata.experiment.catalog.model.ApplicationInput_PK;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ApplicationInputResource extends AbstractResource {
+ private static final Logger logger = LoggerFactory.getLogger(ApplicationInputResource.class);
+ private String inputKey;
+ private String dataType;
+ private String metadata;
+ private String value;
+ private String appArgument;
+ private boolean standardInput;
+ private String userFriendlyDesc;
+ private int inputOrder;
+ private boolean isRequired;
+ private boolean requiredToCMD;
+ private boolean dataStaged;
+ private String taskId;
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public boolean isRequired() {
+ return isRequired;
+ }
+
+ public void setRequired(boolean isRequired) {
+ this.isRequired = isRequired;
+ }
+
+ public boolean isRequiredToCMD() {
+ return requiredToCMD;
+ }
+
+ public void setRequiredToCMD(boolean requiredToCMD) {
+ this.requiredToCMD = requiredToCMD;
+ }
+
+ public boolean isDataStaged() {
+ return dataStaged;
+ }
+
+ public void setDataStaged(boolean dataStaged) {
+ this.dataStaged = dataStaged;
+ }
+
+ public int getInputOrder() {
+ return inputOrder;
+ }
+
+ public void setInputOrder(int inputOrder) {
+ this.inputOrder = inputOrder;
+ }
+
+ public String getAppArgument() {
+ return appArgument;
+ }
+
+ public void setAppArgument(String appArgument) {
+ this.appArgument = appArgument;
+ }
+
+ public boolean isStandardInput() {
+ return standardInput;
+ }
+
+ public void setStandardInput(boolean standardInput) {
+ this.standardInput = standardInput;
+ }
+
+ public String getUserFriendlyDesc() {
+ return userFriendlyDesc;
+ }
+
+ public void setUserFriendlyDesc(String userFriendlyDesc) {
+ this.userFriendlyDesc = userFriendlyDesc;
+ }
+
+ public String getInputKey() {
+ return inputKey;
+ }
+
+ public void setInputKey(String inputKey) {
+ this.inputKey = inputKey;
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ public String getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(String metadata) {
+ this.metadata = metadata;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public Resource create(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for application input data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void remove(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for application input data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public Resource get(ResourceType type, Object name) throws RegistryException {
+ logger.error("Unsupported resource type for application input data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
+ logger.error("Unsupported resource type for application input data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void save() throws RegistryException {
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ ApplicationInput existingInput = em.find(ApplicationInput.class, new ApplicationInput_PK(inputKey, taskId));
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ ApplicationInput applicationInput = new ApplicationInput();
+ applicationInput.setTaskId(taskId);
+ applicationInput.setInputKey(inputKey);
+ applicationInput.setDataType(dataType);
+ applicationInput.setAppArgument(appArgument);
+ applicationInput.setStandardInput(standardInput);
+ applicationInput.setUserFriendlyDesc(userFriendlyDesc);
+ applicationInput.setInputOrder(inputOrder);
+ applicationInput.setRequiredToCMD(requiredToCMD);
+ applicationInput.setRequired(isRequired);
+ applicationInput.setDataStaged(dataStaged);
+ if (value != null) {
+ applicationInput.setValue(value.toCharArray());
+ }
+
+ applicationInput.setMetadata(metadata);
+
+ if (existingInput != null) {
+ existingInput.setTaskId(taskId);
+ existingInput.setInputKey(inputKey);
+ existingInput.setDataType(dataType);
+ existingInput.setAppArgument(appArgument);
+ existingInput.setStandardInput(standardInput);
+ existingInput.setUserFriendlyDesc(userFriendlyDesc);
+ existingInput.setInputOrder(inputOrder);
+ existingInput.setRequiredToCMD(requiredToCMD);
+ existingInput.setRequired(isRequired);
+ existingInput.setDataStaged(dataStaged);
+ if (value != null) {
+ existingInput.setValue(value.toCharArray());
+ }
+ existingInput.setMetadata(metadata);
+ applicationInput = em.merge(existingInput);
+ } else {
+ em.persist(applicationInput);
+ }
+ em.getTransaction().commit();
+ em.close();
+ } catch (Exception e) {
+ throw new RegistryException(e.getMessage());
+ } finally {
+ if (em != null && em.isOpen()) {
+ if (em.getTransaction().isActive()) {
+ em.getTransaction().rollback();
+ }
+ em.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationOutputResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationOutputResource.java
new file mode 100644
index 0000000..a1c3b5a
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ApplicationOutputResource.java
@@ -0,0 +1,208 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.experiment.catalog.ResourceUtils;
+import org.apache.airavata.experiment.catalog.model.ApplicationOutput;
+import org.apache.airavata.experiment.catalog.model.ApplicationOutput_PK;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ApplicationOutputResource extends AbstractResource {
+ private static final Logger logger = LoggerFactory.getLogger(ApplicationOutputResource.class);
+ private String taskId;
+ private String outputKey;
+ private String dataType;
+ private String value;
+ private boolean isRequired;
+ private boolean dataMovement;
+ private String dataNameLocation;
+ private boolean requiredToCMD;
+ private String searchQuery;
+ private String appArgument;
+
+ public String getSearchQuery() {
+ return searchQuery;
+ }
+
+ public void setSearchQuery(String searchQuery) {
+ this.searchQuery = searchQuery;
+ }
+
+ public String getAppArgument() {
+ return appArgument;
+ }
+
+ public void setAppArgument(String appArgument) {
+ this.appArgument = appArgument;
+ }
+
+ public boolean isRequired() {
+ return isRequired;
+ }
+
+ public void setRequired(boolean isRequired) {
+ this.isRequired = isRequired;
+ }
+
+ public boolean isRequiredToCMD() {
+ return requiredToCMD;
+ }
+
+ public void setRequiredToCMD(boolean requiredToCMD) {
+ this.requiredToCMD = requiredToCMD;
+ }
+
+ public boolean isDataMovement() {
+ return dataMovement;
+ }
+
+ public void setDataMovement(boolean dataMovement) {
+ this.dataMovement = dataMovement;
+ }
+
+ public String getDataNameLocation() {
+ return dataNameLocation;
+ }
+
+ public void setDataNameLocation(String dataNameLocation) {
+ this.dataNameLocation = dataNameLocation;
+ }
+
+ public String getOutputKey() {
+ return outputKey;
+ }
+
+ public void setOutputKey(String outputKey) {
+ this.outputKey = outputKey;
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public Resource create(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for application output data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void remove(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for application output data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public Resource get(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for application output data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
+ logger.error("Unsupported resource type for application output data resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void save() throws RegistryException {
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ ApplicationOutput existingOutput = em.find(ApplicationOutput.class, new ApplicationOutput_PK(outputKey, taskId));
+ em.close();
+
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ ApplicationOutput applicationOutput = new ApplicationOutput();
+ applicationOutput.setTaskId(taskId);
+ applicationOutput.setOutputKey(outputKey);
+ applicationOutput.setDataType(dataType);
+ applicationOutput.setRequired(isRequired);
+ applicationOutput.setAddedToCmd(requiredToCMD);
+ applicationOutput.setDataMovement(dataMovement);
+ applicationOutput.setDataNameLocation(dataNameLocation);
+ applicationOutput.setSearchQuery(searchQuery);
+ applicationOutput.setApplicationArgument(appArgument);
+ if (value != null){
+ applicationOutput.setValue(value.toCharArray());
+ }
+
+ if (existingOutput != null) {
+ existingOutput.setTaskId(taskId);
+ existingOutput.setOutputKey(outputKey);
+ existingOutput.setDataType(dataType);
+ existingOutput.setRequired(isRequired);
+ existingOutput.setAddedToCmd(requiredToCMD);
+ existingOutput.setDataMovement(dataMovement);
+ existingOutput.setDataNameLocation(dataNameLocation);
+ existingOutput.setSearchQuery(searchQuery);
+ existingOutput.setApplicationArgument(appArgument);
+ if (value != null){
+ existingOutput.setValue(value.toCharArray());
+ }
+ applicationOutput = em.merge(existingOutput);
+ } else {
+ em.persist(applicationOutput);
+ }
+ em.getTransaction().commit();
+ em.close();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e.getMessage());
+ } finally {
+ if (em != null && em.isOpen()) {
+ if (em.getTransaction().isActive()){
+ em.getTransaction().rollback();
+ }
+ em.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/22bcbb40/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ComputationSchedulingResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ComputationSchedulingResource.java b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ComputationSchedulingResource.java
new file mode 100644
index 0000000..506e603
--- /dev/null
+++ b/modules/registry/experiment-catalog/src/main/java/org/apache/airavata/experiment/catalog/resources/ComputationSchedulingResource.java
@@ -0,0 +1,221 @@
+/*
+ *
+ * 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.experiment.catalog.resources;
+
+import org.apache.airavata.experiment.catalog.Resource;
+import org.apache.airavata.experiment.catalog.ResourceType;
+import org.apache.airavata.experiment.catalog.ResourceUtils;
+import org.apache.airavata.experiment.catalog.model.Computational_Resource_Scheduling;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import java.sql.Timestamp;
+import java.util.List;
+
+public class ComputationSchedulingResource extends AbstractResource {
+ private static final Logger logger = LoggerFactory.getLogger(ComputationSchedulingResource.class);
+ private int schedulingId = 0;
+ private String experimentId;
+ private String taskId;
+ private String resourceHostId;
+ private int cpuCount;
+ private int nodeCount;
+ private int numberOfThreads;
+ private String queueName;
+ private int walltimeLimit;
+ private Timestamp jobStartTime;
+ private int physicalMemory;
+ private String projectName;
+ private String chessisName;
+
+ public String getChessisName() {
+ return chessisName;
+ }
+
+ public void setChessisName(String chessisName) {
+ this.chessisName = chessisName;
+ }
+
+ public int getSchedulingId() {
+ return schedulingId;
+ }
+
+ public void setSchedulingId(int schedulingId) {
+ this.schedulingId = schedulingId;
+ }
+
+ public String getExperimentId() {
+ return experimentId;
+ }
+
+ public void setExperimentId(String experimentId) {
+ this.experimentId = experimentId;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getResourceHostId() {
+ return resourceHostId;
+ }
+
+ public void setResourceHostId(String resourceHostId) {
+ this.resourceHostId = resourceHostId;
+ }
+
+ public int getCpuCount() {
+ return cpuCount;
+ }
+
+ public void setCpuCount(int cpuCount) {
+ this.cpuCount = cpuCount;
+ }
+
+ public int getNodeCount() {
+ return nodeCount;
+ }
+
+ public void setNodeCount(int nodeCount) {
+ this.nodeCount = nodeCount;
+ }
+
+ public int getNumberOfThreads() {
+ return numberOfThreads;
+ }
+
+ public void setNumberOfThreads(int numberOfThreads) {
+ this.numberOfThreads = numberOfThreads;
+ }
+
+ public String getQueueName() {
+ return queueName;
+ }
+
+ public void setQueueName(String queueName) {
+ this.queueName = queueName;
+ }
+
+ public int getWalltimeLimit() {
+ return walltimeLimit;
+ }
+
+ public void setWalltimeLimit(int walltimeLimit) {
+ this.walltimeLimit = walltimeLimit;
+ }
+
+ public Timestamp getJobStartTime() {
+ return jobStartTime;
+ }
+
+ public void setJobStartTime(Timestamp jobStartTime) {
+ this.jobStartTime = jobStartTime;
+ }
+
+ public int getPhysicalMemory() {
+ return physicalMemory;
+ }
+
+ public void setPhysicalMemory(int physicalMemory) {
+ this.physicalMemory = physicalMemory;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+
+ public Resource create(ResourceType type) throws RegistryException {
+ logger.error("Unsupported resource type for computational scheduling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void remove(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for computational scheduling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public Resource get(ResourceType type, Object name) throws RegistryException{
+ logger.error("Unsupported resource type for computational scheduling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public List<Resource> get(ResourceType type) throws RegistryException{
+ logger.error("Unsupported resource type for computational scheduling resource.", new UnsupportedOperationException());
+ throw new UnsupportedOperationException();
+ }
+
+
+ public void save() throws RegistryException{
+ EntityManager em = null;
+ try {
+ em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ Computational_Resource_Scheduling scheduling;
+ if (schedulingId != 0) {
+ scheduling = em.find(Computational_Resource_Scheduling.class, schedulingId);
+ scheduling.setSchedulingId(schedulingId);
+ } else {
+ scheduling = new Computational_Resource_Scheduling();
+ }
+ scheduling.setExpId(experimentId);
+ scheduling.setTaskId(taskId);
+ scheduling.setResourceHostId(resourceHostId);
+ scheduling.setCpuCount(cpuCount);
+ scheduling.setNodeCount(nodeCount);
+ scheduling.setNumberOfThreads(numberOfThreads);
+ scheduling.setQueueName(queueName);
+ scheduling.setWallTimeLimit(walltimeLimit);
+ scheduling.setJobStartTime(jobStartTime);
+ scheduling.setTotalPhysicalmemory(physicalMemory);
+ scheduling.setProjectName(projectName);
+ scheduling.setChessisName(chessisName);
+ em.persist(scheduling);
+ schedulingId = scheduling.getSchedulingId();
+ em.getTransaction().commit();
+ em.close();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RegistryException(e);
+ } finally {
+ if (em != null && em.isOpen()) {
+ if (em.getTransaction().isActive()){
+ em.getTransaction().rollback();
+ }
+ em.close();
+ }
+ }
+ }
+}