Repository: airavata
Updated Branches:
  refs/heads/master 3cdea29b3 -> f1d300eed


adding email monitor property to app catalog


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f1d300ee
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f1d300ee
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f1d300ee

Branch: refs/heads/master
Commit: f1d300eed52fc8bef586cde568e875ed1b7a5ddb
Parents: 3cdea29
Author: Chathuri Wimalasena <[email protected]>
Authored: Mon Apr 13 14:09:52 2015 -0400
Committer: Chathuri Wimalasena <[email protected]>
Committed: Mon Apr 13 14:09:52 2015 -0400

----------------------------------------------------------------------
 .../tools/RegisterSampleApplications.java       |   4 +-
 .../catalog/data/impl/ComputeResourceImpl.java  |  23 +-
 .../catalog/data/model/SshJobSubmission.java    |  22 +-
 .../data/resources/AbstractResource.java        |   5 +
 .../data/resources/EmailPropertyResource.java   | 308 +++++++++++++++++++
 .../resources/SshJobSubmissionResource.java     |  21 --
 .../catalog/data/util/AppCatalogJPAUtils.java   |  22 +-
 .../data/util/AppCatalogResourceType.java       |   3 +-
 .../data/util/AppCatalogThriftConversion.java   |  34 +-
 .../src/main/resources/META-INF/persistence.xml |   1 +
 .../src/main/resources/appcatalog-derby.sql     |  31 +-
 .../src/main/resources/appcatalog-mysql.sql     |  29 +-
 .../app/catalog/test/ComputeResourceTest.java   |  11 +
 .../src/test/resources/appcatalog-derby.sql     |  15 +
 14 files changed, 448 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index 19999e0..f90f633 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -536,10 +536,10 @@ public class RegisterSampleApplications {
 //            applicationInputs.add(input2); applicationInputs.add(input3);
 
             OutputDataObjectType output1 = 
RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
-                    "", DataType.STDOUT, false, false);
+                    "", DataType.STDOUT, true, false);
 
             OutputDataObjectType output2 = 
RegisterSampleApplicationsUtils.createAppOutput("Echoed_Error",
-                    "", DataType.STDERR, false, false);
+                    "", DataType.STDERR, true, false);
 
             List<OutputDataObjectType> applicationOutputs = new 
ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
index 75b0987..2c21811 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
@@ -176,13 +176,30 @@ public class ComputeResourceImpl implements 
ComputeResource {
     @Override
     public String addSSHJobSubmission(SSHJobSubmission sshJobSubmission) 
throws AppCatalogException {
         try {
-               
sshJobSubmission.setJobSubmissionInterfaceId(AppCatalogUtils.getID("SSH"));
+            String submissionId = AppCatalogUtils.getID("SSH");
+            sshJobSubmission.setJobSubmissionInterfaceId(submissionId);
                String resourceJobManagerId = 
addResourceJobManager(sshJobSubmission.getResourceJobManager());
                SshJobSubmissionResource resource = 
AppCatalogThriftConversion.getSSHJobSubmission(sshJobSubmission);
                resource.setResourceJobManagerId(resourceJobManagerId);
                
resource.getResourceJobManagerResource().setResourceJobManagerId(resourceJobManagerId);
-               resource.save();
-               return resource.getJobSubmissionInterfaceId();
+            if (sshJobSubmission.getMonitorMode() != null){
+                
resource.setMonitorMode(sshJobSubmission.getMonitorMode().toString());
+            }
+            resource.save();
+            EmailMonitorProperty emailMonitorProperty = 
sshJobSubmission.getEmailMonitorProperty();
+            if (emailMonitorProperty != null){
+                EmailPropertyResource emailPropertyResource = new 
EmailPropertyResource();
+                
emailPropertyResource.setJobSubmissionInterfaceId(submissionId);
+                emailPropertyResource.setHost(emailMonitorProperty.getHost());
+                
emailPropertyResource.setPassword(emailMonitorProperty.getPassword());
+                
emailPropertyResource.setEmailAddress(emailMonitorProperty.getEmailAddress());
+                
emailPropertyResource.setFolderName(emailMonitorProperty.getFolderName());
+                if (emailMonitorProperty.getStoreProtocol() != null){
+                    
emailPropertyResource.setProtocol(emailMonitorProperty.getStoreProtocol().toString());
+                }
+                emailPropertyResource.save();
+            }
+               return submissionId;
         }catch (Exception e) {
             logger.error("Error while saving SSH Job Submission...", e);
             throw new AppCatalogException(e);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
index 8e812c4..a5a1a8e 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/model/SshJobSubmission.java
@@ -32,6 +32,7 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
+import 
org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
 import org.apache.openjpa.persistence.DataCache;
 
 @DataCache
@@ -62,12 +63,6 @@ public class SshJobSubmission implements Serializable {
     @Column(name = "MONITOR_MODE")
     private String monitorMode;
 
-    @Column(name = "EMAIL_MONITOR_PROPERTY_ID")
-    private String emailMonitorPropertyId;
-
-    @JoinColumn(name = "EMAIL_MONITOR_PROPERTY_ID")
-    private EmailMonitorProperty emailMonitorProperty;
-
     @Column(name = "CREATION_TIME")
     private Timestamp creationTime;
 
@@ -147,19 +142,4 @@ public class SshJobSubmission implements Serializable {
         this.monitorMode = monitorMode;
     }
 
-    public EmailMonitorProperty getEmailMonitorProperty() {
-        return emailMonitorProperty;
-    }
-
-    public void setEmailMonitorProperty(EmailMonitorProperty 
emailMonitorProperty) {
-        this.emailMonitorProperty = emailMonitorProperty;
-    }
-
-    public String getEmailMonitorPropertyId() {
-        return emailMonitorPropertyId;
-    }
-
-    public void setEmailMonitorPropertyId(String emailMonitorPropertyId) {
-        this.emailMonitorPropertyId = emailMonitorPropertyId;
-    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
index 6887f8a..e1b042d 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AbstractResource.java
@@ -62,10 +62,15 @@ public abstract class AbstractResource implements Resource {
        public static final String LOCAL_SUBMISSION = "LocalSubmission";
        public static final String LOCAL_DATA_MOVEMENT = "LocalDataMovement";
        public static final String SSH_JOB_SUBMISSION = "SshJobSubmission";
+       public static final String EMAIL_PROPERTY = "EmailMonitorProperty";
     public static final String CLOUD_JOB_SUBMISSION = "CloudJobSubmission";
     public static final String MODULE_LOAD_CMD = "ModuleLoadCmd";
     public static final String WORKFLOW = "Workflow";
 
+    public final class EmailMonitorPropertyConstants {
+        public static final String JOB_SUBMISSION_INTERFACE_ID = 
"jobSubmissionId";
+    }
+
        // Compute Resource Table
        public final class ComputeResourceConstants {
                public static final String RESOURCE_DESCRIPTION = 
"resourceDescription";

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/EmailPropertyResource.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/EmailPropertyResource.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/EmailPropertyResource.java
new file mode 100644
index 0000000..820e0e8
--- /dev/null
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/EmailPropertyResource.java
@@ -0,0 +1,308 @@
+/**
+ * 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.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import 
org.apache.aiaravata.application.catalog.data.model.EmailMonitorProperty;
+import org.apache.aiaravata.application.catalog.data.model.ResourceJobManager;
+import org.apache.aiaravata.application.catalog.data.model.SshJobSubmission;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+public class EmailPropertyResource extends AbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(EmailPropertyResource.class);
+       private String jobSubmissionInterfaceId;
+       private String host;
+       private String emailAddress;
+       private String password;
+    private String folderName;
+    private String protocol;
+    private SshJobSubmissionResource sshJobSubmissionResource;
+
+       @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(EMAIL_PROPERTY);
+                       
generator.setParameter(EmailMonitorPropertyConstants.JOB_SUBMISSION_INTERFACE_ID,
 identifier);
+                       Query q = generator.deleteQuery(em);
+                       q.executeUpdate();
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public Resource get(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(EMAIL_PROPERTY);
+                       
generator.setParameter(EmailMonitorPropertyConstants.JOB_SUBMISSION_INTERFACE_ID,
 identifier);
+                       Query q = generator.selectQuery(em);
+                       EmailMonitorProperty emailProperty = 
(EmailMonitorProperty) q.getSingleResult();
+                       EmailPropertyResource emailPropertyResource = 
(EmailPropertyResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.EMAIL_MONITOR_PROPERTY, 
emailProperty);
+                       em.getTransaction().commit();
+                       em.close();
+                       return emailPropertyResource;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public List<Resource> get(String fieldName, Object value) throws 
AppCatalogException {
+               List<Resource> sshJobSubmissionResources = new 
ArrayList<Resource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(EMAIL_PROPERTY);
+                       Query q;
+                       if 
(fieldName.equals(EmailMonitorPropertyConstants.JOB_SUBMISSION_INTERFACE_ID)){
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       EmailMonitorProperty 
emailMonitorProperty = (EmailMonitorProperty) result;
+                                       EmailPropertyResource 
emailPropertyResource = (EmailPropertyResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.EMAIL_MONITOR_PROPERTY, 
emailMonitorProperty);
+                                       
sshJobSubmissionResources.add(emailPropertyResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Ssh 
Job Submission Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Ssh Job Submission Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return sshJobSubmissionResources;
+       }
+
+    @Override
+    public List<Resource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> sshJobSubmissionResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(EMAIL_PROPERTY);
+                       Query q;
+                       if 
(fieldName.equals(EmailMonitorPropertyConstants.JOB_SUBMISSION_INTERFACE_ID)) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       EmailMonitorProperty monitorProperty = 
(EmailMonitorProperty) result;
+                                       EmailPropertyResource 
emailPropertyResource = (EmailPropertyResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.EMAIL_MONITOR_PROPERTY, 
monitorProperty);
+                                       
sshJobSubmissionResourceIDs.add(emailPropertyResource.getJobSubmissionInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Ssh 
Job Submission Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Ssh Job Submission Resource.");
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+               return sshJobSubmissionResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       EmailMonitorProperty monitorProperty = 
em.find(EmailMonitorProperty.class, jobSubmissionInterfaceId);
+                       em.close();
+                       EmailMonitorProperty emailMonitorProperty;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (monitorProperty == null) {
+                               emailMonitorProperty = new 
EmailMonitorProperty();
+                       } else {
+                               emailMonitorProperty = monitorProperty;
+                       }
+                       
emailMonitorProperty.setJobSubmissionId(jobSubmissionInterfaceId);
+                       emailMonitorProperty.setEmailAddress(emailAddress);
+                       emailMonitorProperty.setEmailProtocol(protocol);
+                       emailMonitorProperty.setFolderName(folderName);
+                       emailMonitorProperty.setHost(host);
+            if (monitorProperty == null) {
+                               em.persist(emailMonitorProperty);
+                       } else {
+                               em.merge(emailMonitorProperty);
+                       }
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (Exception e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public boolean isExists(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       EmailMonitorProperty emailMonitorProperty = 
em.find(EmailMonitorProperty.class, identifier);
+                       em.close();
+                       return emailMonitorProperty != null;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+
+    public String getJobSubmissionInterfaceId() {
+        return jobSubmissionInterfaceId;
+    }
+
+    public void setJobSubmissionInterfaceId(String jobSubmissionInterfaceId) {
+        this.jobSubmissionInterfaceId = jobSubmissionInterfaceId;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getFolderName() {
+        return folderName;
+    }
+
+    public void setFolderName(String folderName) {
+        this.folderName = folderName;
+    }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public SshJobSubmissionResource getSshJobSubmissionResource() {
+        return sshJobSubmissionResource;
+    }
+
+    public void setSshJobSubmissionResource(SshJobSubmissionResource 
sshJobSubmissionResource) {
+        this.sshJobSubmissionResource = sshJobSubmissionResource;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
index 2d87c60..ee14d76 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/SshJobSubmissionResource.java
@@ -27,7 +27,6 @@ import javax.persistence.EntityManager;
 import javax.persistence.Query;
 
 import org.airavata.appcatalog.cpi.AppCatalogException;
-import 
org.apache.aiaravata.application.catalog.data.model.EmailMonitorProperty;
 import org.apache.aiaravata.application.catalog.data.model.ResourceJobManager;
 import org.apache.aiaravata.application.catalog.data.model.SshJobSubmission;
 import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
@@ -47,8 +46,6 @@ public class SshJobSubmissionResource extends 
AbstractResource {
        private String securityProtocol;
        private int sshPort;
     private String monitorMode;
-    private String emailMonitorPropertyId;
-    private EmailMonitorProperty emailMonitorProperty;
     private Timestamp createdTime;
     private Timestamp updatedTime;
 
@@ -235,9 +232,6 @@ public class SshJobSubmissionResource extends 
AbstractResource {
                        
sshJobSubmission.setSecurityProtocol(getSecurityProtocol());
                        sshJobSubmission.setSshPort(getSshPort());
             sshJobSubmission.setMonitorMode(getMonitorMode());
-            
sshJobSubmission.setEmailMonitorPropertyId(getEmailMonitorPropertyId());
-            EmailMonitorProperty emailMonitorProperty = 
em.find(EmailMonitorProperty.class, getEmailMonitorPropertyId());
-            sshJobSubmission.setEmailMonitorProperty(emailMonitorProperty);
             if (existingSshJobSubmission == null) {
                                em.persist(sshJobSubmission);
                        } else {
@@ -335,19 +329,4 @@ public class SshJobSubmissionResource extends 
AbstractResource {
         this.monitorMode = monitorMode;
     }
 
-    public EmailMonitorProperty getEmailMonitorProperty() {
-        return emailMonitorProperty;
-    }
-
-    public void setEmailMonitorProperty(EmailMonitorProperty 
emailMonitorProperty) {
-        this.emailMonitorProperty = emailMonitorProperty;
-    }
-
-    public String getEmailMonitorPropertyId() {
-        return emailMonitorPropertyId;
-    }
-
-    public void setEmailMonitorPropertyId(String emailMonitorPropertyId) {
-        this.emailMonitorPropertyId = emailMonitorPropertyId;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
index 95eb20b..f8f3b1e 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogJPAUtils.java
@@ -172,6 +172,13 @@ public class AppCatalogJPAUtils {
                                        logger.error("Object should be a Ssh 
Job Submission.", new IllegalArgumentException());
                                        throw new 
IllegalArgumentException("Object should be a Ssh Job Submission.");
                                }
+            case EMAIL_MONITOR_PROPERTY:
+                if (o instanceof EmailMonitorProperty){
+                    return createEmailPropertyResource((EmailMonitorProperty) 
o);
+                }else{
+                    logger.error("Object should be a Ssh Job Submission.", new 
IllegalArgumentException());
+                    throw new IllegalArgumentException("Object should be a Ssh 
Job Submission.");
+                }
             case SCP_DATA_MOVEMENT:
                                if (o instanceof ScpDataMovement){
                                        return 
createScpDataMovement((ScpDataMovement) o);
@@ -608,7 +615,6 @@ public class AppCatalogJPAUtils {
             
sshJobSubmissionResource.setSecurityProtocol(o.getSecurityProtocol());
             sshJobSubmissionResource.setSshPort(o.getSshPort());
             sshJobSubmissionResource.setMonitorMode(o.getMonitorMode());
-            
sshJobSubmissionResource.setEmailMonitorProperty(o.getEmailMonitorProperty());
             sshJobSubmissionResource.setCreatedTime(o.getCreationTime());
             if (o.getUpdateTime() != null){
                 sshJobSubmissionResource.setUpdatedTime(o.getUpdateTime());
@@ -617,6 +623,20 @@ public class AppCatalogJPAUtils {
         return sshJobSubmissionResource;
     }
 
+    private static Resource createEmailPropertyResource(EmailMonitorProperty 
o) {
+        EmailPropertyResource emailPropertyResource = new 
EmailPropertyResource();
+        if (o != null) {
+            
emailPropertyResource.setJobSubmissionInterfaceId(o.getJobSubmissionId());
+            
emailPropertyResource.setSshJobSubmissionResource((SshJobSubmissionResource) 
createSshJobSubmission(o.getSubmissionInterface()));
+            emailPropertyResource.setEmailAddress(o.getEmailAddress());
+            emailPropertyResource.setFolderName(o.getFolderName());
+            emailPropertyResource.setPassword(o.getPassword());
+            emailPropertyResource.setHost(o.getHost());
+            emailPropertyResource.setProtocol(o.getEmailProtocol());
+        }
+        return emailPropertyResource;
+    }
+
     private static Resource createScpDataMovement(ScpDataMovement o) {
                ScpDataMovementResource scpDataMovementResource = new 
ScpDataMovementResource();
         if (o != null){

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
index 196d3a1..111f811 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogResourceType.java
@@ -62,5 +62,6 @@ public enum AppCatalogResourceType {
     ClOUD_SUBMISSION,
     WORKFLOW,
     WORKFLOW_INPUT,
-    WORKFLOW_OUTPUT
+    WORKFLOW_OUTPUT,
+    EMAIL_MONITOR_PROPERTY
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index cad9c95..f8768f0 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ 
b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -30,6 +30,15 @@ import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelism
 import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
 import org.apache.airavata.model.appcatalog.appinterface.*;
 import org.apache.airavata.model.appcatalog.computeresource.*;
+import org.apache.airavata.model.appcatalog.computeresource.BatchQueue;
+import org.apache.airavata.model.appcatalog.computeresource.CloudJobSubmission;
+import 
org.apache.airavata.model.appcatalog.computeresource.DataMovementInterface;
+import 
org.apache.airavata.model.appcatalog.computeresource.EmailMonitorProperty;
+import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand;
+import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
+import 
org.apache.airavata.model.appcatalog.computeresource.UnicoreDataMovement;
+import 
org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
 import 
org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
 import 
org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
 
@@ -221,6 +230,9 @@ public class AppCatalogThriftConversion {
         ResourceJobManagerResource resourceJobManager = 
getResourceJobManager(submission.getResourceJobManager());
 //        
resourceJobManager.setResourceJobManagerId(submission.getJobSubmissionInterfaceId());
         
resource.setResourceJobManagerId(resourceJobManager.getResourceJobManagerId());
+        if (submission.getMonitorMode() != null){
+            resource.setMonitorMode(submission.getMonitorMode().toString());
+        }
         resource.setResourceJobManagerResource(resourceJobManager);
         if (submission.getSecurityProtocol() != null){
             
resource.setSecurityProtocol(submission.getSecurityProtocol().toString());
@@ -330,9 +342,29 @@ public class AppCatalogThriftConversion {
        
sshJobSubmission.setResourceJobManager(getResourceJobManager(submission.getResourceJobManagerResource()));
        
sshJobSubmission.setSecurityProtocol(SecurityProtocol.valueOf(submission.getSecurityProtocol()));
        sshJobSubmission.setSshPort(submission.getSshPort());
+        if (submission.getMonitorMode() != null){
+            
sshJobSubmission.setMonitorMode(MonitorMode.valueOf(submission.getMonitorMode()));
+            EmailPropertyResource emailPropertyResource = new 
EmailPropertyResource();
+            if 
(emailPropertyResource.isExists(sshJobSubmission.getJobSubmissionInterfaceId())){
+                EmailPropertyResource emailResource = 
(EmailPropertyResource)emailPropertyResource.get(submission.getJobSubmissionInterfaceId());
+                
sshJobSubmission.setEmailMonitorProperty(getEmailMonitorProperty(emailResource));
+            }
+        }
         return sshJobSubmission;
     }
-    
+
+    public static EmailMonitorProperty getEmailMonitorProperty 
(EmailPropertyResource resource) throws AppCatalogException {
+        EmailMonitorProperty monitorProperty = new EmailMonitorProperty();
+        monitorProperty.setFolderName(resource.getFolderName());
+        monitorProperty.setHost(resource.getHost());
+        monitorProperty.setEmailAddress(resource.getEmailAddress());
+        monitorProperty.setPassword(resource.getPassword());
+        if (resource.getProtocol() != null){
+            
monitorProperty.setStoreProtocol(EmailProtocol.valueOf(resource.getProtocol()));
+        }
+        return monitorProperty;
+    }
+
     public static UnicoreJobSubmission getUnicoreJobSubmissionDescription 
(UnicoreJobSubmissionResource submission) throws AppCatalogException {
        UnicoreJobSubmission unicoreJobSubmission = new UnicoreJobSubmission();
        
unicoreJobSubmission.setUnicoreEndPointURL(submission.getUnicoreEndpointUrl());

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
 
b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
index 5fa184d..cd2445f 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
+++ 
b/modules/app-catalog/app-catalog-data/src/main/resources/META-INF/persistence.xml
@@ -38,6 +38,7 @@
         
<class>org.apache.aiaravata.application.catalog.data.model.GridftpDataMovement</class>
         
<class>org.apache.aiaravata.application.catalog.data.model.GridftpEndpoint</class>
         
<class>org.apache.aiaravata.application.catalog.data.model.SshJobSubmission</class>
+        
<class>org.apache.aiaravata.application.catalog.data.model.EmailMonitorProperty</class>
         
<class>org.apache.aiaravata.application.catalog.data.model.ApplicationModule</class>
         
<class>org.apache.aiaravata.application.catalog.data.model.ApplicationDeployment</class>
         
<class>org.apache.aiaravata.application.catalog.data.model.ModuleLoadCmd</class>

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql 
b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
index 5d56086..86851be 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
+++ 
b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-derby.sql
@@ -110,6 +110,8 @@ CREATE TABLE RESOURCE_JOB_MANAGER
         PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
 );
 
+
+
 CREATE TABLE SSH_JOB_SUBMISSION
 (
         RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
@@ -118,12 +120,22 @@ CREATE TABLE SSH_JOB_SUBMISSION
         SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
         SSH_PORT INTEGER,
         MONITOR_MODE VARCHAR (255),
-        EMAIL_MONITOR_PROPERTY_ID VARCHAR (255),
         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
         PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES 
RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID),
-        FOREIGN KEY (EMAIL_MONITOR_PROPERTY_ID) REFERENCES  
EMAIL_MONITOR_PROPERTY(EMAIL_MONITOR_PROPERTY_ID)
+        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES 
RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
+);
+
+CREATE TABLE EMAIL_MONITOR_PROPERTY
+(
+         JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+         HOST VARCHAR(255),
+         EMAIL_ADDRESS VARCHAR(255),
+         PASSWORD VARCHAR(255),,
+         FOLDER_NAME VARCHAR(255),
+         EMAIL_PROTOCOL VARCHAR(255),
+         PRIMARY KEY(JOB_SUBMISSION_INTERFACE_ID),
+         FOREIGN KEY (JOB_SUBMISSION_INTERFACE_ID) REFERENCES 
SSH_JOB_SUBMISSION(JOB_SUBMISSION_INTERFACE_ID)
 );
 
 CREATE TABLE SCP_DATA_MOVEMENT
@@ -445,18 +457,7 @@ CREATE TABLE WORKFLOW_OUTPUT
          FOREIGN KEY (WF_TEMPLATE_ID) REFERENCES WORKFLOW(WF_TEMPLATE_ID) ON 
DELETE CASCADE
 );
 
-CREATE TABLE EMAIL_MONITOR_PROPERTY
-(
-         JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-         EMAIL_MONITOR_PROPERTY_ID VARCHAR (255) NOT NULL,
-         HOST VARCHAR(255),
-         EMAIL_ADDRESS VARCHAR(255),
-         PASSWORD CLOB,
-         FOLDER_NAME VARCHAR(255) DEFAULT "INBOX",
-         EMAIL_PROTOCOL VARCHAR(255),
-         PRIMARY KEY(JOB_SUBMISSION_INTERFACE_ID,EMAIL_MONITOR_PROPERTY_ID),
-         FOREIGN KEY (JOB_SUBMISSION_INTERFACE_ID)  REFERENCES 
SSH_JOB_SUBMISSION(JOB_SUBMISSION_INTERFACE_ID) ON DELETE CASCADE
-);
+
 
 CREATE TABLE CONFIGURATION
 (

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql 
b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
index aecf044..95ed864 100644
--- 
a/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
+++ 
b/modules/app-catalog/app-catalog-data/src/main/resources/appcatalog-mysql.sql
@@ -129,12 +129,22 @@ CREATE TABLE SSH_JOB_SUBMISSION
         SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
         SSH_PORT INTEGER,
         MONITOR_MODE VARCHAR (255),
-        EMAIL_MONITOR_PROPERTY_ID VARCHAR (255),
         CREATION_TIME TIMESTAMP DEFAULT NOW(),
         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
         PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES 
RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID),
-        FOREIGN KEY (EMAIL_MONITOR_PROPERTY_ID) REFERENCES  
EMAIL_MONITOR_PROPERTY(EMAIL_MONITOR_PROPERTY_ID)
+        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES 
RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
+);
+
+CREATE TABLE EMAIL_MONITOR_PROPERTY
+(
+         JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+         HOST VARCHAR(255),
+         EMAIL_ADDRESS VARCHAR(255),
+         PASSWORD VARCHAR(255),,
+         FOLDER_NAME VARCHAR(255),
+         EMAIL_PROTOCOL VARCHAR(255),
+         PRIMARY KEY(JOB_SUBMISSION_INTERFACE_ID),
+         FOREIGN KEY (JOB_SUBMISSION_INTERFACE_ID) REFERENCES 
SSH_JOB_SUBMISSION(JOB_SUBMISSION_INTERFACE_ID)
 );
 
 CREATE TABLE SCP_DATA_MOVEMENT
@@ -443,19 +453,6 @@ CREATE TABLE WORKFLOW_OUTPUT
          FOREIGN KEY (WF_TEMPLATE_ID) REFERENCES WORKFLOW(WF_TEMPLATE_ID) ON 
DELETE CASCADE
 );
 
-CREATE TABLE EMAIL_MONITOR_PROPERTY
-(
-         JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-         EMAIL_MONITOR_PROPERTY_ID VARCHAR (255) NOT NULL,
-         HOST VARCHAR(255),
-         EMAIL_ADDRESS VARCHAR(255),
-         PASSWORD CLOB,
-         FOLDER_NAME VARCHAR(255) DEFAULT "INBOX",
-         EMAIL_PROTOCOL VARCHAR(255),
-         PRIMARY KEY(JOB_SUBMISSION_INTERFACE_ID,EMAIL_MONITOR_PROPERTY_ID),
-         FOREIGN KEY (JOB_SUBMISSION_INTERFACE_ID)  REFERENCES 
SSH_JOB_SUBMISSION(JOB_SUBMISSION_INTERFACE_ID) ON DELETE CASCADE
-);
-
 CREATE TABLE CONFIGURATION
 (
           CONFIG_KEY VARCHAR(255),

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/ComputeResourceTest.java
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/ComputeResourceTest.java
 
b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/ComputeResourceTest.java
index 28b2983..9fa1882 100644
--- 
a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/ComputeResourceTest.java
+++ 
b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/ComputeResourceTest.java
@@ -167,6 +167,11 @@ public class ComputeResourceTest {
 
             SSHJobSubmission sshJobSubmission = 
computeResource.getSSHJobSubmission(sshsubmissionId);
             System.out.println("**********SSH Submission resource job manager 
************* : " +  sshJobSubmission.getResourceJobManager().toString());
+            System.out.println("**********Monitor mode ************* : " +  
sshJobSubmission.getMonitorMode().toString());
+
+            EmailMonitorProperty emailMonitorProperty = 
sshJobSubmission.getEmailMonitorProperty();
+            System.out.println("**********email address ************* : " + 
emailMonitorProperty.getEmailAddress());
+
 
 //            GlobusJobSubmission globusJobSubmission = 
computeResource.get(globusSubmissionId);
 //            System.out.println("**********Globus Submission resource job 
manager ************* : " + 
globusJobSubmission.getResourceJobManager().toString());
@@ -239,6 +244,12 @@ public class ComputeResourceTest {
             commands.put(JobManagerCommand.SUBMISSION, "Sub command");
             commands.put(JobManagerCommand.SHOW_QUEUE, "show q command");
             jobManager.setJobManagerCommands(commands);
+            
jobSubmission.setMonitorMode(MonitorMode.JOB_EMAIL_NOTIFICATION_MONITOR);
+            EmailMonitorProperty emailMonitorProperty = new 
EmailMonitorProperty();
+            emailMonitorProperty.setEmailAddress("test");
+            emailMonitorProperty.setPassword("aaa");
+            emailMonitorProperty.setHost("testHost");
+            jobSubmission.setEmailMonitorProperty(emailMonitorProperty);
 //            String jobManagerID = 
appcatalog.getComputeResource().addResourceJobManager(jobManager);
 //            jobManager.setResourceJobManagerId(jobManagerID);
             jobSubmission.setResourceJobManager(jobManager);

http://git-wip-us.apache.org/repos/asf/airavata/blob/f1d300ee/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
----------------------------------------------------------------------
diff --git 
a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql 
b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
index 4e28e04..8171968 100644
--- 
a/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
+++ 
b/modules/app-catalog/app-catalog-data/src/test/resources/appcatalog-derby.sql
@@ -110,6 +110,8 @@ CREATE TABLE RESOURCE_JOB_MANAGER
         PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
 );
 
+
+
 CREATE TABLE SSH_JOB_SUBMISSION
 (
         RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
@@ -117,12 +119,25 @@ CREATE TABLE SSH_JOB_SUBMISSION
         ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
         SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
         SSH_PORT INTEGER,
+        MONITOR_MODE VARCHAR (255),
         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
         PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
         FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES 
RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
 );
 
+CREATE TABLE EMAIL_MONITOR_PROPERTY
+(
+         JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
+         HOST VARCHAR(255),
+         EMAIL_ADDRESS VARCHAR(255),
+         PASSWORD VARCHAR(255),
+         FOLDER_NAME VARCHAR(255),
+         EMAIL_PROTOCOL VARCHAR(255),
+         PRIMARY KEY(JOB_SUBMISSION_INTERFACE_ID),
+         FOREIGN KEY (JOB_SUBMISSION_INTERFACE_ID) REFERENCES 
SSH_JOB_SUBMISSION(JOB_SUBMISSION_INTERFACE_ID)
+);
+
 CREATE TABLE SCP_DATA_MOVEMENT
 (
         QUEUE_DESCRIPTION VARCHAR (255),

Reply via email to