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 a60db2652d WIP: fixed mappings, APIRunner now can start up
a60db2652d is described below

commit a60db2652d4497ddaa43fc65e5c473f6cf0e6126
Author: Marcus Christie <[email protected]>
AuthorDate: Tue May 30 17:49:58 2023 -0400

    WIP: fixed mappings, APIRunner now can start up
---
 .../apis/db/entity/ApplicationRunInfoEntity.java   | 70 ++++++++++++++++++--
 .../db/entity/DataMovementConfigurationEntity.java | 74 ++++++++++++++++++++--
 .../airavata/apis/db/entity/ExperimentEntity.java  |  7 +-
 .../apis/db/entity/RunConfigurationEntity.java     | 49 +++++---------
 .../db/entity/backend/ComputeBackendEntity.java    | 51 +++++++++++++++
 .../apis/db/entity/backend/EC2BackendEntity.java   | 37 ++++++++---
 .../apis/db/entity/backend/LocalBackendEntity.java | 29 ++++++---
 .../db/entity/backend/ServerBackendEntity.java     | 61 ++++++++++++++----
 .../entity/backend/iface/SCPInterfaceEntity.java   | 32 +++++++++-
 .../entity/backend/iface/SSHInterfaceEntity.java   | 63 ++++++++++++++++++
 .../apis/db/entity/data/FileLocationEntity.java    | 64 ++++++++++++++++++-
 .../apis/db/entity/data/InDataMovementEntity.java  | 73 +++++++++++++++++++--
 .../apis/db/entity/data/OutDataMovementEntity.java | 73 +++++++++++++++++++--
 .../src/main/proto/execution/experiment_stub.proto |  6 +-
 pom.xml                                            |  4 +-
 15 files changed, 598 insertions(+), 95 deletions(-)

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 9aea690dfb..3d10974436 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
@@ -5,10 +5,7 @@ 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.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
 public class ApplicationRunInfoEntity {
@@ -19,8 +16,73 @@ public class ApplicationRunInfoEntity {
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String appRunnerId;
 
+    @OneToOne
+    @JoinColumn(name = "application_id", referencedColumnName = 
"application_id")
     private ApplicationEntity application;
 
+    @OneToOne
+    @JoinColumn(name = "docker_runner_id", referencedColumnName = 
"docker_runner_id")
     DockerRunnerEntity dockerRunner;
+
+    @OneToOne
+    @JoinColumn(name = "slurm_runner_id", referencedColumnName = 
"slurm_runner_id")
     SlurmRunnerEntity slurmRunner;
+
+    public String getAppRunnerId() {
+        return appRunnerId;
+    }
+
+    public void setAppRunnerId(String appRunnerId) {
+        this.appRunnerId = appRunnerId;
+    }
+
+    public ApplicationEntity getApplication() {
+        return application;
+    }
+
+    public void setApplication(ApplicationEntity application) {
+        this.application = application;
+    }
+
+    public DockerRunnerEntity getDockerRunner() {
+        return dockerRunner;
+    }
+
+    public void setDockerRunner(DockerRunnerEntity dockerRunner) {
+        this.dockerRunner = dockerRunner;
+    }
+
+    public SlurmRunnerEntity getSlurmRunner() {
+        return slurmRunner;
+    }
+
+    public void setSlurmRunner(SlurmRunnerEntity slurmRunner) {
+        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/DataMovementConfigurationEntity.java
 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/DataMovementConfigurationEntity.java
index 6c405c2b25..0c49bb42b5 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
@@ -4,10 +4,8 @@ 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.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
+
 import java.util.Set;
 
 @Entity
@@ -18,6 +16,72 @@ public class DataMovementConfigurationEntity {
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String dmConfig;
+
+    @OneToMany(mappedBy = "dataMovementConfiguration")
     Set<InDataMovementEntity> inMovements;
-    Set<OutDataMovementEntity> ourMovements;
+
+    @OneToMany(mappedBy = "dataMovementConfiguration")
+    Set<OutDataMovementEntity> outMovements;
+
+    @ManyToOne
+    @JoinColumn(name = "run_config_id")
+    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;
+    }
+
+    public Set<OutDataMovementEntity> getOutMovements() {
+        return outMovements;
+    }
+
+    public void setOutMovements(Set<OutDataMovementEntity> outMovements) {
+        this.outMovements = outMovements;
+    }
+
+    public RunConfigurationEntity getRunConfiguration() {
+        return runConfiguration;
+    }
+
+    public void setRunConfiguration(RunConfigurationEntity runConfiguration) {
+        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 d1073c0017..49f86691cf 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
@@ -2,10 +2,8 @@ package org.apache.airavata.apis.db.entity;
 
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
+
 import java.util.List;
 
 @Entity
@@ -31,6 +29,7 @@ public class ExperimentEntity {
     @Column(name = "DESCRIPTION")
     String description;
 
+    @OneToMany(mappedBy = "experiment")
     List<RunConfigurationEntity> runConfigs;
 
     public String getExperimentId() {
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 b4546b8066..e5b132cd8d 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
@@ -1,14 +1,10 @@
 package org.apache.airavata.apis.db.entity;
 
-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.apache.airavata.apis.db.entity.backend.ComputeBackendEntity;
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
+
 import java.util.List;
 
 @Entity
@@ -19,12 +15,22 @@ public class RunConfigurationEntity {
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String runConfigId;
-    ServerBackendEntity server;
-    EC2BackendEntity ec2;
-    LocalBackendEntity local;
+
+    @OneToOne
+    @JoinColumn(name = "backend_id")
+    ComputeBackendEntity computeBackend;
+
+    @OneToOne
+    @JoinColumn(name = "app_runner_id")
     ApplicationRunInfoEntity appRunInfo;
+
+    @OneToMany(mappedBy = "runConfiguration")
     List<DataMovementConfigurationEntity> dataMovementConfigs;
 
+    @ManyToOne
+    @JoinColumn(name = "experiment_id")
+    ExperimentEntity experiment;
+
     public String getRunConfigId() {
         return runConfigId;
     }
@@ -33,29 +39,6 @@ public class RunConfigurationEntity {
         this.runConfigId = runConfigId;
     }
 
-    public ServerBackendEntity getServer() {
-        return server;
-    }
-
-    public void setServer(ServerBackendEntity server) {
-        this.server = server;
-    }
-
-    public EC2BackendEntity getEc2() {
-        return ec2;
-    }
-
-    public void setEc2(EC2BackendEntity ec2) {
-        this.ec2 = ec2;
-    }
-
-    public LocalBackendEntity getLocal() {
-        return local;
-    }
-
-    public void setLocal(LocalBackendEntity local) {
-        this.local = local;
-    }
 
     public ApplicationRunInfoEntity getAppRunInfo() {
         return appRunInfo;
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
new file mode 100644
index 0000000000..4939dc49f5
--- /dev/null
+++ 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/ComputeBackendEntity.java
@@ -0,0 +1,51 @@
+package org.apache.airavata.apis.db.entity.backend;
+
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+
+@Entity
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+@DiscriminatorColumn(name = "backend_type")
+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;
+    }
+
+}
diff --git 
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/EC2BackendEntity.java
 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/EC2BackendEntity.java
index 919a21b00e..cdfde29b15 100644
--- 
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/EC2BackendEntity.java
+++ 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/EC2BackendEntity.java
@@ -1,20 +1,13 @@
 package org.apache.airavata.apis.db.entity.backend;
 
-import org.hibernate.annotations.GenericGenerator;
-
 import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
 
 @Entity
-public class EC2BackendEntity {
+@DiscriminatorValue("EC2")
+public class EC2BackendEntity extends ComputeBackendEntity {
 
-    @Id
-    @Column(name = "BACKEND_ID")
-    @GeneratedValue(generator = "uuid")
-    @GenericGenerator(name = "uuid", strategy = "uuid2")
-    private String backendId;
     @Column
     String flavor;
     @Column
@@ -23,4 +16,28 @@ public class EC2BackendEntity {
     @Column
     String awsCredentialId;
 
+    public String getFlavor() {
+        return flavor;
+    }
+
+    public void setFlavor(String flavor) {
+        this.flavor = flavor;
+    }
+
+    public String getRegion() {
+        return region;
+    }
+
+    public void setRegion(String region) {
+        this.region = region;
+    }
+
+    public String getAwsCredentialId() {
+        return awsCredentialId;
+    }
+
+    public void setAwsCredentialId(String awsCredentialId) {
+        this.awsCredentialId = awsCredentialId;
+    }
+
 }
diff --git 
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/LocalBackendEntity.java
 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/LocalBackendEntity.java
index 81d0cdd317..f129ea7165 100644
--- 
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/LocalBackendEntity.java
+++ 
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/db/entity/backend/LocalBackendEntity.java
@@ -1,24 +1,33 @@
 package org.apache.airavata.apis.db.entity.backend;
 
-import org.hibernate.annotations.GenericGenerator;
-
 import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
 
 @Entity
-public class LocalBackendEntity {
+@DiscriminatorValue("LOCAL")
+public class LocalBackendEntity extends ComputeBackendEntity {
 
-    @Id
-    @Column(name = "BACKEND_ID")
-    @GeneratedValue(generator = "uuid")
-    @GenericGenerator(name = "uuid", strategy = "uuid2")
-    private String backendId;
 
     @Column
     String agentId;
     @Column
     String agentTokenId;
 
+    public String getAgentId() {
+        return agentId;
+    }
+
+    public void setAgentId(String agentId) {
+        this.agentId = agentId;
+    }
+
+    public String getAgentTokenId() {
+        return agentTokenId;
+    }
+
+    public void setAgentTokenId(String agentTokenId) {
+        this.agentTokenId = agentTokenId;
+    }
+
 }
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 7bf7f0b25f..e5e3646da2 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
@@ -2,30 +2,69 @@ 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 org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
-public class ServerBackendEntity {
+@DiscriminatorValue("SERVER")
+public class ServerBackendEntity extends ComputeBackendEntity {
 
-    @Id
-    @Column(name = "BACKEND_ID")
-    @GeneratedValue(generator = "uuid")
-    @GenericGenerator(name = "uuid", strategy = "uuid2")
-    private String backendId;
 
     @Column
     String hostName;
+
     @Column
     int port;
 
+    @OneToOne
+    @JoinColumn(name = "command_interface_id", referencedColumnName = 
"ssh_iface_id")
     SSHInterfaceEntity commandInterface;
+
+    @OneToOne
+    @JoinColumn(name = "data_interface_id", referencedColumnName = 
"scp_iface_id")
     SCPInterfaceEntity dataInterface;
+
     @Column
     String workingDirectory;
 
+    public String getHostName() {
+        return hostName;
+    }
+
+    public void setHostName(String hostName) {
+        this.hostName = hostName;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    public SSHInterfaceEntity getCommandInterface() {
+        return commandInterface;
+    }
+
+    public void setCommandInterface(SSHInterfaceEntity commandInterface) {
+        this.commandInterface = commandInterface;
+    }
+
+    public SCPInterfaceEntity getDataInterface() {
+        return dataInterface;
+    }
+
+    public void setDataInterface(SCPInterfaceEntity dataInterface) {
+        this.dataInterface = dataInterface;
+    }
+
+    public String getWorkingDirectory() {
+        return workingDirectory;
+    }
+
+    public void setWorkingDirectory(String workingDirectory) {
+        this.workingDirectory = workingDirectory;
+    }
+
 }
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 f381b43d33..912d78a567 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
@@ -22,7 +22,7 @@ public class SCPInterfaceEntity {
     String hostName;
 
     @Column
-    String port;
+    Integer port;
 
     @Column
     String sshCredentialId;
@@ -51,11 +51,11 @@ public class SCPInterfaceEntity {
         this.hostName = hostName;
     }
 
-    public String getPort() {
+    public Integer getPort() {
         return port;
     }
 
-    public void setPort(String port) {
+    public void setPort(Integer port) {
         this.port = port;
     }
 
@@ -66,4 +66,30 @@ public class SCPInterfaceEntity {
     public void setSshCredentialId(String sshCredentialId) {
         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 6036265084..e2e37174ff 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
@@ -16,6 +16,69 @@ public class SSHInterfaceEntity {
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String sshInterfaceId;
 
+    @Column
+    String hostName;
+    @Column
+    Integer port;
+    @Column
+    String sshCredentialId;
+
+    public String getSshInterfaceId() {
+        return sshInterfaceId;
+    }
+
+    public void setSshInterfaceId(String sshInterfaceId) {
+        this.sshInterfaceId = sshInterfaceId;
+    }
+
+    public String getHostName() {
+        return hostName;
+    }
+
+    public void setHostName(String hostName) {
+        this.hostName = hostName;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getSshCredentialId() {
+        return sshCredentialId;
+    }
+
+    public void setSshCredentialId(String sshCredentialId) {
+        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 83874d9f11..018f33ae1c 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
@@ -16,9 +16,67 @@ public class FileLocationEntity {
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String fileLocationId;
     @Column
-    String storageId;
+    private String storageId;
     @Column
-    String path;
+    private String path;
     @Column
-    String storageCredentialId;
+    private String storageCredentialId;
+
+    public String getFileLocationId() {
+        return fileLocationId;
+    }
+
+    public void setFileLocationId(String fileLocationId) {
+        this.fileLocationId = fileLocationId;
+    }
+
+    public String getStorageId() {
+        return storageId;
+    }
+
+    public void setStorageId(String storageId) {
+        this.storageId = storageId;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public String getStorageCredentialId() {
+        return storageCredentialId;
+    }
+
+    public void setStorageCredentialId(String storageCredentialId) {
+        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 2a76d0739c..f646f36f70 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,12 +1,10 @@
 package org.apache.airavata.apis.db.entity.data;
 
 
+import org.apache.airavata.apis.db.entity.DataMovementConfigurationEntity;
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
 public class InDataMovementEntity {
@@ -16,6 +14,73 @@ public class InDataMovementEntity {
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String inDataMovementId;
+
+    @Column
     int inputIndex;
+
+    @OneToOne
+    @JoinColumn(name = "source_location_id", referencedColumnName = 
"file_location_id")
     FileLocationEntity sourceLocation;
+
+    @ManyToOne
+    @JoinColumn(name = "dm_config_id", referencedColumnName = "dm_config_id")
+    DataMovementConfigurationEntity dataMovementConfiguration;
+
+    public String getInDataMovementId() {
+        return inDataMovementId;
+    }
+
+    public void setInDataMovementId(String inDataMovementId) {
+        this.inDataMovementId = inDataMovementId;
+    }
+
+    public int getInputIndex() {
+        return inputIndex;
+    }
+
+    public void setInputIndex(int inputIndex) {
+        this.inputIndex = inputIndex;
+    }
+
+    public FileLocationEntity getSourceLocation() {
+        return sourceLocation;
+    }
+
+    public void setSourceLocation(FileLocationEntity sourceLocation) {
+        this.sourceLocation = sourceLocation;
+    }
+
+    public DataMovementConfigurationEntity getDataMovementConfiguration() {
+        return dataMovementConfiguration;
+    }
+
+    public void setDataMovementConfiguration(DataMovementConfigurationEntity 
dataMovementConfiguration) {
+        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 fb4a724b0a..7a7fe28aa0 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,11 +1,9 @@
 package org.apache.airavata.apis.db.entity.data;
 
+import org.apache.airavata.apis.db.entity.DataMovementConfigurationEntity;
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 
 @Entity
 public class OutDataMovementEntity {
@@ -15,6 +13,73 @@ public class OutDataMovementEntity {
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String outDataMovementId;
+
+    @Column
     int outputIndex = 1;
+
+    @OneToOne
+    @JoinColumn(name = "destination_location_id", referencedColumnName = 
"file_location_id")
     FileLocationEntity destinationLocation;
+
+    @ManyToOne
+    @JoinColumn(name = "dm_config_id", referencedColumnName = "dm_config_id")
+    DataMovementConfigurationEntity dataMovementConfiguration;
+
+    public String getOutDataMovementId() {
+        return outDataMovementId;
+    }
+
+    public void setOutDataMovementId(String outDataMovementId) {
+        this.outDataMovementId = outDataMovementId;
+    }
+
+    public int getOutputIndex() {
+        return outputIndex;
+    }
+
+    public void setOutputIndex(int outputIndex) {
+        this.outputIndex = outputIndex;
+    }
+
+    public FileLocationEntity getDestinationLocation() {
+        return destinationLocation;
+    }
+
+    public void setDestinationLocation(FileLocationEntity destinationLocation) 
{
+        this.destinationLocation = destinationLocation;
+    }
+
+    public DataMovementConfigurationEntity getDataMovementConfiguration() {
+        return dataMovementConfiguration;
+    }
+
+    public void setDataMovementConfiguration(DataMovementConfigurationEntity 
dataMovementConfiguration) {
+        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-stub/src/main/proto/execution/experiment_stub.proto
 
b/modules/airavata-apis/airavata-apis-stub/src/main/proto/execution/experiment_stub.proto
index d8c9dc88c5..bd87663933 100644
--- 
a/modules/airavata-apis/airavata-apis-stub/src/main/proto/execution/experiment_stub.proto
+++ 
b/modules/airavata-apis/airavata-apis-stub/src/main/proto/execution/experiment_stub.proto
@@ -97,14 +97,14 @@ message ApplicationRunInfo {
 message SSHInterface {
   string interfaceId = 1;
   string hostName = 2;
-  string port = 3;
+  int32 port = 3;
   string sshCredentialId = 4;
 }
 
 message SCPInterface {
   string interfaceId = 1;
   string hostName = 2;
-  string port = 3;
+  int32 port = 3;
   string sshCredentialId = 4;
 }
 
@@ -149,7 +149,7 @@ message OutDataMovement {
 
 message DataMovementConfiguration {
   repeated InDataMovement inMovements = 1;
-  repeated OutDataMovement ourMovements = 2;
+  repeated OutDataMovement outMovements = 2;
 }
 
 message Experiment {
diff --git a/pom.xml b/pom.xml
index 6f8d81cdd9..e74380166e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,9 @@
         <protobuf.maven.plugin>0.5.1</protobuf.maven.plugin>
         <os.maven.plugin>1.5.0.Final</os.maven.plugin>
         <protobuf.java>3.21.11</protobuf.java>
-        <grpc.version>1.54.0</grpc.version>
+        <!-- This needs to match the grpc version used by grpc.spring.boot -->
+        <!-- see 
https://github.com/LogNet/grpc-spring-boot-starter/blob/master/ReleaseNotes.md 
-->
+        <grpc.version>1.47.0</grpc.version>
         <h2>1.4.191</h2>
         <spring.boot.data.jpa>2.2.1.RELEASE</spring.boot.data.jpa>
         <grpc.spring.boot>4.7.1</grpc.spring.boot>

Reply via email to