http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementResource.java
new file mode 100644
index 0000000..35b36e0
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementResource.java
@@ -0,0 +1,279 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.GridftpDataMovement;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GridftpDataMovementResource extends AbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(GridftpDataMovementResource.class);
+       private String dataMovementInterfaceId;
+       private String securityProtocol;
+    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 {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_DATA_MOVEMENT);
+                       
generator.setParameter(GridftpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
+                       Query q = generator.deleteQuery(em);
+                       q.executeUpdate();
+                       em.getTransaction().commit();
+                       em.close();
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public Resource get(Object identifier) throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_DATA_MOVEMENT);
+                       
generator.setParameter(GridftpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, 
identifier);
+                       Query q = generator.selectQuery(em);
+                       GridftpDataMovement gridftpDataMovement = 
(GridftpDataMovement) q.getSingleResult();
+                       GridftpDataMovementResource gridftpDataMovementResource 
= (GridftpDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_DATA_MOVEMENT, 
gridftpDataMovement);
+                       em.getTransaction().commit();
+                       em.close();
+                       return gridftpDataMovementResource;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public List<Resource> get(String fieldName, Object value) throws 
AppCatalogException {
+               List<Resource> gridftpDataMovementResources = new 
ArrayList<Resource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_DATA_MOVEMENT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || 
(fieldName.equals(GridftpDataMovementConstants.SECURITY_PROTOCOL))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpDataMovement gridftpDataMovement 
= (GridftpDataMovement) result;
+                                       GridftpDataMovementResource 
gridftpDataMovementResource = (GridftpDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_DATA_MOVEMENT, 
gridftpDataMovement);
+                                       
gridftpDataMovementResources.add(gridftpDataMovementResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Data Movement Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Data Movement 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 gridftpDataMovementResources;
+       }
+
+    @Override
+    public List<Resource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> gridftpDataMovementResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_DATA_MOVEMENT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || 
(fieldName.equals(GridftpDataMovementConstants.SECURITY_PROTOCOL))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpDataMovement gridftpDataMovement 
= (GridftpDataMovement) result;
+                                       GridftpDataMovementResource 
gridftpDataMovementResource = (GridftpDataMovementResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_DATA_MOVEMENT, 
gridftpDataMovement);
+                                       
gridftpDataMovementResourceIDs.add(gridftpDataMovementResource.getDataMovementInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Data Movement Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Data Movement 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 gridftpDataMovementResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       GridftpDataMovement existingGridftpDataMovement = 
em.find(GridftpDataMovement.class, dataMovementInterfaceId);
+                       em.close();
+                       GridftpDataMovement gridftpDataMovement;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingGridftpDataMovement == null) {
+                               gridftpDataMovement = new GridftpDataMovement();
+                
gridftpDataMovement.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               gridftpDataMovement = 
existingGridftpDataMovement;
+                
gridftpDataMovement.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       
gridftpDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId());
+                       
gridftpDataMovement.setSecurityProtocol(getSecurityProtocol());
+                       if (existingGridftpDataMovement == null) {
+                               em.persist(gridftpDataMovement);
+                       } else {
+                               em.merge(gridftpDataMovement);
+                       }
+                       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();
+                       GridftpDataMovement gridftpDataMovement = 
em.find(GridftpDataMovement.class, identifier);
+                       em.close();
+                       return gridftpDataMovement != 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 getDataMovementInterfaceId() {
+               return dataMovementInterfaceId;
+       }
+       
+       public String getSecurityProtocol() {
+               return securityProtocol;
+       }
+       
+       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+               this.dataMovementInterfaceId=dataMovementInterfaceId;
+       }
+       
+       public void setSecurityProtocol(String securityProtocol) {
+               this.securityProtocol=securityProtocol;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointAppCatalogResourceAppCat.java
new file mode 100644
index 0000000..6d04b6c
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointAppCatalogResourceAppCat.java
@@ -0,0 +1,317 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.airavata.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.GridftpDataMovement;
+import org.apache.airavata.registry.core.app.catalog.model.GridftpEndpoint;
+import org.apache.airavata.registry.core.app.catalog.model.GridftpEndpoint_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 GridftpEndpointAppCatalogResourceAppCat extends 
AppCatAbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(GridftpEndpointAppCatalogResourceAppCat.class);
+       private String endpoint;
+       private String dataMovementInterfaceId;
+       private GridftpDataMovementAppCatalogResourceAppCat 
gridftpDataMovementResource;
+    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(GRIDFTP_ENDPOINT);
+                       
generator.setParameter(GridftpEndpointConstants.ENDPOINT, 
ids.get(GridftpEndpointConstants.ENDPOINT));
+                       
generator.setParameter(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID, 
ids.get(GridftpEndpointConstants.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(GRIDFTP_ENDPOINT);
+                       
generator.setParameter(GridftpEndpointConstants.ENDPOINT, 
ids.get(GridftpEndpointConstants.ENDPOINT));
+                       
generator.setParameter(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID, 
ids.get(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID));
+                       Query q = generator.selectQuery(em);
+                       GridftpEndpoint gridftpEndpoint = (GridftpEndpoint) 
q.getSingleResult();
+                       GridftpEndpointAppCatalogResourceAppCat 
gridftpEndpointResource = (GridftpEndpointAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                       em.getTransaction().commit();
+                       em.close();
+                       return gridftpEndpointResource;
+               } 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> gridftpEndpointResources = new 
ArrayList<AppCatalogResource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_ENDPOINT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpEndpointConstants.ENDPOINT)) || 
(fieldName.equals(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpEndpoint gridftpEndpoint = 
(GridftpEndpoint) result;
+                                       GridftpEndpointAppCatalogResourceAppCat 
gridftpEndpointResource = (GridftpEndpointAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                                       
gridftpEndpointResources.add(gridftpEndpointResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Endpoint Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Endpoint 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 gridftpEndpointResources;
+       }
+
+    @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> gridftpEndpointResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_ENDPOINT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpEndpointConstants.ENDPOINT)) || 
(fieldName.equals(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpEndpoint gridftpEndpoint = 
(GridftpEndpoint) result;
+                                       GridftpEndpointAppCatalogResourceAppCat 
gridftpEndpointResource = (GridftpEndpointAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                                       
gridftpEndpointResourceIDs.add(gridftpEndpointResource.getDataMovementInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Endpoint Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Endpoint 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 gridftpEndpointResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       GridftpEndpoint existingGridftpEndpoint = 
em.find(GridftpEndpoint.class, new GridftpEndpoint_PK(endpoint, 
dataMovementInterfaceId));
+                       em.close();
+                       GridftpEndpoint gridftpEndpoint;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingGridftpEndpoint == null) {
+                               gridftpEndpoint = new GridftpEndpoint();
+                
gridftpEndpoint.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               gridftpEndpoint = existingGridftpEndpoint;
+                
gridftpEndpoint.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       gridftpEndpoint.setEndpoint(getEndpoint());
+                       
gridftpEndpoint.setDataMovementInterfaceId(getDataMovementInterfaceId());
+                       GridftpDataMovement gridftpDataMovement = 
em.find(GridftpDataMovement.class, getDataMovementInterfaceId());
+                       
gridftpEndpoint.setGridftpDataMovement(gridftpDataMovement);
+                       if (existingGridftpEndpoint == null) {
+                               em.persist(gridftpEndpoint);
+                       } else {
+                               em.merge(gridftpEndpoint);
+                       }
+                       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();
+                       GridftpEndpoint gridftpEndpoint = 
em.find(GridftpEndpoint.class, new 
GridftpEndpoint_PK(ids.get(GridftpEndpointConstants.ENDPOINT), 
ids.get(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID)));
+                       em.close();
+                       return gridftpEndpoint != 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 getEndpoint() {
+               return endpoint;
+       }
+       
+       public String getDataMovementInterfaceId() {
+               return dataMovementInterfaceId;
+       }
+       
+       public GridftpDataMovementAppCatalogResourceAppCat 
getGridftpDataMovementResource() {
+               return gridftpDataMovementResource;
+       }
+       
+       public void setEndpoint(String endpoint) {
+               this.endpoint=endpoint;
+       }
+       
+       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+               this.dataMovementInterfaceId=dataMovementInterfaceId;
+       }
+       
+       public void 
setGridftpDataMovementResource(GridftpDataMovementAppCatalogResourceAppCat 
gridftpDataMovementResource) {
+               this.gridftpDataMovementResource=gridftpDataMovementResource;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointResource.java
new file mode 100644
index 0000000..f484568
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpEndpointResource.java
@@ -0,0 +1,317 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.aiaravata.application.catalog.data.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.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.GridftpDataMovement;
+import org.apache.aiaravata.application.catalog.data.model.GridftpEndpoint;
+import org.apache.aiaravata.application.catalog.data.model.GridftpEndpoint_PK;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GridftpEndpointResource extends AbstractResource {
+       private final static Logger logger = 
LoggerFactory.getLogger(GridftpEndpointResource.class);
+       private String endpoint;
+       private String dataMovementInterfaceId;
+       private GridftpDataMovementResource gridftpDataMovementResource;
+    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(GRIDFTP_ENDPOINT);
+                       
generator.setParameter(GridftpEndpointConstants.ENDPOINT, 
ids.get(GridftpEndpointConstants.ENDPOINT));
+                       
generator.setParameter(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID, 
ids.get(GridftpEndpointConstants.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 Resource 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(GRIDFTP_ENDPOINT);
+                       
generator.setParameter(GridftpEndpointConstants.ENDPOINT, 
ids.get(GridftpEndpointConstants.ENDPOINT));
+                       
generator.setParameter(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID, 
ids.get(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID));
+                       Query q = generator.selectQuery(em);
+                       GridftpEndpoint gridftpEndpoint = (GridftpEndpoint) 
q.getSingleResult();
+                       GridftpEndpointResource gridftpEndpointResource = 
(GridftpEndpointResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                       em.getTransaction().commit();
+                       em.close();
+                       return gridftpEndpointResource;
+               } catch (ApplicationSettingsException e) {
+                       logger.error(e.getMessage(), e);
+                       throw new AppCatalogException(e);
+               } finally {
+                       if (em != null && em.isOpen()) {
+                               if (em.getTransaction().isActive()) {
+                                       em.getTransaction().rollback();
+                               }
+                               em.close();
+                       }
+               }
+       }
+       
+       @Override
+       public List<Resource> get(String fieldName, Object value) throws 
AppCatalogException {
+               List<Resource> gridftpEndpointResources = new 
ArrayList<Resource>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_ENDPOINT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpEndpointConstants.ENDPOINT)) || 
(fieldName.equals(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpEndpoint gridftpEndpoint = 
(GridftpEndpoint) result;
+                                       GridftpEndpointResource 
gridftpEndpointResource = (GridftpEndpointResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                                       
gridftpEndpointResources.add(gridftpEndpointResource);
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Endpoint Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Endpoint 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 gridftpEndpointResources;
+       }
+
+    @Override
+    public List<Resource> getAll() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+    public List<String> getAllIds() throws AppCatalogException {
+        return null;
+    }
+
+    @Override
+       public List<String> getIds(String fieldName, Object value) throws 
AppCatalogException {
+               List<String> gridftpEndpointResourceIDs = new 
ArrayList<String>();
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(GRIDFTP_ENDPOINT);
+                       Query q;
+                       if 
((fieldName.equals(GridftpEndpointConstants.ENDPOINT)) || 
(fieldName.equals(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID))) {
+                               generator.setParameter(fieldName, value);
+                               q = generator.selectQuery(em);
+                               List<?> results = q.getResultList();
+                               for (Object result : results) {
+                                       GridftpEndpoint gridftpEndpoint = 
(GridftpEndpoint) result;
+                                       GridftpEndpointResource 
gridftpEndpointResource = (GridftpEndpointResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.GRIDFTP_ENDPOINT, 
gridftpEndpoint);
+                                       
gridftpEndpointResourceIDs.add(gridftpEndpointResource.getDataMovementInterfaceId());
+                               }
+                       } else {
+                               em.getTransaction().commit();
+                                       em.close();
+                               logger.error("Unsupported field name for 
Gridftp Endpoint Resource.", new IllegalArgumentException());
+                               throw new IllegalArgumentException("Unsupported 
field name for Gridftp Endpoint 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 gridftpEndpointResourceIDs;
+       }
+       
+       @Override
+       public void save() throws AppCatalogException {
+               EntityManager em = null;
+               try {
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       GridftpEndpoint existingGridftpEndpoint = 
em.find(GridftpEndpoint.class, new GridftpEndpoint_PK(endpoint, 
dataMovementInterfaceId));
+                       em.close();
+                       GridftpEndpoint gridftpEndpoint;
+                       em = AppCatalogJPAUtils.getEntityManager();
+                       em.getTransaction().begin();
+                       if (existingGridftpEndpoint == null) {
+                               gridftpEndpoint = new GridftpEndpoint();
+                
gridftpEndpoint.setCreationTime(AiravataUtils.getCurrentTimestamp());
+                       } else {
+                               gridftpEndpoint = existingGridftpEndpoint;
+                
gridftpEndpoint.setUpdateTime(AiravataUtils.getCurrentTimestamp());
+                       }
+                       gridftpEndpoint.setEndpoint(getEndpoint());
+                       
gridftpEndpoint.setDataMovementInterfaceId(getDataMovementInterfaceId());
+                       GridftpDataMovement gridftpDataMovement = 
em.find(GridftpDataMovement.class, getDataMovementInterfaceId());
+                       
gridftpEndpoint.setGridftpDataMovement(gridftpDataMovement);
+                       if (existingGridftpEndpoint == null) {
+                               em.persist(gridftpEndpoint);
+                       } else {
+                               em.merge(gridftpEndpoint);
+                       }
+                       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();
+                       GridftpEndpoint gridftpEndpoint = 
em.find(GridftpEndpoint.class, new 
GridftpEndpoint_PK(ids.get(GridftpEndpointConstants.ENDPOINT), 
ids.get(GridftpEndpointConstants.DATA_MOVEMENT_INTERFACE_ID)));
+                       em.close();
+                       return gridftpEndpoint != 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 getEndpoint() {
+               return endpoint;
+       }
+       
+       public String getDataMovementInterfaceId() {
+               return dataMovementInterfaceId;
+       }
+       
+       public GridftpDataMovementResource getGridftpDataMovementResource() {
+               return gridftpDataMovementResource;
+       }
+       
+       public void setEndpoint(String endpoint) {
+               this.endpoint=endpoint;
+       }
+       
+       public void setDataMovementInterfaceId(String dataMovementInterfaceId) {
+               this.dataMovementInterfaceId=dataMovementInterfaceId;
+       }
+       
+       public void setGridftpDataMovementResource(GridftpDataMovementResource 
gridftpDataMovementResource) {
+               this.gridftpDataMovementResource=gridftpDataMovementResource;
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasAppCatalogResourceAppCat.java
new file mode 100644
index 0000000..936b6c6
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasAppCatalogResourceAppCat.java
@@ -0,0 +1,317 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.airavata.registry.core.app.catalog.resources;
+
+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.HostAlias;
+import org.apache.airavata.registry.core.app.catalog.model.HostAliasPK;
+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.*;
+
+public class HostAliasAppCatalogResourceAppCat extends AppCatAbstractResource {
+
+    private final static Logger logger = 
LoggerFactory.getLogger(HostAliasAppCatalogResourceAppCat.class);
+
+    private String resourceID;
+    private String alias;
+    private ComputeResourceAppCatalogResourceAppCat computeHostResource;
+
+    public void remove(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator= new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            generator.setParameter(HostAliasConstants.RESOURCE_ID, 
(String)identifier);
+//            generator.setParameter(HostAliasConstants.ALIAS, 
ids.get(HostAliasConstants.ALIAS));
+            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(HOST_ALIAS);
+            generator.setParameter(HostAliasConstants.RESOURCE_ID, 
ids.get(HostAliasConstants.RESOURCE_ID));
+            generator.setParameter(HostAliasConstants.ALIAS, 
ids.get(HostAliasConstants.ALIAS));
+            Query q = generator.selectQuery(em);
+            HostAlias hostAlias = (HostAlias) q.getSingleResult();
+            HostAliasAppCatalogResourceAppCat hostAliasResource =
+                    (HostAliasAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+            em.getTransaction().commit();
+            em.close();
+            return hostAliasResource;
+        } 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> hostAliasResources = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            List results;
+            if (fieldName.equals(HostAliasConstants.ALIAS)) {
+                generator.setParameter(HostAliasConstants.ALIAS, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        HostAliasAppCatalogResourceAppCat hostAliasResource =
+                                (HostAliasAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+                        hostAliasResources.add(hostAliasResource);
+                    }
+                }
+            } else if (fieldName.equals(HostAliasConstants.RESOURCE_ID)) {
+                generator.setParameter(HostAliasConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        HostAliasAppCatalogResourceAppCat hostAliasResource =
+                                (HostAliasAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+                        hostAliasResources.add(hostAliasResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host Alias 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host Alias 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 hostAliasResources;
+    }
+
+    @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> hostAliasResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            List results;
+            if (fieldName.equals(HostAliasConstants.ALIAS)) {
+                generator.setParameter(HostAliasConstants.ALIAS, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        hostAliasResourceIDs.add(hostAlias.getResourceID());
+                    }
+                }
+            } else if (fieldName.equals(HostAliasConstants.RESOURCE_ID)) {
+                generator.setParameter(HostAliasConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        hostAliasResourceIDs.add(hostAlias.getResourceID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host Alias 
resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host Alias 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 hostAliasResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            HostAlias existingHostAlias = em.find(HostAlias.class, new 
HostAliasPK(resourceID, alias));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            ComputeResource computeResource = em.find(ComputeResource.class, 
resourceID);
+            if (existingHostAlias !=  null){
+                existingHostAlias.setAlias(alias);
+                existingHostAlias.setComputeResource(computeResource);
+                existingHostAlias.setResourceID(resourceID);
+                em.merge(existingHostAlias);
+            }else {
+                HostAlias hostAlias = new HostAlias();
+                hostAlias.setAlias(alias);
+                hostAlias.setResourceID(resourceID);
+                hostAlias.setComputeResource(computeResource);
+
+                em.persist(hostAlias);
+            }
+            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();
+            HostAlias hostAlias = em.find(HostAlias.class, new 
HostAliasPK(ids.get(HostAliasConstants.RESOURCE_ID),
+                    ids.get(HostAliasConstants.ALIAS)));
+
+            em.close();
+            return hostAlias != 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 getResourceID() {
+        return resourceID;
+    }
+
+    public void setResourceID(String resourceID) {
+        this.resourceID = resourceID;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    public void setAlias(String alias) {
+        this.alias = alias;
+    }
+
+    public ComputeResourceAppCatalogResourceAppCat getComputeHostResource() {
+        return computeHostResource;
+    }
+
+    public void setComputeHostResource(ComputeResourceAppCatalogResourceAppCat 
computeHostResource) {
+        this.computeHostResource = computeHostResource;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasResource.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasResource.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasResource.java
new file mode 100644
index 0000000..f267a72
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostAliasResource.java
@@ -0,0 +1,317 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.aiaravata.application.catalog.data.resources;
+
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.ComputeResource;
+import org.apache.aiaravata.application.catalog.data.model.HostAlias;
+import org.apache.aiaravata.application.catalog.data.model.HostAliasPK;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator;
+import 
org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.*;
+
+public class HostAliasResource extends AbstractResource {
+
+    private final static Logger logger = 
LoggerFactory.getLogger(HostAliasResource.class);
+
+    private String resourceID;
+    private String alias;
+    private ComputeResourceResource computeHostResource;
+
+    public void remove(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator= new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            generator.setParameter(HostAliasConstants.RESOURCE_ID, 
(String)identifier);
+//            generator.setParameter(HostAliasConstants.ALIAS, 
ids.get(HostAliasConstants.ALIAS));
+            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 Resource 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(HOST_ALIAS);
+            generator.setParameter(HostAliasConstants.RESOURCE_ID, 
ids.get(HostAliasConstants.RESOURCE_ID));
+            generator.setParameter(HostAliasConstants.ALIAS, 
ids.get(HostAliasConstants.ALIAS));
+            Query q = generator.selectQuery(em);
+            HostAlias hostAlias = (HostAlias) q.getSingleResult();
+            HostAliasResource hostAliasResource =
+                    (HostAliasResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+            em.getTransaction().commit();
+            em.close();
+            return hostAliasResource;
+        } 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<Resource> get(String fieldName, Object value) throws 
AppCatalogException {
+
+        List<Resource> hostAliasResources = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            List results;
+            if (fieldName.equals(HostAliasConstants.ALIAS)) {
+                generator.setParameter(HostAliasConstants.ALIAS, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        HostAliasResource hostAliasResource =
+                                (HostAliasResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+                        hostAliasResources.add(hostAliasResource);
+                    }
+                }
+            } else if (fieldName.equals(HostAliasConstants.RESOURCE_ID)) {
+                generator.setParameter(HostAliasConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        HostAliasResource hostAliasResource =
+                                (HostAliasResource) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_ALIAS, hostAlias);
+                        hostAliasResources.add(hostAliasResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host Alias 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host Alias 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 hostAliasResources;
+    }
+
+    @Override
+    public List<Resource> 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> hostAliasResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_ALIAS);
+            List results;
+            if (fieldName.equals(HostAliasConstants.ALIAS)) {
+                generator.setParameter(HostAliasConstants.ALIAS, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        hostAliasResourceIDs.add(hostAlias.getResourceID());
+                    }
+                }
+            } else if (fieldName.equals(HostAliasConstants.RESOURCE_ID)) {
+                generator.setParameter(HostAliasConstants.RESOURCE_ID, value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostAlias hostAlias = (HostAlias) result;
+                        hostAliasResourceIDs.add(hostAlias.getResourceID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host Alias 
resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host Alias 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 hostAliasResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            HostAlias existingHostAlias = em.find(HostAlias.class, new 
HostAliasPK(resourceID, alias));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            ComputeResource computeResource = em.find(ComputeResource.class, 
resourceID);
+            if (existingHostAlias !=  null){
+                existingHostAlias.setAlias(alias);
+                existingHostAlias.setComputeResource(computeResource);
+                existingHostAlias.setResourceID(resourceID);
+                em.merge(existingHostAlias);
+            }else {
+                HostAlias hostAlias = new HostAlias();
+                hostAlias.setAlias(alias);
+                hostAlias.setResourceID(resourceID);
+                hostAlias.setComputeResource(computeResource);
+
+                em.persist(hostAlias);
+            }
+            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();
+            HostAlias hostAlias = em.find(HostAlias.class, new 
HostAliasPK(ids.get(HostAliasConstants.RESOURCE_ID),
+                    ids.get(HostAliasConstants.ALIAS)));
+
+            em.close();
+            return hostAlias != 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 getResourceID() {
+        return resourceID;
+    }
+
+    public void setResourceID(String resourceID) {
+        this.resourceID = resourceID;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    public void setAlias(String alias) {
+        this.alias = alias;
+    }
+
+    public ComputeResourceResource getComputeHostResource() {
+        return computeHostResource;
+    }
+
+    public void setComputeHostResource(ComputeResourceResource 
computeHostResource) {
+        this.computeHostResource = computeHostResource;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/ec8c6202/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostIPAddressAppCatalogResourceAppCat.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostIPAddressAppCatalogResourceAppCat.java
 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostIPAddressAppCatalogResourceAppCat.java
new file mode 100644
index 0000000..e32fc36
--- /dev/null
+++ 
b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/HostIPAddressAppCatalogResourceAppCat.java
@@ -0,0 +1,318 @@
+/**
+ * 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.ComputeResource;
+import org.apache.airavata.registry.core.app.catalog.model.HostIPAddress;
+import org.apache.airavata.registry.core.app.catalog.model.HostIPAddressPK;
+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 HostIPAddressAppCatalogResourceAppCat extends 
AppCatAbstractResource {
+
+    private final static Logger logger = 
LoggerFactory.getLogger(HostIPAddressAppCatalogResourceAppCat.class);
+
+    private String resourceID;
+    private String ipaddress;
+    private ComputeResourceAppCatalogResourceAppCat computeHostResource;
+
+    public void remove(Object identifier) throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator= new 
AppCatalogQueryGenerator(HOST_IPADDRESS);
+            generator.setParameter(HostIPAddressConstants.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();
+            }
+        }
+
+    }
+
+    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(HOST_IPADDRESS);
+            generator.setParameter(HostIPAddressConstants.RESOURCE_ID, 
ids.get(HostIPAddressConstants.RESOURCE_ID));
+            generator.setParameter(HostIPAddressConstants.IP_ADDRESS, 
ids.get(HostIPAddressConstants.IP_ADDRESS));
+            Query q = generator.selectQuery(em);
+            HostIPAddress hostIPAddress = (HostIPAddress) q.getSingleResult();
+            HostIPAddressAppCatalogResourceAppCat hostIPAddressResource =
+                    (HostIPAddressAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_IPADDRESS, 
hostIPAddress);
+            em.getTransaction().commit();
+            em.close();
+            return hostIPAddressResource;
+        } 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> hostIPAddressResources = new 
ArrayList<AppCatalogResource>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_IPADDRESS);
+            List results;
+            if (fieldName.equals(HostIPAddressConstants.IP_ADDRESS)) {
+                generator.setParameter(HostIPAddressConstants.IP_ADDRESS, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostIPAddress hostIPAddress = (HostIPAddress) result;
+                        HostIPAddressAppCatalogResourceAppCat 
hostIPAddressResource =
+                                (HostIPAddressAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_IPADDRESS, 
hostIPAddress);
+                        hostIPAddressResources.add(hostIPAddressResource);
+                    }
+                }
+            } else if (fieldName.equals(HostIPAddressConstants.RESOURCE_ID)) {
+                generator.setParameter(HostIPAddressConstants.RESOURCE_ID, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostIPAddress hostIPAddress = (HostIPAddress) result;
+                        HostIPAddressAppCatalogResourceAppCat 
hostIPAddressResource =
+                                (HostIPAddressAppCatalogResourceAppCat) 
AppCatalogJPAUtils.getResource(AppCatalogResourceType.HOST_IPADDRESS, 
hostIPAddress);
+                        hostIPAddressResources.add(hostIPAddressResource);
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host IPAddress 
Resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host IPAddress 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 hostIPAddressResources;
+    }
+
+    @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> hostIPAddressResourceIDs = new ArrayList<String>();
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            Query q;
+            AppCatalogQueryGenerator generator = new 
AppCatalogQueryGenerator(HOST_IPADDRESS);
+            List results;
+            if (fieldName.equals(HostIPAddressConstants.IP_ADDRESS)) {
+                generator.setParameter(HostIPAddressConstants.IP_ADDRESS, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostIPAddress hostIPAddress = (HostIPAddress) result;
+                        
hostIPAddressResourceIDs.add(hostIPAddress.getResourceID());
+                    }
+                }
+            } else if (fieldName.equals(HostIPAddressConstants.RESOURCE_ID)) {
+                generator.setParameter(HostIPAddressConstants.RESOURCE_ID, 
value);
+                q = generator.selectQuery(em);
+                results = q.getResultList();
+                if (results.size() != 0) {
+                    for (Object result : results) {
+                        HostIPAddress hostIPAddress = (HostIPAddress) result;
+                        
hostIPAddressResourceIDs.add(hostIPAddress.getResourceID());
+                    }
+                }
+            } else {
+                em.getTransaction().commit();
+                em.close();
+                logger.error("Unsupported field name for Host IP Address 
resource.", new IllegalArgumentException());
+                throw new IllegalArgumentException("Unsupported field name for 
Host IPAddress 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 hostIPAddressResourceIDs;
+    }
+
+    public void save() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            HostIPAddress existingHostIP = em.find(HostIPAddress.class, new 
HostIPAddressPK(resourceID,ipaddress));
+            em.close();
+
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            ComputeResource computeResource = em.find(ComputeResource.class, 
resourceID);
+            if (existingHostIP !=  null){
+                existingHostIP.setIpaddress(ipaddress);
+                existingHostIP.setResourceID(resourceID);
+                existingHostIP.setComputeResource(computeResource);
+                em.merge(existingHostIP);
+            }else {
+                HostIPAddress hostIPAddress = new HostIPAddress();
+                hostIPAddress.setIpaddress(ipaddress);
+                hostIPAddress.setResourceID(resourceID);
+                hostIPAddress.setComputeResource(computeResource);
+                em.persist(hostIPAddress);
+            }
+            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();
+            HostIPAddress hostIPAddress = em.find(HostIPAddress.class, new 
HostIPAddressPK(ids.get(HostIPAddressConstants.RESOURCE_ID),
+                    ids.get(HostIPAddressConstants.IP_ADDRESS)));
+
+            em.close();
+            return hostIPAddress != 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 getResourceID() {
+        return resourceID;
+    }
+
+    public void setResourceID(String resourceID) {
+        this.resourceID = resourceID;
+    }
+
+    public String getIpaddress() {
+        return ipaddress;
+    }
+
+    public void setIpaddress(String ipaddress) {
+        this.ipaddress = ipaddress;
+    }
+
+    public ComputeResourceAppCatalogResourceAppCat getComputeHostResource() {
+        return computeHostResource;
+    }
+
+    public void setComputeHostResource(ComputeResourceAppCatalogResourceAppCat 
computeHostResource) {
+        this.computeHostResource = computeHostResource;
+    }
+}

Reply via email to