http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceFileSystemResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceFileSystemResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceFileSystemResource.java
new file mode 100644
index 0000000..7eb3232
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceFileSystemResource.java
@@ -0,0 +1,307 @@
+/*
+ *
+ * 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.registry.core.app.catalog.resources;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.registry.core.app.catalog.model.ComputeResource;
+import 
org.apache.airavata.registry.core.app.catalog.model.ComputeResourceFileSystem;
+import 
org.apache.airavata.registry.core.app.catalog.model.ComputeResourceFileSystem_PK;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ComputeResourceFileSystemResource extends AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(ComputeResourceFileSystemResource.class);
+       private String computeResourceId;
+       private ComputeResourceResource computeHostResource;
+       private String path;
+       private String fileSystem;
+       
+       @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE_FILE_SYSTEM);
+                       
generator.setParameter(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID, 
ids.get(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID));
+                       
generator.setParameter(ComputeResourceFileSystemConstants.FILE_SYSTEM, 
ids.get(ComputeResourceFileSystemConstants.FILE_SYSTEM));
+                       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 AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE_FILE_SYSTEM);
+                       
generator.setParameter(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID, 
ids.get(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID));
+                       
generator.setParameter(ComputeResourceFileSystemConstants.FILE_SYSTEM, 
ids.get(ComputeResourceFileSystemConstants.FILE_SYSTEM));
+                       Query q = generator.selectQuery(em);
+                       ComputeResourceFileSystem computeResourceFileSystem = 
(ComputeResourceFileSystem) q.getSingleResult();
+                       ComputeResourceFileSystemResource 
computeResourceFileSystemResource = (ComputeResourceFileSystemResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE_FILE_SYSTEM,
 computeResourceFileSystem);
+                       em.getTransaction().commit();
+                       em.close();
+                       return computeResourceFileSystemResource;
+               } 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<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
+               List<AppCatalogResource> computeResourceFileSystemResources = 
new ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE_FILE_SYSTEM);
+                       Query q;
+                       if 
((fieldName.equals(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(ComputeResourceFileSystemConstants.PATH)) || 
(fieldName.equals(ComputeResourceFileSystemConstants.FILE_SYSTEM))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       ComputeResourceFileSystem 
computeResourceFileSystem = (ComputeResourceFileSystem) result;
+                                       ComputeResourceFileSystemResource 
computeResourceFileSystemResource = (ComputeResourceFileSystemResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE_FILE_SYSTEM,
 computeResourceFileSystem);
+                                       
computeResourceFileSystemResources.add(computeResourceFileSystemResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Compute Resource File System Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Compute Resource File System 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 computeResourceFileSystemResources;
+       }
+
+    @Override
+    public List<AppCatalogResource> 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> computeResourceFileSystemResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE_FILE_SYSTEM);
+                       Query q;
+                       if 
((fieldName.equals(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(ComputeResourceFileSystemConstants.PATH)) || 
(fieldName.equals(ComputeResourceFileSystemConstants.FILE_SYSTEM))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       ComputeResourceFileSystem 
computeResourceFileSystem = (ComputeResourceFileSystem) result;
+                                       ComputeResourceFileSystemResource 
computeResourceFileSystemResource = (ComputeResourceFileSystemResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE_FILE_SYSTEM,
 computeResourceFileSystem);
+                                       
computeResourceFileSystemResourceIDs.add(computeResourceFileSystemResource.getComputeResourceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Compute Resource File System Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Compute Resource File System 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 computeResourceFileSystemResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       ComputeResourceFileSystem 
existingComputeResourceFileSystem = em.find(ComputeResourceFileSystem.class, 
new ComputeResourceFileSystem_PK(computeResourceId, fileSystem));
+                       em.close();
+                       ComputeResourceFileSystem computeResourceFileSystem;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingComputeResourceFileSystem == null) {
+                               computeResourceFileSystem = new 
ComputeResourceFileSystem();
+                       } else {
+                               computeResourceFileSystem = 
existingComputeResourceFileSystem;
+                       }
+                       
computeResourceFileSystem.setComputeResourceId(getComputeResourceId());
+                       ComputeResource computeResource = 
em.find(ComputeResource.class, getComputeResourceId());
+                       
computeResourceFileSystem.setComputeResource(computeResource);
+                       computeResourceFileSystem.setPath(getPath());
+                       
computeResourceFileSystem.setFileSystem(getFileSystem());
+                       if (existingComputeResourceFileSystem == null) {
+                               em.persist(computeResourceFileSystem);
+                       } else {
+                               em.merge(computeResourceFileSystem);
+                       }
+                       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 {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       ComputeResourceFileSystem computeResourceFileSystem = 
em.find(ComputeResourceFileSystem.class, new 
ComputeResourceFileSystem_PK(ids.get(ComputeResourceFileSystemConstants.COMPUTE_RESOURCE_ID),
 ids.get(ComputeResourceFileSystemConstants.FILE_SYSTEM)));
+                       em.close();
+                       return computeResourceFileSystem != 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 getComputeResourceId() {
+               return computeResourceId;
+       }
+       
+       public ComputeResourceResource getComputeHostResource() {
+               return computeHostResource;
+       }
+       
+       public String getPath() {
+               return path;
+       }
+       
+       public String getFileSystem() {
+               return fileSystem;
+       }
+       
+       public void setComputeResourceId(String computeResourceId) {
+               this.computeResourceId=computeResourceId;
+       }
+       
+       public void setComputeHostResource(ComputeResourceResource 
computeHostResource) {
+               this.computeHostResource=computeHostResource;
+       }
+       
+       public void setPath(String path) {
+               this.path=path;
+       }
+       
+       public void setFileSystem(String fileSystem) {
+               this.fileSystem=fileSystem;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceResource.java
new file mode 100644
index 0000000..956604f
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ComputeResourceResource.java
@@ -0,0 +1,351 @@
+/*
+ *
+ * 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.registry.core.app.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.app.catalog.model.ComputeResource;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+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 ComputeResourceResource extends AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(ComputeResourceResource.class);
+       private String resourceDescription;
+       private String resourceId;
+       private String hostName;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+    private int maxMemoryPerNode;
+
+    public int getMaxMemoryPerNode() {
+        return maxMemoryPerNode;
+    }
+
+    public void setMaxMemoryPerNode(int maxMemoryPerNode) {
+        this.maxMemoryPerNode = maxMemoryPerNode;
+    }
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+
+    @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+                       
generator.setParameter(ComputeResourceConstants.RESOURCE_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 AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+                       
generator.setParameter(ComputeResourceConstants.RESOURCE_ID, identifier);
+                       Query q = generator.selectQuery(em);
+                       ComputeResource computeResource = (ComputeResource) 
q.getSingleResult();
+                       ComputeResourceResource computeResourceResource = 
(ComputeResourceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE, 
computeResource);
+                       em.getTransaction().commit();
+                       em.close();
+                       return computeResourceResource;
+               } 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<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
+               List<AppCatalogResource> computeResourceResources = new 
ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+                       Query q;
+                       if 
((fieldName.equals(ComputeResourceConstants.RESOURCE_DESCRIPTION)) || 
(fieldName.equals(ComputeResourceConstants.RESOURCE_ID)) || 
(fieldName.equals(ComputeResourceConstants.HOST_NAME))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       ComputeResource computeResource = 
(ComputeResource) result;
+                                       ComputeResourceResource 
computeResourceResource = (ComputeResourceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE, 
computeResource);
+                                       
computeResourceResources.add(computeResourceResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Compute Resource Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Compute Resource 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 computeResourceResources;
+       }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        List<AppCatalogResource> computeResourceResources = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+            Query q = generator.selectQuery(em);
+            List<?> results = q.getResultList();
+            for (Object result : results) {
+                ComputeResource computeResource = (ComputeResource) result;
+                ComputeResourceResource computeResourceResource = 
(ComputeResourceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE, 
computeResource);
+                computeResourceResources.add(computeResourceResource);
+            }
+            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 computeResourceResources;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        List<String> computeResourceResources = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+            Query q = generator.selectQuery(em);
+            List<?> results = q.getResultList();
+            for (Object result : results) {
+                ComputeResource computeResource = (ComputeResource) result;
+                computeResourceResources.add(computeResource.getResourceId());
+            }
+            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 computeResourceResources;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> computeResourceResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(COMPUTE_RESOURCE);
+                       Query q;
+                       if 
((fieldName.equals(ComputeResourceConstants.RESOURCE_DESCRIPTION)) || 
(fieldName.equals(ComputeResourceConstants.RESOURCE_ID)) || 
(fieldName.equals(ComputeResourceConstants.HOST_NAME))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       ComputeResource computeResource = 
(ComputeResource) result;
+                                       ComputeResourceResource 
computeResourceResource = (ComputeResourceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.COMPUTE_RESOURCE, 
computeResource);
+                                       
computeResourceResourceIDs.add(computeResourceResource.getResourceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Compute Resource Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Compute Resource 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 computeResourceResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       ComputeResource existingComputeResource = 
em.find(ComputeResource.class, resourceId);
+                       em.close();
+                       ComputeResource computeResource;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingComputeResource == null) {
+                               computeResource = new ComputeResource();
+                
computeResource.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               computeResource = existingComputeResource;
+                
computeResource.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       
computeResource.setResourceDescription(getResourceDescription());
+                       computeResource.setResourceId(getResourceId());
+                       computeResource.setHostName(getHostName());
+                       
computeResource.setMaxMemoryPerNode(getMaxMemoryPerNode());
+                       if (existingComputeResource == null) {
+                               em.persist(computeResource);
+                       } else {
+                               em.merge(computeResource);
+                       }
+                       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();
+                       ComputeResource computeResource = 
em.find(ComputeResource.class, identifier);
+                       em.close();
+                       return computeResource != 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 getResourceDescription() {
+               return resourceDescription;
+       }
+       
+       public String getResourceId() {
+               return resourceId;
+       }
+       
+       public String getHostName() {
+               return hostName;
+       }
+       
+       public void setResourceDescription(String resourceDescription) {
+               this.resourceDescription=resourceDescription;
+       }
+       
+       public void setResourceId(String resourceId) {
+               this.resourceId=resourceId;
+       }
+       
+       public void setHostName(String hostName) {
+               this.hostName=hostName;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceAppCatalogResourceAppCat.java
deleted file mode 100644
index 3d24829..0000000
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceAppCatalogResourceAppCat.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- *
- * 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.registry.core.app.catalog.resources;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.registry.core.app.catalog.model.ComputeResource;
-import 
org.apache.airavata.registry.core.app.catalog.model.DataMovementInterface;
-import 
org.apache.airavata.registry.core.app.catalog.model.DataMovementInterface_PK;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DataMovementInterfaceAppCatalogResourceAppCat extends 
AppCatAbstractResource {
-       private final static Logger logger = 
LoggerFactory.getLogger(DataMovementInterfaceAppCatalogResourceAppCat.class);
-       private String computeResourceId;
-       private ComputeResourceAppCatalogResourceAppCat computeHostResource;
-       private String dataMovementProtocol;
-       private String dataMovementInterfaceId;
-       private int priorityOrder;
-    private Timestamp createdTime;
-    private Timestamp updatedTime;
-
-    public Timestamp getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(Timestamp createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public Timestamp getUpdatedTime() {
-        return updatedTime;
-    }
-
-    public void setUpdatedTime(Timestamp updatedTime) {
-        this.updatedTime = updatedTime;
-    }
-       
-       @Override
-       public void remove(Object identifier) throws AppCatalogException {
-               HashMap<String, String> ids;
-               if (identifier instanceof Map) {
-                       ids = (HashMap<String, String>) identifier;
-               } else {
-                       logger.error("Identifier should be a map with the field 
name and it's value");
-                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
-               }
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
-                       
generator.setParameter(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID, 
ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID));
-                       
generator.setParameter(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID,
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID));
-                       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 AppCatalogResource get(Object identifier) throws 
AppCatalogException {
-               HashMap<String, String> ids;
-               if (identifier instanceof Map) {
-                       ids = (HashMap<String, String>) identifier;
-               } else {
-                       logger.error("Identifier should be a map with the field 
name and it's value");
-                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
-               }
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
-                       
generator.setParameter(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID, 
ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID));
-                       
generator.setParameter(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID,
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID));
-                       Query q = generator.selectQuery(em);
-                       DataMovementInterface dataMovementInterface = 
(DataMovementInterface) q.getSingleResult();
-                       DataMovementInterfaceAppCatalogResourceAppCat 
dataMovementInterfaceResource = (DataMovementInterfaceAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
-                       em.getTransaction().commit();
-                       em.close();
-                       return dataMovementInterfaceResource;
-               } 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<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
-               List<AppCatalogResource> dataMovementInterfaceResources = new 
ArrayList<AppCatalogResource>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
-                       Query q;
-                       if 
((fieldName.equals(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_PROTOCOL)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)) 
|| (fieldName.equals(DataMovementInterfaceConstants.PRIORITY_ORDER))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       DataMovementInterface 
dataMovementInterface = (DataMovementInterface) result;
-                                       
DataMovementInterfaceAppCatalogResourceAppCat dataMovementInterfaceResource = 
(DataMovementInterfaceAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
-                                       
dataMovementInterfaceResources.add(dataMovementInterfaceResource);
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Data 
Movement Interface Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Data Movement Interface 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 dataMovementInterfaceResources;
-       }
-
-    @Override
-    public List<AppCatalogResource> 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> dataMovementInterfaceResourceIDs = new 
ArrayList<String>();
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
-                       Query q;
-                       if 
((fieldName.equals(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_PROTOCOL)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)) 
|| (fieldName.equals(DataMovementInterfaceConstants.PRIORITY_ORDER))) {
-                               generator.setParameter(fieldName, value);
-                               q = generator.selectQuery(em);
-                               List<?> results = q.getResultList();
-                               for (Object result : results) {
-                                       DataMovementInterface 
dataMovementInterface = (DataMovementInterface) result;
-                                       
DataMovementInterfaceAppCatalogResourceAppCat dataMovementInterfaceResource = 
(DataMovementInterfaceAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
-                                       
dataMovementInterfaceResourceIDs.add(dataMovementInterfaceResource.getComputeResourceId());
-                               }
-                       } else {
-                               em.getTransaction().commit();
-                                       em.close();
-                               logger.error("Unsupported field name for Data 
Movement Interface Resource.", new IllegalArgumentException());
-                               throw new IllegalArgumentException("Unsupported 
field name for Data Movement Interface 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 dataMovementInterfaceResourceIDs;
-       }
-       
-       @Override
-       public void save() throws AppCatalogException {
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       DataMovementInterface existingDataMovementInterface = 
em.find(DataMovementInterface.class, new 
DataMovementInterface_PK(computeResourceId, dataMovementInterfaceId));
-                       em.close();
-                       DataMovementInterface dataMovementInterface;
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       em.getTransaction().begin();
-                       if (existingDataMovementInterface == null) {
-                               dataMovementInterface = new 
DataMovementInterface();
-                
dataMovementInterface.setCreationTime(AiravataUtils.getCurrentTimestamp());
-                       } else {
-                               dataMovementInterface = 
existingDataMovementInterface;
-                
dataMovementInterface.setUpdateTime(AiravataUtils.getCurrentTimestamp());
-                       }
-                       
dataMovementInterface.setComputeResourceId(getComputeResourceId());
-                       ComputeResource computeResource = 
em.find(ComputeResource.class, getComputeResourceId());
-                       
dataMovementInterface.setComputeResource(computeResource);
-                       
dataMovementInterface.setDataMovementProtocol(getDataMovementProtocol());
-                       
dataMovementInterface.setDataMovementInterfaceId(getDataMovementInterfaceId());
-                       
dataMovementInterface.setPriorityOrder(getPriorityOrder());
-                       if (existingDataMovementInterface == null) {
-                               em.persist(dataMovementInterface);
-                       } else {
-                               em.merge(dataMovementInterface);
-                       }
-                       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 {
-               HashMap<String, String> ids;
-               if (identifier instanceof Map) {
-                       ids = (HashMap<String, String>) identifier;
-               } else {
-                       logger.error("Identifier should be a map with the field 
name and it's value");
-                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
-               }
-               EntityManager em = null;
-               try {
-                       em = AppCatalogJPAUtils.getEntityManager();
-                       DataMovementInterface dataMovementInterface = 
em.find(DataMovementInterface.class, new 
DataMovementInterface_PK(ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID),
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)));
-                       em.close();
-                       return dataMovementInterface != 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 getComputeResourceId() {
-               return computeResourceId;
-       }
-       
-       public ComputeResourceAppCatalogResourceAppCat getComputeHostResource() 
{
-               return computeHostResource;
-       }
-       
-       public String getDataMovementProtocol() {
-               return dataMovementProtocol;
-       }
-       
-       public String getDataMovementInterfaceId() {
-               return dataMovementInterfaceId;
-       }
-       
-       public int getPriorityOrder() {
-               return priorityOrder;
-       }
-       
-       public void setComputeResourceId(String computeResourceId) {
-               this.computeResourceId=computeResourceId;
-       }
-       
-       public void 
setComputeHostResource(ComputeResourceAppCatalogResourceAppCat 
computeHostResource) {
-               this.computeHostResource=computeHostResource;
-       }
-       
-       public void setDataMovementProtocol(String dataMovementProtocol) {
-               this.dataMovementProtocol=dataMovementProtocol;
-       }
-       
-       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
-               this.dataMovementInterfaceId=dataMovementInterfaceId;
-       }
-       
-       public void setPriorityOrder(int priorityOrder) {
-               this.priorityOrder=priorityOrder;
-       }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceResource.java
new file mode 100644
index 0000000..9ebac56
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/DataMovementInterfaceResource.java
@@ -0,0 +1,339 @@
+/*
+ *
+ * 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.registry.core.app.catalog.resources;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.registry.core.app.catalog.model.ComputeResource;
+import 
org.apache.airavata.registry.core.app.catalog.model.DataMovementInterface;
+import 
org.apache.airavata.registry.core.app.catalog.model.DataMovementInterface_PK;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DataMovementInterfaceResource extends AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(DataMovementInterfaceResource.class);
+       private String computeResourceId;
+       private ComputeResourceResource computeHostResource;
+       private String dataMovementProtocol;
+       private String dataMovementInterfaceId;
+       private int priorityOrder;
+    private Timestamp createdTime;
+    private Timestamp updatedTime;
+
+    public Timestamp getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Timestamp createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    public Timestamp getUpdatedTime() {
+        return updatedTime;
+    }
+
+    public void setUpdatedTime(Timestamp updatedTime) {
+        this.updatedTime = updatedTime;
+    }
+       
+       @Override
+       public void remove(Object identifier) throws AppCatalogException {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
+                       
generator.setParameter(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID, 
ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID));
+                       
generator.setParameter(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID,
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID));
+                       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 AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
+                       
generator.setParameter(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID, 
ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID));
+                       
generator.setParameter(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID,
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID));
+                       Query q = generator.selectQuery(em);
+                       DataMovementInterface dataMovementInterface = 
(DataMovementInterface) q.getSingleResult();
+                       DataMovementInterfaceResource 
dataMovementInterfaceResource = (DataMovementInterfaceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
+                       em.getTransaction().commit();
+                       em.close();
+                       return dataMovementInterfaceResource;
+               } 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<AppCatalogResource> get(String fieldName, Object value) 
throws AppCatalogException {
+               List<AppCatalogResource> dataMovementInterfaceResources = new 
ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
+                       Query q;
+                       if 
((fieldName.equals(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_PROTOCOL)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)) 
|| (fieldName.equals(DataMovementInterfaceConstants.PRIORITY_ORDER))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       DataMovementInterface 
dataMovementInterface = (DataMovementInterface) result;
+                                       DataMovementInterfaceResource 
dataMovementInterfaceResource = (DataMovementInterfaceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
+                                       
dataMovementInterfaceResources.add(dataMovementInterfaceResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Data 
Movement Interface Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Data Movement Interface 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 dataMovementInterfaceResources;
+       }
+
+    @Override
+    public List<AppCatalogResource> 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> dataMovementInterfaceResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(DATA_MOVEMENT_INTERFACE);
+                       Query q;
+                       if 
((fieldName.equals(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_PROTOCOL)) || 
(fieldName.equals(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)) 
|| (fieldName.equals(DataMovementInterfaceConstants.PRIORITY_ORDER))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       DataMovementInterface 
dataMovementInterface = (DataMovementInterface) result;
+                                       DataMovementInterfaceResource 
dataMovementInterfaceResource = (DataMovementInterfaceResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.DATA_MOVEMENT_INTERFACE, 
dataMovementInterface);
+                                       
dataMovementInterfaceResourceIDs.add(dataMovementInterfaceResource.getComputeResourceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for Data 
Movement Interface Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Data Movement Interface 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 dataMovementInterfaceResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       DataMovementInterface existingDataMovementInterface = 
em.find(DataMovementInterface.class, new 
DataMovementInterface_PK(computeResourceId, dataMovementInterfaceId));
+                       em.close();
+                       DataMovementInterface dataMovementInterface;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingDataMovementInterface == null) {
+                               dataMovementInterface = new 
DataMovementInterface();
+                
dataMovementInterface.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               dataMovementInterface = 
existingDataMovementInterface;
+                
dataMovementInterface.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       
dataMovementInterface.setComputeResourceId(getComputeResourceId());
+                       ComputeResource computeResource = 
em.find(ComputeResource.class, getComputeResourceId());
+                       
dataMovementInterface.setComputeResource(computeResource);
+                       
dataMovementInterface.setDataMovementProtocol(getDataMovementProtocol());
+                       
dataMovementInterface.setDataMovementInterfaceId(getDataMovementInterfaceId());
+                       
dataMovementInterface.setPriorityOrder(getPriorityOrder());
+                       if (existingDataMovementInterface == null) {
+                               em.persist(dataMovementInterface);
+                       } else {
+                               em.merge(dataMovementInterface);
+                       }
+                       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 {
+               HashMap<String, String> ids;
+               if (identifier instanceof Map) {
+                       ids = (HashMap<String, String>) identifier;
+               } else {
+                       logger.error("Identifier should be a map with the field 
name and it's value");
+                       throw new AppCatalogException("Identifier should be a 
map with the field name and it's value");
+               }
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       DataMovementInterface dataMovementInterface = 
em.find(DataMovementInterface.class, new 
DataMovementInterface_PK(ids.get(DataMovementInterfaceConstants.COMPUTE_RESOURCE_ID),
 ids.get(DataMovementInterfaceConstants.DATA_MOVEMENT_INTERFACE_ID)));
+                       em.close();
+                       return dataMovementInterface != 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 getComputeResourceId() {
+               return computeResourceId;
+       }
+       
+       public ComputeResourceResource getComputeHostResource() {
+               return computeHostResource;
+       }
+       
+       public String getDataMovementProtocol() {
+               return dataMovementProtocol;
+       }
+       
+       public String getDataMovementInterfaceId() {
+               return dataMovementInterfaceId;
+       }
+       
+       public int getPriorityOrder() {
+               return priorityOrder;
+       }
+       
+       public void setComputeResourceId(String computeResourceId) {
+               this.computeResourceId=computeResourceId;
+       }
+       
+       public void setComputeHostResource(ComputeResourceResource 
computeHostResource) {
+               this.computeHostResource=computeHostResource;
+       }
+       
+       public void setDataMovementProtocol(String dataMovementProtocol) {
+               this.dataMovementProtocol=dataMovementProtocol;
+       }
+       
+       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+               this.dataMovementInterfaceId=dataMovementInterfaceId;
+       }
+       
+       public void setPriorityOrder(int priorityOrder) {
+               this.priorityOrder=priorityOrder;
+       }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportAppCatalogResourceAppCat.java
deleted file mode 100644
index a127311..0000000
--- 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportAppCatalogResourceAppCat.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/**
- * 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.registry.core.app.catalog.resources;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.registry.core.app.catalog.model.GSISSHExport;
-import org.apache.airavata.registry.core.app.catalog.model.GSISSHExportPK;
-import org.apache.airavata.registry.core.app.catalog.model.GSISSHSubmission;
-import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
-import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class GSISSHExportAppCatalogResourceAppCat extends 
AppCatAbstractResource {
-    private final static Logger logger = 
LoggerFactory.getLogger(GSISSHExportAppCatalogResourceAppCat.class);
-
-    private String submissionID;
-    private String export;
-
-    private GSISSHSubmissionAppCatalogResourceAppCat gsisshSubmissionResource;
-
-
-    public void remove(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
-            generator.setParameter(GSISSHExportConstants.EXPORT, 
ids.get(GSISSHExportConstants.EXPORT));
-            generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
ids.get(GSISSHExportConstants.SUBMISSION_ID));
-            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();
-            }
-        }
-    }
-
-    public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map) {
-            ids = (HashMap) identifier;
-        } else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
-            generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
ids.get(GSISSHExportConstants.SUBMISSION_ID));
-            generator.setParameter(GSISSHExportConstants.EXPORT, 
ids.get(GSISSHExportConstants.EXPORT));
-            Query q = generator.selectQuery(em);
-            GSISSHExport gsisshExport = (GSISSHExport) q.getSingleResult();
-            GSISSHExportAppCatalogResourceAppCat gsisshExportResource =
-                    (GSISSHExportAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT
-                            , gsisshExport);
-            em.getTransaction().commit();
-            em.close();
-            return gsisshExportResource;
-        } 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 List<AppCatalogResource> get(String fieldName, Object value) throws 
AppCatalogException {
-        List<AppCatalogResource> gsiSSHExportResources = new 
ArrayList<AppCatalogResource>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
-            List results;
-            if (fieldName.equals(GSISSHExportConstants.EXPORT)) {
-                generator.setParameter(GSISSHExportConstants.EXPORT, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        GSISSHExport gsisshExport = (GSISSHExport) result;
-                        GSISSHExportAppCatalogResourceAppCat 
gsisshExportResource =
-                                (GSISSHExportAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT, 
gsisshExport);
-                        gsiSSHExportResources.add(gsisshExportResource);
-                    }
-                }
-            } else if (fieldName.equals(GSISSHExportConstants.SUBMISSION_ID)) {
-                generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        GSISSHExport gsisshExport = (GSISSHExport) result;
-                        GSISSHExportAppCatalogResourceAppCat 
gsisshExportResource =
-                                (GSISSHExportAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT, 
gsisshExport);
-                        gsiSSHExportResources.add(gsisshExportResource);
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for GSISSH Export 
Resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for 
GSISSH Export Resource.");
-            }
-            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();
-            }
-        }
-        return gsiSSHExportResources;
-    }
-
-    @Override
-    public List<AppCatalogResource> getAll() throws AppCatalogException {
-        return null;
-    }
-
-    @Override
-    public List<String> getAllIds() throws AppCatalogException {
-        return null;
-    }
-
-    public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
-        List<String> gsiSSHExportIDs = new ArrayList<String>();
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            Query q;
-            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
-            List results;
-            if (fieldName.equals(GSISSHExportConstants.SUBMISSION_ID)) {
-                generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        GSISSHExport gsisshExport = (GSISSHExport) result;
-                        gsiSSHExportIDs.add(gsisshExport.getSubmissionID());
-                    }
-                }
-            } else if (fieldName.equals(GSISSHExportConstants.EXPORT)) {
-                generator.setParameter(GSISSHExportConstants.EXPORT, value);
-                q = generator.selectQuery(em);
-                results = q.getResultList();
-                if (results.size() != 0) {
-                    for (Object result : results) {
-                        GSISSHExport gsisshExport = (GSISSHExport) result;
-                        gsiSSHExportIDs.add(gsisshExport.getSubmissionID());
-                    }
-                }
-            } else {
-                em.getTransaction().commit();
-                em.close();
-                logger.error("Unsupported field name for GSISSH Export 
resource.", new IllegalArgumentException());
-                throw new IllegalArgumentException("Unsupported field name for 
GSISSH Export Resource.");
-            }
-            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();
-            }
-        }
-        return gsiSSHExportIDs;
-    }
-
-    public void save() throws AppCatalogException {
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            GSISSHExport existingGSIExport = em.find(GSISSHExport.class, new 
GSISSHExportPK(submissionID, export));
-            em.close();
-
-            em = AppCatalogJPAUtils.getEntityManager();
-            em.getTransaction().begin();
-            GSISSHSubmission gsisshSubmission = 
em.find(GSISSHSubmission.class, submissionID);
-            if (existingGSIExport != null) {
-                existingGSIExport.setSubmissionID(submissionID);
-                existingGSIExport.setExport(export);
-                existingGSIExport.setGsisshJobSubmission(gsisshSubmission);
-                em.merge(existingGSIExport);
-            } else {
-                GSISSHExport gsisshExport = new GSISSHExport();
-                gsisshExport.setSubmissionID(submissionID);
-                gsisshExport.setExport(export);
-                gsisshExport.setGsisshJobSubmission(gsisshSubmission);
-                em.persist(gsisshExport);
-            }
-            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();
-            }
-        }
-    }
-
-    public boolean isExists(Object identifier) throws AppCatalogException {
-        HashMap<String, String> ids;
-        if (identifier instanceof Map){
-            ids = (HashMap)identifier;
-        }else {
-            logger.error("Identifier should be a map with the field name and 
it's value");
-            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
-        }
-
-        EntityManager em = null;
-        try {
-            em = AppCatalogJPAUtils.getEntityManager();
-            GSISSHExport gsisshExport = em.find(GSISSHExport.class, new 
GSISSHExportPK(ids.get(GSISSHExportConstants.SUBMISSION_ID),
-                    ids.get(GSISSHExportConstants.EXPORT)));
-
-            em.close();
-            return gsisshExport != 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 getSubmissionID() {
-        return submissionID;
-    }
-
-    public void setSubmissionID(String submissionID) {
-        this.submissionID = submissionID;
-    }
-
-    public String getExport() {
-        return export;
-    }
-
-    public void setExport(String export) {
-        this.export = export;
-    }
-
-    public GSISSHSubmissionAppCatalogResourceAppCat 
getGsisshSubmissionResource() {
-        return gsisshSubmissionResource;
-    }
-
-    public void 
setGsisshSubmissionResource(GSISSHSubmissionAppCatalogResourceAppCat 
gsisshSubmissionResource) {
-        this.gsisshSubmissionResource = gsisshSubmissionResource;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/4045c094/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportResource.java
new file mode 100644
index 0000000..1261b39
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GSISSHExportResource.java
@@ -0,0 +1,324 @@
+/**
+ * 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.registry.core.app.catalog.resources;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.registry.core.app.catalog.model.GSISSHExport;
+import org.apache.airavata.registry.core.app.catalog.model.GSISSHExportPK;
+import org.apache.airavata.registry.core.app.catalog.model.GSISSHSubmission;
+import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator;
+import 
org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType;
+import org.apache.airavata.registry.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class GSISSHExportResource extends AppCatAbstractResource {
+    private final static Logger logger = 
LoggerFactory.getLogger(GSISSHExportResource.class);
+
+    private String submissionID;
+    private String export;
+
+    private GSISSHSubmissionResource gsisshSubmissionResource;
+
+
+    public void remove(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
+            generator.setParameter(GSISSHExportConstants.EXPORT, 
ids.get(GSISSHExportConstants.EXPORT));
+            generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
ids.get(GSISSHExportConstants.SUBMISSION_ID));
+            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();
+            }
+        }
+    }
+
+    public AppCatalogResource get(Object identifier) throws 
AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map) {
+            ids = (HashMap) identifier;
+        } else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
+            generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
ids.get(GSISSHExportConstants.SUBMISSION_ID));
+            generator.setParameter(GSISSHExportConstants.EXPORT, 
ids.get(GSISSHExportConstants.EXPORT));
+            Query q = generator.selectQuery(em);
+            GSISSHExport gsisshExport = (GSISSHExport) q.getSingleResult();
+            GSISSHExportResource gsisshExportResource =
+                    (GSISSHExportResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT
+                            , gsisshExport);
+            em.getTransaction().commit();
+            em.close();
+            return gsisshExportResource;
+        } 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 List<AppCatalogResource> get(String fieldName, Object value) throws 
AppCatalogException {
+        List<AppCatalogResource> gsiSSHExportResources = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
+            List results;
+            if (fieldName.equals(GSISSHExportConstants.EXPORT)) {
+                generator.setParameter(GSISSHExportConstants.EXPORT, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHExport gsisshExport = (GSISSHExport) result;
+                        GSISSHExportResource gsisshExportResource =
+                                (GSISSHExportResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT, 
gsisshExport);
+                        gsiSSHExportResources.add(gsisshExportResource);
+                    }
+                }
+            } else if (fieldName.equals(GSISSHExportConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHExport gsisshExport = (GSISSHExport) result;
+                        GSISSHExportResource gsisshExportResource =
+                                (GSISSHExportResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GSISSH_EXPORT, 
gsisshExport);
+                        gsiSSHExportResources.add(gsisshExportResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Export 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
GSISSH Export Resource.");
+            }
+            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();
+            }
+        }
+        return gsiSSHExportResources;
+    }
+
+    @Override
+    public List<AppCatalogResource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+        List<String> gsiSSHExportIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GSISSH_EXPORT);
+            List results;
+            if (fieldName.equals(GSISSHExportConstants.SUBMISSION_ID)) {
+                generator.setParameter(GSISSHExportConstants.SUBMISSION_ID, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHExport gsisshExport = (GSISSHExport) result;
+                        gsiSSHExportIDs.add(gsisshExport.getSubmissionID());
+                    }
+                }
+            } else if (fieldName.equals(GSISSHExportConstants.EXPORT)) {
+                generator.setParameter(GSISSHExportConstants.EXPORT, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        GSISSHExport gsisshExport = (GSISSHExport) result;
+                        gsiSSHExportIDs.add(gsisshExport.getSubmissionID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for GSISSH Export 
resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
GSISSH Export Resource.");
+            }
+            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();
+            }
+        }
+        return gsiSSHExportIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GSISSHExport existingGSIExport = em.find(GSISSHExport.class, new 
GSISSHExportPK(submissionID, export));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            GSISSHSubmission gsisshSubmission = 
em.find(GSISSHSubmission.class, submissionID);
+            if (existingGSIExport != null) {
+                existingGSIExport.setSubmissionID(submissionID);
+                existingGSIExport.setExport(export);
+                existingGSIExport.setGsisshJobSubmission(gsisshSubmission);
+                em.merge(existingGSIExport);
+            } else {
+                GSISSHExport gsisshExport = new GSISSHExport();
+                gsisshExport.setSubmissionID(submissionID);
+                gsisshExport.setExport(export);
+                gsisshExport.setGsisshJobSubmission(gsisshSubmission);
+                em.persist(gsisshExport);
+            }
+            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();
+            }
+        }
+    }
+
+    public boolean isExists(Object identifier) throws AppCatalogException {
+        HashMap<String, String> ids;
+        if (identifier instanceof Map){
+            ids = (HashMap)identifier;
+        }else {
+            logger.error("Identifier should be a map with the field name and 
it's value");
+            throw new AppCatalogException("Identifier should be a map with the 
field name and it's value");
+        }
+
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            GSISSHExport gsisshExport = em.find(GSISSHExport.class, new 
GSISSHExportPK(ids.get(GSISSHExportConstants.SUBMISSION_ID),
+                    ids.get(GSISSHExportConstants.EXPORT)));
+
+            em.close();
+            return gsisshExport != 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 getSubmissionID() {
+        return submissionID;
+    }
+
+    public void setSubmissionID(String submissionID) {
+        this.submissionID = submissionID;
+    }
+
+    public String getExport() {
+        return export;
+    }
+
+    public void setExport(String export) {
+        this.export = export;
+    }
+
+    public GSISSHSubmissionResource getGsisshSubmissionResource() {
+        return gsisshSubmissionResource;
+    }
+
+    public void setGsisshSubmissionResource(GSISSHSubmissionResource 
gsisshSubmissionResource) {
+        this.gsisshSubmissionResource = gsisshSubmissionResource;
+    }
+}

Reply via email to