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/GatewayProfileResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GatewayProfileResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GatewayProfileResource.java new file mode 100644 index 0000000..84a90ec --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GatewayProfileResource.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.aiaravata.application.catalog.data.resources; + +import org.airavata.appcatalog.cpi.AppCatalogException; +import org.apache.aiaravata.application.catalog.data.model.GatewayProfile; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType; +import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AiravataUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +public class GatewayProfileResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(GatewayProfileResource.class); + + private String gatewayID; + 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; + } + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GATEWAY_PROFILE); + generator.setParameter(GatewayProfileConstants.GATEWAY_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 Resource get(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GATEWAY_PROFILE); + generator.setParameter(GatewayProfileConstants.GATEWAY_ID, identifier); + Query q = generator.selectQuery(em); + GatewayProfile gatewayProfile = (GatewayProfile) q.getSingleResult(); + GatewayProfileResource gatewayProfileResource = + (GatewayProfileResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GATEWAY_PROFILE, gatewayProfile); + em.getTransaction().commit(); + em.close(); + return gatewayProfileResource; + } 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> gatewayProfileResources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GATEWAY_PROFILE); + List results; + if (fieldName.equals(GatewayProfileConstants.GATEWAY_ID)) { + generator.setParameter(GatewayProfileConstants.GATEWAY_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GatewayProfile gatewayProfile = (GatewayProfile) result; + GatewayProfileResource gatewayProfileResource = + (GatewayProfileResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GATEWAY_PROFILE, gatewayProfile); + gatewayProfileResources.add(gatewayProfileResource); + } + } + } else if (fieldName.equals(GatewayProfileConstants.GATEWAY_ID)) { + generator.setParameter(GatewayProfileConstants.GATEWAY_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GatewayProfile gatewayProfile = (GatewayProfile) result; + GatewayProfileResource gatewayProfileResource = + (GatewayProfileResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GATEWAY_PROFILE, gatewayProfile); + gatewayProfileResources.add(gatewayProfileResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Gateway Profile resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Gateway Profile 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 gatewayProfileResources; + } + + @Override + public List<Resource> getAll() throws AppCatalogException { + List<Resource> resourceList = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GATEWAY_PROFILE); + Query q = generator.selectQuery(em); + List results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GatewayProfile gatewayProfile = (GatewayProfile) result; + GatewayProfileResource gatewayProfileResource = + (GatewayProfileResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GATEWAY_PROFILE, gatewayProfile); + resourceList.add(gatewayProfileResource); + } + } + 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 resourceList; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + return null; + } + + public List<String> getIds(String fieldName, Object value) throws AppCatalogException { + List<String> gatewayProfileResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GATEWAY_PROFILE); + List results; + if (fieldName.equals(GatewayProfileConstants.GATEWAY_ID)) { + generator.setParameter(GatewayProfileConstants.GATEWAY_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GatewayProfile gatewayProfile = (GatewayProfile) result; + gatewayProfileResourceIDs.add(gatewayProfile.getGatewayID()); + } + } + } else if (fieldName.equals(GatewayProfileConstants.GATEWAY_ID)) { + generator.setParameter(GatewayProfileConstants.GATEWAY_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GatewayProfile gatewayProfile = (GatewayProfile) result; + gatewayProfileResourceIDs.add(gatewayProfile.getGatewayID()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Gateway Profile resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Gateway Profile 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 gatewayProfileResourceIDs; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GatewayProfile existingGatewayProfile = em.find(GatewayProfile.class, gatewayID); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingGatewayProfile != null) { + existingGatewayProfile.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + em.merge(existingGatewayProfile); + } else { + GatewayProfile gatewayProfile = new GatewayProfile(); + gatewayProfile.setGatewayID(gatewayID); + gatewayProfile.setCreationTime(AiravataUtils.getCurrentTimestamp()); + em.persist(gatewayProfile); + } + 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 { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GatewayProfile gatewayProfile = em.find(GatewayProfile.class, identifier); + em.close(); + return gatewayProfile != 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 getGatewayID() { + return gatewayID; + } + + public void setGatewayID(String gatewayID) { + this.gatewayID = gatewayID; + } +}
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/GlobusGKEndpointAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointAppCatalogResourceAppCat.java new file mode 100644 index 0000000..2902f89 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointAppCatalogResourceAppCat.java @@ -0,0 +1,323 @@ +/** + * 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.GlobusGKEndPointPK; +import org.apache.airavata.registry.core.app.catalog.model.GlobusGKEndpoint; +import org.apache.airavata.registry.core.app.catalog.model.GlobusJobSubmission; +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 GlobusGKEndpointAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(GlobusGKEndpointAppCatalogResourceAppCat.class); + + private String submissionID; + private String endpoint; + + private GlobusJobSubmissionAppCatalogResourceAppCat globusJobSubmissionResource; + + + public void remove(Object identifier) throws AppCatalogException { + HashMap<String, String> ids; + if (identifier instanceof Map) { + ids = (HashMap) identifier; + } else { + logger.error("Identifier should be a map with the field name and it's value"); + throw new AppCatalogException("Identifier should be a map with the field name and it's value"); + } + + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + generator.setParameter(GlobusEPConstants.ENDPOINT, ids.get(GlobusEPConstants.ENDPOINT)); + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, ids.get(GlobusEPConstants.SUBMISSION_ID)); + Query q = generator.deleteQuery(em); + q.executeUpdate(); + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + public AppCatalogResource get(Object identifier) throws AppCatalogException { + HashMap<String, String> ids; + if (identifier instanceof Map) { + ids = (HashMap) identifier; + } else { + logger.error("Identifier should be a map with the field name and it's value"); + throw new AppCatalogException("Identifier should be a map with the field name and it's value"); + } + + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, ids.get(GlobusEPConstants.SUBMISSION_ID)); + generator.setParameter(GlobusEPConstants.ENDPOINT, ids.get(GlobusEPConstants.ENDPOINT)); + Query q = generator.selectQuery(em); + GlobusGKEndpoint gkEndpoint = (GlobusGKEndpoint) q.getSingleResult(); + GlobusGKEndpointAppCatalogResourceAppCat gkEndpointResource = + (GlobusGKEndpointAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, gkEndpoint); + em.getTransaction().commit(); + em.close(); + return gkEndpointResource; + } 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> resources = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + List results; + if (fieldName.equals(GlobusEPConstants.ENDPOINT)) { + generator.setParameter(GlobusEPConstants.ENDPOINT, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint gkEndpoint = (GlobusGKEndpoint) result; + GlobusGKEndpointAppCatalogResourceAppCat gkEndpointResource = + (GlobusGKEndpointAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, gkEndpoint); + resources.add(gkEndpointResource); + } + } + } else if (fieldName.equals(GlobusEPConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + GlobusGKEndpointAppCatalogResourceAppCat gkEndpointResource = + (GlobusGKEndpointAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, globusGKEndpoint); + resources.add(gkEndpointResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus Endpoint Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Endpoint 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 resources; + } + + @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> list = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + List results; + if (fieldName.equals(GlobusEPConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + list.add(globusGKEndpoint.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusEPConstants.ENDPOINT)) { + generator.setParameter(GlobusEPConstants.ENDPOINT, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + list.add(globusGKEndpoint.getSubmissionID()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus EP resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus EP 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 list; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusGKEndpoint existingGlobusEP = em.find(GlobusGKEndpoint.class, new GlobusGKEndPointPK(submissionID, endpoint)); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, submissionID); + if (existingGlobusEP != null) { + existingGlobusEP.setSubmissionID(submissionID); + existingGlobusEP.setEndpoint(endpoint); + existingGlobusEP.setGlobusSubmission(globusJobSubmission); + em.merge(existingGlobusEP); + } else { + GlobusGKEndpoint globusGKEndpoint = new GlobusGKEndpoint(); + globusGKEndpoint.setSubmissionID(submissionID); + globusGKEndpoint.setEndpoint(endpoint); + globusGKEndpoint.setGlobusSubmission(globusJobSubmission); + em.persist(globusGKEndpoint); + } + 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(); + GlobusGKEndpoint gkEndpoint = em.find(GlobusGKEndpoint.class, new GlobusGKEndPointPK(ids.get(GlobusEPConstants.SUBMISSION_ID), + ids.get(GlobusEPConstants.ENDPOINT))); + + em.close(); + return gkEndpoint != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } } + + public String getSubmissionID() { + return submissionID; + } + + public void setSubmissionID(String submissionID) { + this.submissionID = submissionID; + } + + public String getEndpoint() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public GlobusJobSubmissionAppCatalogResourceAppCat getGlobusJobSubmissionResource() { + return globusJobSubmissionResource; + } + + public void setGlobusJobSubmissionResource(GlobusJobSubmissionAppCatalogResourceAppCat globusJobSubmissionResource) { + this.globusJobSubmissionResource = globusJobSubmissionResource; + } +} 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/GlobusGKEndpointResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointResource.java new file mode 100644 index 0000000..c933600 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusGKEndpointResource.java @@ -0,0 +1,321 @@ +/** + * 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.*; +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GlobusGKEndpointResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(GlobusGKEndpointResource.class); + + private String submissionID; + private String endpoint; + + private GlobusJobSubmissionResource globusJobSubmissionResource; + + + public void remove(Object identifier) throws AppCatalogException { + HashMap<String, String> ids; + if (identifier instanceof Map) { + ids = (HashMap) identifier; + } else { + logger.error("Identifier should be a map with the field name and it's value"); + throw new AppCatalogException("Identifier should be a map with the field name and it's value"); + } + + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + generator.setParameter(GlobusEPConstants.ENDPOINT, ids.get(GlobusEPConstants.ENDPOINT)); + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, ids.get(GlobusEPConstants.SUBMISSION_ID)); + Query q = generator.deleteQuery(em); + q.executeUpdate(); + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + public 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(GLOBUS_GK_ENDPOINT); + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, ids.get(GlobusEPConstants.SUBMISSION_ID)); + generator.setParameter(GlobusEPConstants.ENDPOINT, ids.get(GlobusEPConstants.ENDPOINT)); + Query q = generator.selectQuery(em); + GlobusGKEndpoint gkEndpoint = (GlobusGKEndpoint) q.getSingleResult(); + GlobusGKEndpointResource gkEndpointResource = + (GlobusGKEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, gkEndpoint); + em.getTransaction().commit(); + em.close(); + return gkEndpointResource; + } 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> resources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + List results; + if (fieldName.equals(GlobusEPConstants.ENDPOINT)) { + generator.setParameter(GlobusEPConstants.ENDPOINT, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint gkEndpoint = (GlobusGKEndpoint) result; + GlobusGKEndpointResource gkEndpointResource = + (GlobusGKEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, gkEndpoint); + resources.add(gkEndpointResource); + } + } + } else if (fieldName.equals(GlobusEPConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + GlobusGKEndpointResource gkEndpointResource = + (GlobusGKEndpointResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.GLOBUS_GK_ENDPOINT, globusGKEndpoint); + resources.add(gkEndpointResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus Endpoint Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Endpoint 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 resources; + } + + @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> list = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_GK_ENDPOINT); + List results; + if (fieldName.equals(GlobusEPConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusEPConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + list.add(globusGKEndpoint.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusEPConstants.ENDPOINT)) { + generator.setParameter(GlobusEPConstants.ENDPOINT, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusGKEndpoint globusGKEndpoint = (GlobusGKEndpoint) result; + list.add(globusGKEndpoint.getSubmissionID()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus EP resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus EP 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 list; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusGKEndpoint existingGlobusEP = em.find(GlobusGKEndpoint.class, new GlobusGKEndPointPK(submissionID, endpoint)); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, submissionID); + if (existingGlobusEP != null) { + existingGlobusEP.setSubmissionID(submissionID); + existingGlobusEP.setEndpoint(endpoint); + existingGlobusEP.setGlobusSubmission(globusJobSubmission); + em.merge(existingGlobusEP); + } else { + GlobusGKEndpoint globusGKEndpoint = new GlobusGKEndpoint(); + globusGKEndpoint.setSubmissionID(submissionID); + globusGKEndpoint.setEndpoint(endpoint); + globusGKEndpoint.setGlobusSubmission(globusJobSubmission); + em.persist(globusGKEndpoint); + } + 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(); + GlobusGKEndpoint gkEndpoint = em.find(GlobusGKEndpoint.class, new GlobusGKEndPointPK(ids.get(GlobusEPConstants.SUBMISSION_ID), + ids.get(GlobusEPConstants.ENDPOINT))); + + em.close(); + return gkEndpoint != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } } + + public String getSubmissionID() { + return submissionID; + } + + public void setSubmissionID(String submissionID) { + this.submissionID = submissionID; + } + + public String getEndpoint() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public GlobusJobSubmissionResource getGlobusJobSubmissionResource() { + return globusJobSubmissionResource; + } + + public void setGlobusJobSubmissionResource(GlobusJobSubmissionResource globusJobSubmissionResource) { + this.globusJobSubmissionResource = globusJobSubmissionResource; + } +} 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/GlobusJobSubmissionAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionAppCatalogResourceAppCat.java new file mode 100644 index 0000000..b473905 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionAppCatalogResourceAppCat.java @@ -0,0 +1,315 @@ +/** + * 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.GlobusJobSubmission; +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.List; + +public class GlobusJobSubmissionAppCatalogResourceAppCat extends AppCatAbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(GlobusJobSubmissionAppCatalogResourceAppCat.class); + + private String submissionID; + private String resourceJobManager; + private String securityProtocol; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_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 { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, identifier); + Query q = generator.selectQuery(em); + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) q.getSingleResult(); + GlobusJobSubmissionAppCatalogResourceAppCat globusJobSubmissionResource = + (GlobusJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + em.getTransaction().commit(); + em.close(); + return globusJobSubmissionResource; + } 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> globusSubmissionResourceList = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + List results; + if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER)) { + generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + GlobusJobSubmissionAppCatalogResourceAppCat globusJobSubmissionResource = + (GlobusJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + globusSubmissionResourceList.add(globusJobSubmissionResource); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(GlobusJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + GlobusJobSubmissionAppCatalogResourceAppCat globusJobSubmissionResource = + (GlobusJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + globusSubmissionResourceList.add(globusJobSubmissionResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceList; + } + + @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> globusSubmissionResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + List results; + if (fieldName.equals(GlobusJobSubmissionConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.GLOBUS_GATEKEEPER_EP)) { + generator.setParameter(GlobusJobSubmissionConstants.GLOBUS_GATEKEEPER_EP, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } + else if (fieldName.equals(GlobusJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(GlobusJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER)) { + generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus Submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceIDs; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusJobSubmission existingGlobusSubmission = em.find(GlobusJobSubmission.class, submissionID); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingGlobusSubmission != null) { + existingGlobusSubmission.setSubmissionID(submissionID); + existingGlobusSubmission.setResourceJobManager(resourceJobManager); + existingGlobusSubmission.setSecurityProtocol(securityProtocol); + em.merge(existingGlobusSubmission); + } else { + GlobusJobSubmission globusJobSubmission = new GlobusJobSubmission(); + globusJobSubmission.setSubmissionID(submissionID); + globusJobSubmission.setSecurityProtocol(securityProtocol); + globusJobSubmission.setResourceJobManager(resourceJobManager); + em.persist(globusJobSubmission); + } + 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 { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, identifier); + em.close(); + return globusJobSubmission != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + public String getSubmissionID() { + return submissionID; + } + + public void setSubmissionID(String submissionID) { + this.submissionID = submissionID; + } + + public String getResourceJobManager() { + return resourceJobManager; + } + + public void setResourceJobManager(String resourceJobManager) { + this.resourceJobManager = resourceJobManager; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + +} 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/GlobusJobSubmissionResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionResource.java new file mode 100644 index 0000000..4d0f7ef --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GlobusJobSubmissionResource.java @@ -0,0 +1,315 @@ +/** + * 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.GlobusJobSubmission; +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.ArrayList; +import java.util.List; + +public class GlobusJobSubmissionResource extends AbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(GlobusJobSubmissionResource.class); + + private String submissionID; + private String resourceJobManager; + private String securityProtocol; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_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 Resource get(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, identifier); + Query q = generator.selectQuery(em); + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) q.getSingleResult(); + GlobusJobSubmissionResource globusJobSubmissionResource = + (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + em.getTransaction().commit(); + em.close(); + return globusJobSubmissionResource; + } 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> globusSubmissionResourceList = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + List results; + if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER)) { + generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + GlobusJobSubmissionResource globusJobSubmissionResource = + (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + globusSubmissionResourceList.add(globusJobSubmissionResource); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(GlobusJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + GlobusJobSubmissionResource globusJobSubmissionResource = + (GlobusJobSubmissionResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.GLOBUS_SUBMISSION, globusJobSubmission); + globusSubmissionResourceList.add(globusJobSubmissionResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceList; + } + + @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> globusSubmissionResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(GLOBUS_SUBMISSION); + List results; + if (fieldName.equals(GlobusJobSubmissionConstants.SUBMISSION_ID)) { + generator.setParameter(GlobusJobSubmissionConstants.SUBMISSION_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.GLOBUS_GATEKEEPER_EP)) { + generator.setParameter(GlobusJobSubmissionConstants.GLOBUS_GATEKEEPER_EP, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } + else if (fieldName.equals(GlobusJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(GlobusJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else if (fieldName.equals(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER)) { + generator.setParameter(GlobusJobSubmissionConstants.RESOURCE_JOB_MANAGER, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + GlobusJobSubmission globusJobSubmission = (GlobusJobSubmission) result; + globusSubmissionResourceIDs.add(globusJobSubmission.getSubmissionID()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Globus Submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Globus Submission 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 globusSubmissionResourceIDs; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusJobSubmission existingGlobusSubmission = em.find(GlobusJobSubmission.class, submissionID); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingGlobusSubmission != null) { + existingGlobusSubmission.setSubmissionID(submissionID); + existingGlobusSubmission.setResourceJobManager(resourceJobManager); + existingGlobusSubmission.setSecurityProtocol(securityProtocol); + em.merge(existingGlobusSubmission); + } else { + GlobusJobSubmission globusJobSubmission = new GlobusJobSubmission(); + globusJobSubmission.setSubmissionID(submissionID); + globusJobSubmission.setSecurityProtocol(securityProtocol); + globusJobSubmission.setResourceJobManager(resourceJobManager); + em.persist(globusJobSubmission); + } + 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 { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + GlobusJobSubmission globusJobSubmission = em.find(GlobusJobSubmission.class, identifier); + em.close(); + return globusJobSubmission != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + public String getSubmissionID() { + return submissionID; + } + + public void setSubmissionID(String submissionID) { + this.submissionID = submissionID; + } + + public String getResourceJobManager() { + return resourceJobManager; + } + + public void setResourceJobManager(String resourceJobManager) { + this.resourceJobManager = resourceJobManager; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + +} 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/GridftpDataMovementAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementAppCatalogResourceAppCat.java new file mode 100644 index 0000000..4b55e20 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/GridftpDataMovementAppCatalogResourceAppCat.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.airavata.registry.core.app.catalog.resources; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +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.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 GridftpDataMovementAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(GridftpDataMovementAppCatalogResourceAppCat.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 AppCatalogResource 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(); + GridftpDataMovementAppCatalogResourceAppCat gridftpDataMovementResource = (GridftpDataMovementAppCatalogResourceAppCat) 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<AppCatalogResource> get(String fieldName, Object value) throws AppCatalogException { + List<AppCatalogResource> gridftpDataMovementResources = new ArrayList<AppCatalogResource>(); + 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; + GridftpDataMovementAppCatalogResourceAppCat gridftpDataMovementResource = (GridftpDataMovementAppCatalogResourceAppCat) 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<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> 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; + GridftpDataMovementAppCatalogResourceAppCat gridftpDataMovementResource = (GridftpDataMovementAppCatalogResourceAppCat) 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
