This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch airavata-v2-refactoring
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/airavata-v2-refactoring by
this push:
new 39d863eeab Fixed collection mappings
39d863eeab is described below
commit 39d863eeab47f2e2f1aaab70ffe6f3b2137a8ed0
Author: Marcus Christie <[email protected]>
AuthorDate: Mon Jun 12 21:09:43 2023 -0400
Fixed collection mappings
---
modules/airavata-apis/airavata-apis-server/pom.xml | 10 ++
.../java/org/apache/airavata/apis/APIRunner.java | 2 +
.../apis/db/entity/ApplicationRunInfoEntity.java | 57 +++---------
.../apache/airavata/apis/db/entity/BaseEntity.java | 101 +++++++++++++++++++++
.../db/entity/DataMovementConfigurationEntity.java | 54 ++---------
.../airavata/apis/db/entity/ExperimentEntity.java | 25 ++---
.../apis/db/entity/RunConfigurationEntity.java | 63 ++++---------
.../db/entity/application/ApplicationEntity.java | 34 +++----
.../application/input/ApplicationInputEntity.java | 18 +---
.../input/ApplicationInputValueEntity.java | 48 ++--------
.../output/ApplicationOutputEntity.java | 52 ++---------
.../output/ApplicationOutputValueEntity.java | 49 ++--------
.../application/runners/DockerRunnerEntity.java | 12 +--
.../application/runners/SlurmRunnerEntity.java | 12 +--
.../db/entity/backend/ComputeBackendEntity.java | 47 +---------
.../db/entity/backend/ServerBackendEntity.java | 13 +--
.../entity/backend/iface/SCPInterfaceEntity.java | 44 +--------
.../entity/backend/iface/SSHInterfaceEntity.java | 46 +---------
.../apis/db/entity/data/FileLocationEntity.java | 43 +--------
.../apis/db/entity/data/InDataMovementEntity.java | 49 +---------
.../apis/db/entity/data/OutDataMovementEntity.java | 49 +---------
.../input/CommandLineInputRepository.java | 1 -
.../apis/handlers/ExecutionHandlerTest.java | 34 ++++++-
23 files changed, 258 insertions(+), 605 deletions(-)
diff --git a/modules/airavata-apis/airavata-apis-server/pom.xml
b/modules/airavata-apis/airavata-apis-server/pom.xml
index 05be9af07a..d4642ec899 100644
--- a/modules/airavata-apis/airavata-apis-server/pom.xml
+++ b/modules/airavata-apis/airavata-apis-server/pom.xml
@@ -73,6 +73,16 @@
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.data.jpa}</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>com.github.dozermapper</groupId>
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/APIRunner.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/APIRunner.java
index 506504ca2c..c3f9d5a9cb 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/APIRunner.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/APIRunner.java
@@ -5,6 +5,7 @@ import
org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
@ComponentScan(basePackages = {"org.apache.airavata",
@@ -12,6 +13,7 @@ import org.springframework.context.annotation.PropertySource;
"org.apache.airavata.mft.resource.server.handler"
})
@EntityScan(basePackages = {"org.apache.airavata"})
+@EnableJpaAuditing
@PropertySource(value = "classpath:api.properties")
public class APIRunner {
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ApplicationRunInfoEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ApplicationRunInfoEntity.java
index 3d10974436..62ff3847ae 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ApplicationRunInfoEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ApplicationRunInfoEntity.java
@@ -3,38 +3,28 @@ package org.apache.airavata.apis.db.entity;
import org.apache.airavata.apis.db.entity.application.ApplicationEntity;
import
org.apache.airavata.apis.db.entity.application.runners.DockerRunnerEntity;
import
org.apache.airavata.apis.db.entity.application.runners.SlurmRunnerEntity;
-import org.hibernate.annotations.GenericGenerator;
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
@Entity
-public class ApplicationRunInfoEntity {
+public class ApplicationRunInfoEntity extends BaseEntity {
- @Id
- @Column(name = "APP_RUNNER_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String appRunnerId;
- @OneToOne
- @JoinColumn(name = "application_id", referencedColumnName =
"application_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "application_id")
private ApplicationEntity application;
- @OneToOne
- @JoinColumn(name = "docker_runner_id", referencedColumnName =
"docker_runner_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "docker_runner_id")
DockerRunnerEntity dockerRunner;
- @OneToOne
- @JoinColumn(name = "slurm_runner_id", referencedColumnName =
"slurm_runner_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "slurm_runner_id")
SlurmRunnerEntity slurmRunner;
- public String getAppRunnerId() {
- return appRunnerId;
- }
-
- public void setAppRunnerId(String appRunnerId) {
- this.appRunnerId = appRunnerId;
- }
public ApplicationEntity getApplication() {
return application;
@@ -60,29 +50,4 @@ public class ApplicationRunInfoEntity {
this.slurmRunner = slurmRunner;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((appRunnerId == null) ? 0 :
appRunnerId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ApplicationRunInfoEntity other = (ApplicationRunInfoEntity) obj;
- if (appRunnerId == null) {
- if (other.appRunnerId != null)
- return false;
- } else if (!appRunnerId.equals(other.appRunnerId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/BaseEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/BaseEntity.java
new file mode 100644
index 0000000000..18a99f8819
--- /dev/null
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/BaseEntity.java
@@ -0,0 +1,101 @@
+/*
+ *
+ * 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.apis.db.entity;
+
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.Column;
+import javax.persistence.EntityListeners;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@MappedSuperclass
+@EntityListeners(AuditingEntityListener.class)
+public abstract class BaseEntity {
+
+ @Id
+ @Column(length = 36)
+ String id = UUID.randomUUID().toString();
+
+ @Column(nullable = false, updatable = false)
+ @CreatedDate
+ Instant createdAt;
+
+ @Column
+ @LastModifiedDate
+ Instant lastModifiedAt;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getLastModifiedAt() {
+ return lastModifiedAt;
+ }
+
+ public void setLastModifiedAt(Instant lastModifiedAt) {
+ this.lastModifiedAt = lastModifiedAt;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ BaseEntity other = (BaseEntity) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
+}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/DataMovementConfigurationEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/DataMovementConfigurationEntity.java
index 0c49bb42b5..b4c471b70e 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/DataMovementConfigurationEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/DataMovementConfigurationEntity.java
@@ -2,45 +2,33 @@ package org.apache.airavata.apis.db.entity;
import org.apache.airavata.apis.db.entity.data.InDataMovementEntity;
import org.apache.airavata.apis.db.entity.data.OutDataMovementEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Set;
@Entity
-public class DataMovementConfigurationEntity {
+public class DataMovementConfigurationEntity extends BaseEntity {
- @Id
- @Column(name = "DM_CONFIG_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String dmConfig;
-
- @OneToMany(mappedBy = "dataMovementConfiguration")
+ @OneToMany(mappedBy = "dataMovementConfiguration", cascade =
CascadeType.ALL)
Set<InDataMovementEntity> inMovements;
- @OneToMany(mappedBy = "dataMovementConfiguration")
+ @OneToMany(mappedBy = "dataMovementConfiguration", cascade =
CascadeType.ALL)
Set<OutDataMovementEntity> outMovements;
@ManyToOne
- @JoinColumn(name = "run_config_id")
+ @JoinColumn(name = "run_config_id", nullable = false)
RunConfigurationEntity runConfiguration;
- public String getDmConfig() {
- return dmConfig;
- }
-
- public void setDmConfig(String dmConfig) {
- this.dmConfig = dmConfig;
- }
-
public Set<InDataMovementEntity> getInMovements() {
return inMovements;
}
public void setInMovements(Set<InDataMovementEntity> inMovements) {
this.inMovements = inMovements;
+ for (InDataMovementEntity inMovement : inMovements) {
+ inMovement.setDataMovementConfiguration(this);
+ }
}
public Set<OutDataMovementEntity> getOutMovements() {
@@ -49,6 +37,9 @@ public class DataMovementConfigurationEntity {
public void setOutMovements(Set<OutDataMovementEntity> outMovements) {
this.outMovements = outMovements;
+ for (OutDataMovementEntity outMovement : outMovements) {
+ outMovement.setDataMovementConfiguration(this);
+ }
}
public RunConfigurationEntity getRunConfiguration() {
@@ -59,29 +50,4 @@ public class DataMovementConfigurationEntity {
this.runConfiguration = runConfiguration;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((dmConfig == null) ? 0 :
dmConfig.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- DataMovementConfigurationEntity other =
(DataMovementConfigurationEntity) obj;
- if (dmConfig == null) {
- if (other.dmConfig != null)
- return false;
- } else if (!dmConfig.equals(other.dmConfig))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ExperimentEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ExperimentEntity.java
index 49f86691cf..a8b1e73fc8 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ExperimentEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/ExperimentEntity.java
@@ -1,18 +1,14 @@
package org.apache.airavata.apis.db.entity;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
import java.util.List;
@Entity
-public class ExperimentEntity {
- @Id
- @Column(name = "EXPERIMENT_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String experimentId;
+public class ExperimentEntity extends BaseEntity {
@Column(name = "PROJECT_ID")
String projectId;
@@ -29,15 +25,11 @@ public class ExperimentEntity {
@Column(name = "DESCRIPTION")
String description;
- @OneToMany(mappedBy = "experiment")
+ @OneToMany(mappedBy = "experiment", cascade = CascadeType.ALL)
List<RunConfigurationEntity> runConfigs;
public String getExperimentId() {
- return experimentId;
- }
-
- public void setExperimentId(String experimentId) {
- this.experimentId = experimentId;
+ return getId().toString();
}
public String getProjectId() {
@@ -86,5 +78,8 @@ public class ExperimentEntity {
public void setRunConfigs(List<RunConfigurationEntity> runConfigs) {
this.runConfigs = runConfigs;
+ for (RunConfigurationEntity runConfig : runConfigs) {
+ runConfig.setExperiment(this);
+ }
}
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/RunConfigurationEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/RunConfigurationEntity.java
index 16ea643656..503abe89cd 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/RunConfigurationEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/RunConfigurationEntity.java
@@ -4,45 +4,29 @@ import
org.apache.airavata.apis.db.entity.backend.ComputeBackendEntity;
import org.apache.airavata.apis.db.entity.backend.EC2BackendEntity;
import org.apache.airavata.apis.db.entity.backend.LocalBackendEntity;
import org.apache.airavata.apis.db.entity.backend.ServerBackendEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
@Entity
-public class RunConfigurationEntity {
+public class RunConfigurationEntity extends BaseEntity {
- @Id
- @Column(name = "RUN_CONFIG_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String runConfigId;
-
- @OneToOne
+ @OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "backend_id")
ComputeBackendEntity computeBackend;
- @OneToOne
+ @OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "app_runner_id")
ApplicationRunInfoEntity appRunInfo;
- @OneToMany(mappedBy = "runConfiguration")
+ @OneToMany(mappedBy = "runConfiguration", cascade = CascadeType.ALL)
List<DataMovementConfigurationEntity> dataMovementConfigs;
@ManyToOne
- @JoinColumn(name = "experiment_id")
+ @JoinColumn(name = "experiment_id", nullable = false)
ExperimentEntity experiment;
- public String getRunConfigId() {
- return runConfigId;
- }
-
- public void setRunConfigId(String runConfigId) {
- this.runConfigId = runConfigId;
- }
-
-
public ApplicationRunInfoEntity getAppRunInfo() {
return appRunInfo;
}
@@ -57,6 +41,9 @@ public class RunConfigurationEntity {
public void setDataMovementConfigs(List<DataMovementConfigurationEntity>
dataMovementConfigs) {
this.dataMovementConfigs = dataMovementConfigs;
+ for (DataMovementConfigurationEntity dataMovementConfig :
dataMovementConfigs) {
+ dataMovementConfig.setRunConfiguration(this);
+ }
}
public ComputeBackendEntity getComputeBackend() {
@@ -67,6 +54,14 @@ public class RunConfigurationEntity {
this.computeBackend = computeBackend;
}
+ public ExperimentEntity getExperiment() {
+ return experiment;
+ }
+
+ public void setExperiment(ExperimentEntity experiment) {
+ this.experiment = experiment;
+ }
+
/*
* Helper getters/setters for mapping from/to protobuf messages
*/
@@ -94,30 +89,4 @@ public class RunConfigurationEntity {
public void setLocal(LocalBackendEntity localBackendEntity) {
this.computeBackend = localBackendEntity;
}
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((runConfigId == null) ? 0 :
runConfigId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- RunConfigurationEntity other = (RunConfigurationEntity) obj;
- if (runConfigId == null) {
- if (other.runConfigId != null)
- return false;
- } else if (!runConfigId.equals(other.runConfigId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/ApplicationEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/ApplicationEntity.java
index d3dd767d37..eebf7633f5 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/ApplicationEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/ApplicationEntity.java
@@ -1,32 +1,26 @@
package org.apache.airavata.apis.db.entity.application;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import
org.apache.airavata.apis.db.entity.application.input.ApplicationInputEntity;
import
org.apache.airavata.apis.db.entity.application.output.ApplicationOutputEntity;
-import org.hibernate.annotations.GenericGenerator;
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+
import java.util.Set;
@Entity
-public class ApplicationEntity {
-
- @Id
- @Column(name = "APPLICATION_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String applicationId;
+public class ApplicationEntity extends BaseEntity {
@Column(name = "APPLICATION_NAME")
private String name;
- public String getApplicationId() {
- return applicationId;
- }
-
- @OneToMany(mappedBy="application")
+ @OneToMany(mappedBy = "application", cascade = CascadeType.ALL)
private Set<ApplicationInputEntity> inputs;
- @OneToMany(mappedBy="application")
+ @OneToMany(mappedBy = "application", cascade = CascadeType.ALL)
private Set<ApplicationOutputEntity> outputs;
public Set<ApplicationInputEntity> getInputs() {
@@ -35,6 +29,9 @@ public class ApplicationEntity {
public void setInputs(Set<ApplicationInputEntity> inputs) {
this.inputs = inputs;
+ for (ApplicationInputEntity input : inputs) {
+ input.setApplication(this);
+ }
}
public Set<ApplicationOutputEntity> getOutputs() {
@@ -43,10 +40,9 @@ public class ApplicationEntity {
public void setOutputs(Set<ApplicationOutputEntity> outputs) {
this.outputs = outputs;
- }
-
- public void setApplicationId(String applicationId) {
- this.applicationId = applicationId;
+ for (ApplicationOutputEntity output : outputs) {
+ output.setApplication(this);
+ }
}
public String getName() {
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputEntity.java
index 2139b8f848..ba8645d16e 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputEntity.java
@@ -1,18 +1,12 @@
package org.apache.airavata.apis.db.entity.application.input;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import org.apache.airavata.apis.db.entity.application.ApplicationEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
-public class ApplicationInputEntity {
-
- @Id
- @Column(name = "APPLICATION_INPUT_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String applicationInputId;
+public class ApplicationInputEntity extends BaseEntity {
@Column
private int index;
@@ -36,14 +30,6 @@ public class ApplicationInputEntity {
this.application = application;
}
- public String getApplicationInputId() {
- return applicationInputId;
- }
-
- public void setApplicationInputId(String applicationInputId) {
- this.applicationInputId = applicationInputId;
- }
-
public int getIndex() {
return index;
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputValueEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputValueEntity.java
index 50679fe4b6..22d0a67dd9 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputValueEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/input/ApplicationInputValueEntity.java
@@ -1,30 +1,19 @@
package org.apache.airavata.apis.db.entity.application.input;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
-import javax.persistence.*;
+import javax.persistence.Entity;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.OneToOne;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
-public abstract class ApplicationInputValueEntity {
-
- @Id
- @Column(name = "INPUT_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String inputId;
+public abstract class ApplicationInputValueEntity extends BaseEntity {
@OneToOne(mappedBy = "applicationInputValue")
private ApplicationInputEntity applicationInput;
- public String getInputId() {
- return inputId;
- }
-
- public void setInputId(String inputId) {
- this.inputId = inputId;
- }
-
public ApplicationInputEntity getApplicationInput() {
return applicationInput;
}
@@ -33,29 +22,4 @@ public abstract class ApplicationInputValueEntity {
this.applicationInput = applicationInput;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((inputId == null) ? 0 : inputId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ApplicationInputValueEntity other = (ApplicationInputValueEntity) obj;
- if (inputId == null) {
- if (other.inputId != null)
- return false;
- } else if (!inputId.equals(other.inputId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputEntity.java
index 2ee364c7dc..96893ed75c 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputEntity.java
@@ -1,18 +1,12 @@
package org.apache.airavata.apis.db.entity.application.output;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import org.apache.airavata.apis.db.entity.application.ApplicationEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
-public class ApplicationOutputEntity {
-
- @Id
- @Column(name = "APPLICATION_OUTPUT_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String applicationOutputId;
+public class ApplicationOutputEntity extends BaseEntity {
@Column
private int index;
@@ -36,14 +30,6 @@ public class ApplicationOutputEntity {
this.application = application;
}
- public String getApplicationOutputId() {
- return applicationOutputId;
- }
-
- public void setApplicationOutputId(String applicationOutputId) {
- this.applicationOutputId = applicationOutputId;
- }
-
public int getIndex() {
return index;
}
@@ -76,46 +62,20 @@ public class ApplicationOutputEntity {
this.applicationOutputValue = fileOutput;
}
- public StandardErrorEntity getStandardError() {
+ public StandardErrorEntity getStdErr() {
return applicationOutputValue instanceof StandardErrorEntity ?
(StandardErrorEntity) applicationOutputValue
: null;
}
- public void setStandardError(StandardErrorEntity standardError) {
+ public void setStdErr(StandardErrorEntity standardError) {
this.applicationOutputValue = standardError;
}
- public StandardOutEntity getStandardOut() {
+ public StandardOutEntity getStdOut() {
return applicationOutputValue instanceof StandardOutEntity ?
(StandardOutEntity) applicationOutputValue : null;
}
- public void setStandardOut(StandardOutEntity standardOut) {
+ public void setStdOut(StandardOutEntity standardOut) {
this.applicationOutputValue = standardOut;
}
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((applicationOutputId == null) ? 0 :
applicationOutputId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ApplicationOutputEntity other = (ApplicationOutputEntity) obj;
- if (applicationOutputId == null) {
- if (other.applicationOutputId != null)
- return false;
- } else if (!applicationOutputId.equals(other.applicationOutputId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputValueEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputValueEntity.java
index 7c2a416e6e..f3fd9a69cc 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputValueEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/output/ApplicationOutputValueEntity.java
@@ -1,30 +1,19 @@
package org.apache.airavata.apis.db.entity.application.output;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
-import javax.persistence.*;
+import javax.persistence.Entity;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.OneToOne;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
-public abstract class ApplicationOutputValueEntity {
-
- @Id
- @Column(name = "OUTPUT_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String outputId;
+public abstract class ApplicationOutputValueEntity extends BaseEntity {
@OneToOne(mappedBy = "applicationOutputValue")
private ApplicationOutputEntity applicationOutput;
- public String getOutputId() {
- return outputId;
- }
-
- public void setOutputId(String outputId) {
- this.outputId = outputId;
- }
-
public ApplicationOutputEntity getApplicationOutput() {
return applicationOutput;
}
@@ -32,30 +21,4 @@ public abstract class ApplicationOutputValueEntity {
public void setApplicationOutput(ApplicationOutputEntity
applicationOutput) {
this.applicationOutput = applicationOutput;
}
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((outputId == null) ? 0 :
outputId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ApplicationOutputValueEntity other = (ApplicationOutputValueEntity)
obj;
- if (outputId == null) {
- if (other.outputId != null)
- return false;
- } else if (!outputId.equals(other.outputId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/DockerRunnerEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/DockerRunnerEntity.java
index fa4fb5cb1d..6346c03f32 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/DockerRunnerEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/DockerRunnerEntity.java
@@ -1,18 +1,10 @@
package org.apache.airavata.apis.db.entity.application.runners;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
-import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
@Entity
-public class DockerRunnerEntity {
+public class DockerRunnerEntity extends BaseEntity {
- @Id
- @Column(name = "DOCKER_RUNNER_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String dockerRunnerId;
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/SlurmRunnerEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/SlurmRunnerEntity.java
index 6d194765fc..05c0b70124 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/SlurmRunnerEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/application/runners/SlurmRunnerEntity.java
@@ -1,17 +1,9 @@
package org.apache.airavata.apis.db.entity.application.runners;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
-import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
@Entity
-public class SlurmRunnerEntity {
- @Id
- @Column(name = "SLURM_RUNNER_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String slurmRunnerId;
+public class SlurmRunnerEntity extends BaseEntity {
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ComputeBackendEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ComputeBackendEntity.java
index 83d6b2c5e7..a9f5dc7f63 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ComputeBackendEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ComputeBackendEntity.java
@@ -1,50 +1,13 @@
package org.apache.airavata.apis.db.entity.backend;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
-import javax.persistence.*;
+import javax.persistence.Entity;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
-public abstract class ComputeBackendEntity {
-
- @Id
- @Column(name = "BACKEND_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String backendId;
-
- public String getBackendId() {
- return backendId;
- }
-
- public void setBackendId(String backendId) {
- this.backendId = backendId;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((backendId == null) ? 0 :
backendId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ComputeBackendEntity other = (ComputeBackendEntity) obj;
- if (backendId == null) {
- if (other.backendId != null)
- return false;
- } else if (!backendId.equals(other.backendId))
- return false;
- return true;
- }
+public abstract class ComputeBackendEntity extends BaseEntity {
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ServerBackendEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ServerBackendEntity.java
index ddde970def..e823d20d32 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ServerBackendEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ServerBackendEntity.java
@@ -3,10 +3,7 @@ package org.apache.airavata.apis.db.entity.backend;
import org.apache.airavata.apis.db.entity.backend.iface.SCPInterfaceEntity;
import org.apache.airavata.apis.db.entity.backend.iface.SSHInterfaceEntity;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
+import javax.persistence.*;
@Entity
public class ServerBackendEntity extends ComputeBackendEntity {
@@ -18,12 +15,12 @@ public class ServerBackendEntity extends
ComputeBackendEntity {
@Column
int port;
- @OneToOne
- @JoinColumn(name = "command_interface_id", referencedColumnName =
"ssh_iface_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "command_interface_id")
SSHInterfaceEntity commandInterface;
- @OneToOne
- @JoinColumn(name = "data_interface_id", referencedColumnName =
"scp_iface_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "data_interface_id")
SCPInterfaceEntity dataInterface;
@Column
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SCPInterfaceEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SCPInterfaceEntity.java
index 912d78a567..2d28db992e 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SCPInterfaceEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SCPInterfaceEntity.java
@@ -1,19 +1,12 @@
package org.apache.airavata.apis.db.entity.backend.iface;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
@Entity
-public class SCPInterfaceEntity {
- @Id
- @Column(name = "SCP_IFACE_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String scpInterfaceId;
+public class SCPInterfaceEntity extends BaseEntity {
@Column
String interfaceId;
@@ -27,14 +20,6 @@ public class SCPInterfaceEntity {
@Column
String sshCredentialId;
- public String getScpInterfaceId() {
- return scpInterfaceId;
- }
-
- public void setScpInterfaceId(String scpInterfaceId) {
- this.scpInterfaceId = scpInterfaceId;
- }
-
public String getInterfaceId() {
return interfaceId;
}
@@ -67,29 +52,4 @@ public class SCPInterfaceEntity {
this.sshCredentialId = sshCredentialId;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((scpInterfaceId == null) ? 0 :
scpInterfaceId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- SCPInterfaceEntity other = (SCPInterfaceEntity) obj;
- if (scpInterfaceId == null) {
- if (other.scpInterfaceId != null)
- return false;
- } else if (!scpInterfaceId.equals(other.scpInterfaceId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SSHInterfaceEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SSHInterfaceEntity.java
index e2e37174ff..8713b51e89 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SSHInterfaceEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/iface/SSHInterfaceEntity.java
@@ -1,20 +1,12 @@
package org.apache.airavata.apis.db.entity.backend.iface;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
@Entity
-public class SSHInterfaceEntity {
-
- @Id
- @Column(name = "SSH_IFACE_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String sshInterfaceId;
+public class SSHInterfaceEntity extends BaseEntity {
@Column
String hostName;
@@ -23,14 +15,6 @@ public class SSHInterfaceEntity {
@Column
String sshCredentialId;
- public String getSshInterfaceId() {
- return sshInterfaceId;
- }
-
- public void setSshInterfaceId(String sshInterfaceId) {
- this.sshInterfaceId = sshInterfaceId;
- }
-
public String getHostName() {
return hostName;
}
@@ -55,30 +39,4 @@ public class SSHInterfaceEntity {
this.sshCredentialId = sshCredentialId;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((sshInterfaceId == null) ? 0 :
sshInterfaceId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- SSHInterfaceEntity other = (SSHInterfaceEntity) obj;
- if (sshInterfaceId == null) {
- if (other.sshInterfaceId != null)
- return false;
- } else if (!sshInterfaceId.equals(other.sshInterfaceId))
- return false;
- return true;
- }
-
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/FileLocationEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/FileLocationEntity.java
index 018f33ae1c..a3decd1bf1 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/FileLocationEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/FileLocationEntity.java
@@ -1,20 +1,13 @@
package org.apache.airavata.apis.db.entity.data;
-import org.hibernate.annotations.GenericGenerator;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
@Entity
-public class FileLocationEntity {
+public class FileLocationEntity extends BaseEntity {
- @Id
- @Column(name = "FILE_LOCATION_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String fileLocationId;
@Column
private String storageId;
@Column
@@ -22,13 +15,6 @@ public class FileLocationEntity {
@Column
private String storageCredentialId;
- public String getFileLocationId() {
- return fileLocationId;
- }
-
- public void setFileLocationId(String fileLocationId) {
- this.fileLocationId = fileLocationId;
- }
public String getStorageId() {
return storageId;
@@ -54,29 +40,4 @@ public class FileLocationEntity {
this.storageCredentialId = storageCredentialId;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((fileLocationId == null) ? 0 :
fileLocationId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- FileLocationEntity other = (FileLocationEntity) obj;
- if (fileLocationId == null) {
- if (other.fileLocationId != null)
- return false;
- } else if (!fileLocationId.equals(other.fileLocationId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/InDataMovementEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/InDataMovementEntity.java
index f646f36f70..433a380db1 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/InDataMovementEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/InDataMovementEntity.java
@@ -1,39 +1,25 @@
package org.apache.airavata.apis.db.entity.data;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import org.apache.airavata.apis.db.entity.DataMovementConfigurationEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
-public class InDataMovementEntity {
-
- @Id
- @Column(name = "IN_DM_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String inDataMovementId;
+public class InDataMovementEntity extends BaseEntity {
@Column
int inputIndex;
- @OneToOne
- @JoinColumn(name = "source_location_id", referencedColumnName =
"file_location_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "source_location_id")
FileLocationEntity sourceLocation;
@ManyToOne
- @JoinColumn(name = "dm_config_id", referencedColumnName = "dm_config_id")
+ @JoinColumn(name = "dm_config_id", nullable = false)
DataMovementConfigurationEntity dataMovementConfiguration;
- public String getInDataMovementId() {
- return inDataMovementId;
- }
-
- public void setInDataMovementId(String inDataMovementId) {
- this.inDataMovementId = inDataMovementId;
- }
-
public int getInputIndex() {
return inputIndex;
}
@@ -58,29 +44,4 @@ public class InDataMovementEntity {
this.dataMovementConfiguration = dataMovementConfiguration;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((inDataMovementId == null) ? 0 :
inDataMovementId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- InDataMovementEntity other = (InDataMovementEntity) obj;
- if (inDataMovementId == null) {
- if (other.inDataMovementId != null)
- return false;
- } else if (!inDataMovementId.equals(other.inDataMovementId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/OutDataMovementEntity.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/OutDataMovementEntity.java
index 7a7fe28aa0..a0a7b06216 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/OutDataMovementEntity.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/data/OutDataMovementEntity.java
@@ -1,38 +1,24 @@
package org.apache.airavata.apis.db.entity.data;
+import org.apache.airavata.apis.db.entity.BaseEntity;
import org.apache.airavata.apis.db.entity.DataMovementConfigurationEntity;
-import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
-public class OutDataMovementEntity {
-
- @Id
- @Column(name = "OUT_DM_ID")
- @GeneratedValue(generator = "uuid")
- @GenericGenerator(name = "uuid", strategy = "uuid2")
- private String outDataMovementId;
+public class OutDataMovementEntity extends BaseEntity {
@Column
int outputIndex = 1;
- @OneToOne
- @JoinColumn(name = "destination_location_id", referencedColumnName =
"file_location_id")
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "destination_location_id")
FileLocationEntity destinationLocation;
@ManyToOne
- @JoinColumn(name = "dm_config_id", referencedColumnName = "dm_config_id")
+ @JoinColumn(name = "dm_config_id", nullable = false)
DataMovementConfigurationEntity dataMovementConfiguration;
- public String getOutDataMovementId() {
- return outDataMovementId;
- }
-
- public void setOutDataMovementId(String outDataMovementId) {
- this.outDataMovementId = outDataMovementId;
- }
-
public int getOutputIndex() {
return outputIndex;
}
@@ -57,29 +43,4 @@ public class OutDataMovementEntity {
this.dataMovementConfiguration = dataMovementConfiguration;
}
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((outDataMovementId == null) ? 0 :
outDataMovementId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- OutDataMovementEntity other = (OutDataMovementEntity) obj;
- if (outDataMovementId == null) {
- if (other.outDataMovementId != null)
- return false;
- } else if (!outDataMovementId.equals(other.outDataMovementId))
- return false;
- return true;
- }
-
}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/repository/application/input/CommandLineInputRepository.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/repository/application/input/CommandLineInputRepository.java
index 9da2174854..8ce47a9e04 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/repository/application/input/CommandLineInputRepository.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/repository/application/input/CommandLineInputRepository.java
@@ -1,6 +1,5 @@
package org.apache.airavata.apis.db.repository.application.input;
-import
org.apache.airavata.apis.db.entity.application.input.ApplicationInputEntity;
import
org.apache.airavata.apis.db.entity.application.input.CommandLineInputEntity;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
diff --git
a/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
index d96007e02b..26e66cd1ba 100644
---
a/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
+++
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
@@ -14,6 +14,8 @@ import
org.apache.airavata.apis.db.entity.application.input.EnvironmentInputEnti
import org.apache.airavata.apis.db.entity.application.input.FileInputEntity;
import
org.apache.airavata.apis.db.entity.application.output.ApplicationOutputEntity;
import org.apache.airavata.apis.db.entity.application.output.FileOutputEntity;
+import
org.apache.airavata.apis.db.entity.application.output.StandardErrorEntity;
+import org.apache.airavata.apis.db.entity.application.output.StandardOutEntity;
import org.apache.airavata.apis.db.entity.backend.ComputeBackendEntity;
import org.apache.airavata.apis.db.entity.backend.ServerBackendEntity;
import org.apache.airavata.apis.db.entity.backend.iface.SCPInterfaceEntity;
@@ -25,6 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.EntityManager;
+
import java.util.Optional;
import static org.junit.Assert.assertEquals;
@@ -41,6 +45,9 @@ public class ExecutionHandlerTest {
@Autowired
ExperimentRepository experimentRepository;
+ @Autowired
+ EntityManager entityManager;
+
@Test
void testExperimentMapping() {
@@ -65,13 +72,19 @@ public class ExecutionHandlerTest {
ApplicationInput applicationInput3 =
ApplicationInput.newBuilder().setIndex(3)
.setEnvironmentInput(environmentInput).setRequired(false).build();
// ApplicationOutputs
- // TODO: add StandardOut and StandardError outputs as well
FileOutput fileOutput =
FileOutput.newBuilder().setFriendlyName("output-file")
.setDestinationPath("/scratch/workdir/output.file").build();
ApplicationOutput applicationOutput =
ApplicationOutput.newBuilder().setIndex(1).setFileOutput(fileOutput)
.setRequired(true).build();
+ StandardOut standardOut =
StandardOut.newBuilder().setDestinationPath("/scratch/workdir/stdout").build();
+ ApplicationOutput applicationOutput2 =
ApplicationOutput.newBuilder().setIndex(2).setStdOut(standardOut)
+ .setRequired(false).build();
+ StandardError standardError =
StandardError.newBuilder().setDestinationPath("/scratch/workdir/stderr").build();
+ ApplicationOutput applicationOutput3 =
ApplicationOutput.newBuilder().setIndex(3).setStdErr(standardError)
+ .setRequired(false).build();
Application application =
Application.newBuilder().setName("test-application").addInputs(applicationInput)
.addInputs(applicationInput2).addInputs(applicationInput3).addOutputs(applicationOutput)
+ .addOutputs(applicationOutput2).addOutputs(applicationOutput3)
.build();
ApplicationRunInfo applicationRunInfo =
ApplicationRunInfo.newBuilder().setApplication(application).build();
FileLocation sourceLocation =
FileLocation.newBuilder().setStorageId("source-location-storage-id").build();
@@ -95,6 +108,9 @@ public class ExecutionHandlerTest {
assertTrue(responseObserver.isCompleted());
String experimentId = responseObserver.getNext().getExperimentId();
+ // Force flushing experiment to database, then reload from database
+ entityManager.flush();
+ entityManager.clear();
ExperimentEntity experimentEntity =
experimentRepository.findById(experimentId).get();
assertEquals(experiment.getCreationTime(),
experimentEntity.getCreationTime());
@@ -166,6 +182,22 @@ public class ExecutionHandlerTest {
assertNotNull(fileOutputEntity);
assertEquals(fileOutput.getFriendlyName(),
fileOutputEntity.getFriendlyName());
assertEquals(fileOutput.getDestinationPath(),
fileOutputEntity.getDestinationPath());
+ maybeApplicationOutputEntity = applicationEntity.getOutputs().stream()
+ .filter(o -> o.getIndex() ==
applicationOutput2.getIndex()).findFirst();
+ assertTrue(maybeApplicationOutputEntity.isPresent());
+ assertEquals(applicationOutput2.getRequired(),
maybeApplicationOutputEntity.get().isRequired());
+ // StandardOut, index=2
+ StandardOutEntity standardOutEntity =
maybeApplicationOutputEntity.get().getStdOut();
+ assertNotNull(standardOutEntity);
+ assertEquals(standardOut.getDestinationPath(),
standardOutEntity.getDestinationPath());
+ maybeApplicationOutputEntity = applicationEntity.getOutputs().stream()
+ .filter(o -> o.getIndex() ==
applicationOutput3.getIndex()).findFirst();
+ assertTrue(maybeApplicationOutputEntity.isPresent());
+ assertEquals(applicationOutput3.getRequired(),
maybeApplicationOutputEntity.get().isRequired());
+ // StandardError, index=3
+ StandardErrorEntity standardErrorEntity =
maybeApplicationOutputEntity.get().getStdErr();
+ assertNotNull(standardErrorEntity);
+ assertEquals(standardError.getDestinationPath(),
standardErrorEntity.getDestinationPath());
// DataMovementConfiguration
assertEquals(runConfiguration.getDataMovementConfigsCount(),
runConfigEntity.getDataMovementConfigs().size());