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/SshJobSubmissionResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionResource.java new file mode 100644 index 0000000..ee14d76 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionResource.java @@ -0,0 +1,332 @@ +/** + * 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.ResourceJobManager; +import org.apache.aiaravata.application.catalog.data.model.SshJobSubmission; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogJPAUtils; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogQueryGenerator; +import org.apache.aiaravata.application.catalog.data.util.AppCatalogResourceType; +import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AiravataUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SshJobSubmissionResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(SshJobSubmissionResource.class); + private String resourceJobManagerId; + private ResourceJobManagerResource resourceJobManagerResource; + private String jobSubmissionInterfaceId; + private String alternativeSshHostname; + private String securityProtocol; + private int sshPort; + private String monitorMode; + 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(SSH_JOB_SUBMISSION); + generator.setParameter(SshJobSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, identifier); + Query q = generator.deleteQuery(em); + q.executeUpdate(); + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + @Override + public Resource get(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SSH_JOB_SUBMISSION); + generator.setParameter(SshJobSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID, identifier); + Query q = generator.selectQuery(em); + SshJobSubmission sshJobSubmission = (SshJobSubmission) q.getSingleResult(); + SshJobSubmissionResource sshJobSubmissionResource = (SshJobSubmissionResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SSH_JOB_SUBMISSION, sshJobSubmission); + em.getTransaction().commit(); + em.close(); + return sshJobSubmissionResource; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + @Override + public List<Resource> get(String fieldName, Object value) throws AppCatalogException { + List<Resource> sshJobSubmissionResources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SSH_JOB_SUBMISSION); + Query q; + if ((fieldName.equals(SshJobSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(SshJobSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID)) || (fieldName.equals(SshJobSubmissionConstants.ALTERNATIVE_SSH_HOSTNAME)) || (fieldName.equals(SshJobSubmissionConstants.SECURITY_PROTOCOL)) || (fieldName.equals(SshJobSubmissionConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + SshJobSubmission sshJobSubmission = (SshJobSubmission) result; + SshJobSubmissionResource sshJobSubmissionResource = (SshJobSubmissionResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SSH_JOB_SUBMISSION, sshJobSubmission); + sshJobSubmissionResources.add(sshJobSubmissionResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Ssh Job Submission Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Ssh Job Submission Resource."); + } + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + return sshJobSubmissionResources; + } + + @Override + public List<Resource> getAll() throws AppCatalogException { + return null; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + return null; + } + + @Override + public List<String> getIds(String fieldName, Object value) throws AppCatalogException { + List<String> sshJobSubmissionResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SSH_JOB_SUBMISSION); + Query q; + if ((fieldName.equals(SshJobSubmissionConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(SshJobSubmissionConstants.JOB_SUBMISSION_INTERFACE_ID)) || (fieldName.equals(SshJobSubmissionConstants.ALTERNATIVE_SSH_HOSTNAME)) || (fieldName.equals(SshJobSubmissionConstants.SECURITY_PROTOCOL)) || (fieldName.equals(SshJobSubmissionConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + SshJobSubmission sshJobSubmission = (SshJobSubmission) result; + SshJobSubmissionResource sshJobSubmissionResource = (SshJobSubmissionResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SSH_JOB_SUBMISSION, sshJobSubmission); + sshJobSubmissionResourceIDs.add(sshJobSubmissionResource.getJobSubmissionInterfaceId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Ssh Job Submission Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Ssh Job Submission Resource."); + } + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + return sshJobSubmissionResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + SshJobSubmission existingSshJobSubmission = em.find(SshJobSubmission.class, jobSubmissionInterfaceId); + em.close(); + SshJobSubmission sshJobSubmission; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingSshJobSubmission == null) { + sshJobSubmission = new SshJobSubmission(); + sshJobSubmission.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + sshJobSubmission = existingSshJobSubmission; + sshJobSubmission.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + sshJobSubmission.setResourceJobManagerId(getResourceJobManagerId()); + ResourceJobManager resourceJobManager = em.find(ResourceJobManager.class, getResourceJobManagerId()); + sshJobSubmission.setResourceJobManager(resourceJobManager); + sshJobSubmission.setJobSubmissionInterfaceId(getJobSubmissionInterfaceId()); + sshJobSubmission.setAlternativeSshHostname(getAlternativeSshHostname()); + sshJobSubmission.setSecurityProtocol(getSecurityProtocol()); + sshJobSubmission.setSshPort(getSshPort()); + sshJobSubmission.setMonitorMode(getMonitorMode()); + if (existingSshJobSubmission == null) { + em.persist(sshJobSubmission); + } else { + em.merge(sshJobSubmission); + } + 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(); + SshJobSubmission sshJobSubmission = em.find(SshJobSubmission.class, identifier); + em.close(); + return sshJobSubmission != 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 getResourceJobManagerId() { + return resourceJobManagerId; + } + + public ResourceJobManagerResource getResourceJobManagerResource() { + return resourceJobManagerResource; + } + + public String getJobSubmissionInterfaceId() { + return jobSubmissionInterfaceId; + } + + public String getAlternativeSshHostname() { + return alternativeSshHostname; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public int getSshPort() { + return sshPort; + } + + public void setResourceJobManagerId(String resourceJobManagerId) { + this.resourceJobManagerId=resourceJobManagerId; + } + + public void setResourceJobManagerResource(ResourceJobManagerResource resourceJobManagerResource) { + this.resourceJobManagerResource=resourceJobManagerResource; + } + + public void setJobSubmissionInterfaceId(String jobSubmissionInterfaceId) { + this.jobSubmissionInterfaceId=jobSubmissionInterfaceId; + } + + public void setAlternativeSshHostname(String alternativeSshHostname) { + this.alternativeSshHostname=alternativeSshHostname; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol=securityProtocol; + } + + public void setSshPort(int sshPort) { + this.sshPort=sshPort; + } + + public String getMonitorMode() { + return monitorMode; + } + + public void setMonitorMode(String monitorMode) { + this.monitorMode = monitorMode; + } + +} \ 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/UnicoreDataMovementAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementAppCatalogResourceAppCat.java new file mode 100644 index 0000000..af8899a --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementAppCatalogResourceAppCat.java @@ -0,0 +1,255 @@ +/* + * + * 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.UnicoreDataMovement; +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 UnicoreDataMovementAppCatalogResourceAppCat extends AppCatAbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(UnicoreDataMovementAppCatalogResourceAppCat.class); + + private String dataMovementId; + private String securityProtocol; + private String unicoreEndpointUrl; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_DATA_MOVEMENT); + generator.setParameter(UnicoreDataMovementConstants.DATAMOVEMENT_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(UNICORE_DATA_MOVEMENT); + generator.setParameter(UnicoreDataMovementConstants.DATAMOVEMENT_ID, identifier); + Query q = generator.selectQuery(em); + UnicoreDataMovement unicoreDataMovement = (UnicoreDataMovement) q.getSingleResult(); + UnicoreDataMovementAppCatalogResourceAppCat dataMovementResource = + (UnicoreDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils + .getResource(AppCatalogResourceType.UNICORE_DATA_MOVEMENT, + unicoreDataMovement); + em.getTransaction().commit(); + em.close(); + return dataMovementResource; + } 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> unicoreDMResourceList = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_DATA_MOVEMENT); + List results; + if (fieldName.equals(UnicoreDataMovementConstants.UNICORE_ENDPOINT_URL)) { + generator.setParameter(UnicoreDataMovementConstants.UNICORE_ENDPOINT_URL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreDataMovement dataMovement = (UnicoreDataMovement) result; + UnicoreDataMovementAppCatalogResourceAppCat unicoreJobSubmissionResource = + (UnicoreDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_DATA_MOVEMENT, dataMovement); + unicoreDMResourceList.add(unicoreJobSubmissionResource); + } + } + } else if (fieldName.equals(UnicoreDataMovementConstants.SECURITY_PROTOCAL)) { + generator.setParameter(UnicoreDataMovementConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreDataMovement dataMovement = (UnicoreDataMovement) result; + UnicoreDataMovementAppCatalogResourceAppCat dataMovementResource = + (UnicoreDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_DATA_MOVEMENT, dataMovement); + unicoreDMResourceList.add(dataMovementResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Unicore data movement resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Unicore data movement 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 unicoreDMResourceList; + } + + @Override + public List<AppCatalogResource> getAll() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + public List<String> getIds(String fieldName, Object value) throws AppCatalogException { + return null; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + UnicoreDataMovement existingDataMovement = em.find(UnicoreDataMovement.class, dataMovementId); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingDataMovement != null) { + existingDataMovement.setDataMovementId(dataMovementId);; + existingDataMovement.setUnicoreEndpointUrl(unicoreEndpointUrl); + existingDataMovement.setSecurityProtocol(securityProtocol); + em.merge(existingDataMovement); + } else { + UnicoreDataMovement unicoreJobSubmission = new UnicoreDataMovement(); + unicoreJobSubmission.setDataMovementId(dataMovementId); + unicoreJobSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + unicoreJobSubmission.setSecurityProtocol(securityProtocol); + em.persist(unicoreJobSubmission); + } + 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(); + UnicoreDataMovement dataMovement = em.find(UnicoreDataMovement.class, identifier); + em.close(); + return dataMovement != 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 getDataMovementId() { + return dataMovementId; + } + + public void setDataMovementId(String dataMovementId) { + this.dataMovementId = dataMovementId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + + public String getUnicoreEndpointUrl() { + return unicoreEndpointUrl; + } + + public void setUnicoreEndpointUrl(String unicoreEndpointUrl) { + this.unicoreEndpointUrl = unicoreEndpointUrl; + } + + +} 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/UnicoreDataMovementResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementResource.java new file mode 100644 index 0000000..63f2b70 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreDataMovementResource.java @@ -0,0 +1,255 @@ +/* + * + * 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.UnicoreDataMovement; +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 UnicoreDataMovementResource extends AbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(UnicoreDataMovementResource.class); + + private String dataMovementId; + private String securityProtocol; + private String unicoreEndpointUrl; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_DATA_MOVEMENT); + generator.setParameter(UnicoreDataMovementConstants.DATAMOVEMENT_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(UNICORE_DATA_MOVEMENT); + generator.setParameter(UnicoreDataMovementConstants.DATAMOVEMENT_ID, identifier); + Query q = generator.selectQuery(em); + UnicoreDataMovement unicoreDataMovement = (UnicoreDataMovement) q.getSingleResult(); + UnicoreDataMovementResource dataMovementResource = + (UnicoreDataMovementResource) AppCatalogJPAUtils + .getResource(AppCatalogResourceType.UNICORE_DATA_MOVEMENT, + unicoreDataMovement); + em.getTransaction().commit(); + em.close(); + return dataMovementResource; + } 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> unicoreDMResourceList = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_DATA_MOVEMENT); + List results; + if (fieldName.equals(UnicoreDataMovementConstants.UNICORE_ENDPOINT_URL)) { + generator.setParameter(UnicoreDataMovementConstants.UNICORE_ENDPOINT_URL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreDataMovement dataMovement = (UnicoreDataMovement) result; + UnicoreDataMovementResource unicoreJobSubmissionResource = + (UnicoreDataMovementResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_DATA_MOVEMENT, dataMovement); + unicoreDMResourceList.add(unicoreJobSubmissionResource); + } + } + } else if (fieldName.equals(UnicoreDataMovementConstants.SECURITY_PROTOCAL)) { + generator.setParameter(UnicoreDataMovementConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreDataMovement dataMovement = (UnicoreDataMovement) result; + UnicoreDataMovementResource dataMovementResource = + (UnicoreDataMovementResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_DATA_MOVEMENT, dataMovement); + unicoreDMResourceList.add(dataMovementResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Unicore data movement resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Unicore data movement 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 unicoreDMResourceList; + } + + @Override + public List<Resource> getAll() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + public List<String> getIds(String fieldName, Object value) throws AppCatalogException { + return null; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + UnicoreDataMovement existingDataMovement = em.find(UnicoreDataMovement.class, dataMovementId); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingDataMovement != null) { + existingDataMovement.setDataMovementId(dataMovementId);; + existingDataMovement.setUnicoreEndpointUrl(unicoreEndpointUrl); + existingDataMovement.setSecurityProtocol(securityProtocol); + em.merge(existingDataMovement); + } else { + UnicoreDataMovement unicoreJobSubmission = new UnicoreDataMovement(); + unicoreJobSubmission.setDataMovementId(dataMovementId); + unicoreJobSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + unicoreJobSubmission.setSecurityProtocol(securityProtocol); + em.persist(unicoreJobSubmission); + } + 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(); + UnicoreDataMovement dataMovement = em.find(UnicoreDataMovement.class, identifier); + em.close(); + return dataMovement != 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 getDataMovementId() { + return dataMovementId; + } + + public void setDataMovementId(String dataMovementId) { + this.dataMovementId = dataMovementId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + + public String getUnicoreEndpointUrl() { + return unicoreEndpointUrl; + } + + public void setUnicoreEndpointUrl(String unicoreEndpointUrl) { + this.unicoreEndpointUrl = unicoreEndpointUrl; + } + + +} 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/UnicoreJobSubmissionAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionAppCatalogResourceAppCat.java new file mode 100644 index 0000000..ae029f2 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionAppCatalogResourceAppCat.java @@ -0,0 +1,328 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ + +package org.apache.airavata.registry.core.app.catalog.resources; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +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.model.UnicoreJobSubmission; +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 UnicoreJobSubmissionAppCatalogResourceAppCat extends AppCatAbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(UnicoreJobSubmissionAppCatalogResourceAppCat.class); + + private String jobSubmissionInterfaceId; + private String securityProtocol; + private String unicoreEndpointUrl; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + generator.setParameter(UnicoreJobSubmissionConstants.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 { + HashMap<String, String> ids; + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + generator.setParameter(UnicoreJobSubmissionConstants.SUBMISSION_ID, identifier); + Query q = generator.selectQuery(em); + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) q.getSingleResult(); + UnicoreJobSubmissionAppCatalogResourceAppCat unicoreSubmissionResource = + (UnicoreJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils + .getResource(AppCatalogResourceType.UNICORE_JOB_SUBMISSION, + unicoreJobSubmission); + em.getTransaction().commit(); + em.close(); + return unicoreSubmissionResource; + } 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> unicoreSubmissionResourceList = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + List results; + if (fieldName.equals(UnicoreJobSubmissionConstants.UNICORE_ENDPOINT_URL)) { + generator.setParameter(UnicoreJobSubmissionConstants.UNICORE_ENDPOINT_URL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) result; + UnicoreJobSubmissionAppCatalogResourceAppCat unicoreJobSubmissionResource = + (UnicoreJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_JOB_SUBMISSION, unicoreJobSubmission); + unicoreSubmissionResourceList.add(unicoreJobSubmissionResource); + } + } + } else if (fieldName.equals(UnicoreJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(UnicoreJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) result; + UnicoreJobSubmissionAppCatalogResourceAppCat unicoreJobSubmissionResource = + (UnicoreJobSubmissionAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_JOB_SUBMISSION, unicoreJobSubmission); + unicoreSubmissionResourceList.add(unicoreJobSubmissionResource); + } + } + } + else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Unicore submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Unicore 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 unicoreSubmissionResourceList; + } + + @Override + public List<AppCatalogResource> getAll() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + // TODO Auto-generated method stub + 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(); + UnicoreJobSubmission existingUnicoreSubmission = em.find(UnicoreJobSubmission.class, jobSubmissionInterfaceId); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingUnicoreSubmission != null) { + existingUnicoreSubmission.setSubmissionID(jobSubmissionInterfaceId);; + existingUnicoreSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + existingUnicoreSubmission.setSecurityProtocol(securityProtocol); + + em.merge(existingUnicoreSubmission); + } else { + UnicoreJobSubmission unicoreJobSubmission = new UnicoreJobSubmission(); + unicoreJobSubmission.setSubmissionID(jobSubmissionInterfaceId); + unicoreJobSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + unicoreJobSubmission.setSecurityProtocol(securityProtocol); + em.persist(unicoreJobSubmission); + } + 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(); + UnicoreJobSubmission unicoreJobSubmission = em.find(UnicoreJobSubmission.class, identifier); + em.close(); + return unicoreJobSubmission != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + + public String getjobSubmissionInterfaceId() { + return jobSubmissionInterfaceId; + } + + public void setjobSubmissionInterfaceId(String jobSubmissionInterfaceId) { + this.jobSubmissionInterfaceId = jobSubmissionInterfaceId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + + public String getUnicoreEndpointUrl() { + return unicoreEndpointUrl; + } + + public void setUnicoreEndpointUrl(String unicoreEndpointUrl) { + this.unicoreEndpointUrl = unicoreEndpointUrl; + } + +} 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/UnicoreJobSubmissionResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionResource.java new file mode 100644 index 0000000..4c772e1 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/UnicoreJobSubmissionResource.java @@ -0,0 +1,328 @@ +/* + * + * 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.util.ArrayList; +import java.util.HashMap; +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.GlobusJobSubmission; +import org.apache.aiaravata.application.catalog.data.model.UnicoreJobSubmission; +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; + +public class UnicoreJobSubmissionResource extends AbstractResource { + + private final static Logger logger = LoggerFactory.getLogger(UnicoreJobSubmissionResource.class); + + private String jobSubmissionInterfaceId; + private String securityProtocol; + private String unicoreEndpointUrl; + + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + generator.setParameter(UnicoreJobSubmissionConstants.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 { + HashMap<String, String> ids; + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + generator.setParameter(UnicoreJobSubmissionConstants.SUBMISSION_ID, identifier); + Query q = generator.selectQuery(em); + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) q.getSingleResult(); + UnicoreJobSubmissionResource unicoreSubmissionResource = + (UnicoreJobSubmissionResource) AppCatalogJPAUtils + .getResource(AppCatalogResourceType.UNICORE_JOB_SUBMISSION, + unicoreJobSubmission); + em.getTransaction().commit(); + em.close(); + return unicoreSubmissionResource; + } 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> unicoreSubmissionResourceList = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(UNICORE_JOB_SUBMISSION); + List results; + if (fieldName.equals(UnicoreJobSubmissionConstants.UNICORE_ENDPOINT_URL)) { + generator.setParameter(UnicoreJobSubmissionConstants.UNICORE_ENDPOINT_URL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) result; + UnicoreJobSubmissionResource unicoreJobSubmissionResource = + (UnicoreJobSubmissionResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_JOB_SUBMISSION, unicoreJobSubmission); + unicoreSubmissionResourceList.add(unicoreJobSubmissionResource); + } + } + } else if (fieldName.equals(UnicoreJobSubmissionConstants.SECURITY_PROTOCAL)) { + generator.setParameter(UnicoreJobSubmissionConstants.SECURITY_PROTOCAL, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + UnicoreJobSubmission unicoreJobSubmission = (UnicoreJobSubmission) result; + UnicoreJobSubmissionResource unicoreJobSubmissionResource = + (UnicoreJobSubmissionResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.UNICORE_JOB_SUBMISSION, unicoreJobSubmission); + unicoreSubmissionResourceList.add(unicoreJobSubmissionResource); + } + } + } + else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Unicore submission resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Unicore 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 unicoreSubmissionResourceList; + } + + @Override + public List<Resource> getAll() throws AppCatalogException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + // TODO Auto-generated method stub + 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(); + UnicoreJobSubmission existingUnicoreSubmission = em.find(UnicoreJobSubmission.class, jobSubmissionInterfaceId); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingUnicoreSubmission != null) { + existingUnicoreSubmission.setSubmissionID(jobSubmissionInterfaceId);; + existingUnicoreSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + existingUnicoreSubmission.setSecurityProtocol(securityProtocol); + + em.merge(existingUnicoreSubmission); + } else { + UnicoreJobSubmission unicoreJobSubmission = new UnicoreJobSubmission(); + unicoreJobSubmission.setSubmissionID(jobSubmissionInterfaceId); + unicoreJobSubmission.setUnicoreEndpointUrl(unicoreEndpointUrl); + unicoreJobSubmission.setSecurityProtocol(securityProtocol); + em.persist(unicoreJobSubmission); + } + 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(); + UnicoreJobSubmission unicoreJobSubmission = em.find(UnicoreJobSubmission.class, identifier); + em.close(); + return unicoreJobSubmission != null; + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + + public String getjobSubmissionInterfaceId() { + return jobSubmissionInterfaceId; + } + + public void setjobSubmissionInterfaceId(String jobSubmissionInterfaceId) { + this.jobSubmissionInterfaceId = jobSubmissionInterfaceId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + } + + public String getUnicoreEndpointUrl() { + return unicoreEndpointUrl; + } + + public void setUnicoreEndpointUrl(String unicoreEndpointUrl) { + this.unicoreEndpointUrl = unicoreEndpointUrl; + } + +} 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/WorkflowAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowAppCatalogResourceAppCat.java new file mode 100644 index 0000000..ffc0fff --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/WorkflowAppCatalogResourceAppCat.java @@ -0,0 +1,382 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.airavata.registry.core.app.catalog.resources; + +import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AiravataUtils; +import org.apache.airavata.registry.core.app.catalog.model.Workflow; +import org.apache.airavata.registry.core.app.catalog.util.AppCatalogJPAUtils; +import org.apache.airavata.registry.core.app.catalog.util.AppCatalogQueryGenerator; +import org.apache.airavata.registry.core.app.catalog.util.AppCatalogResourceType; +import org.apache.airavata.registry.cpi.AppCatalogException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +public class WorkflowAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(WorkflowAppCatalogResourceAppCat.class); + private String wfName; + private String createdUser; + private String graph; + private String wfTemplateId; + private Timestamp createdTime; + private Timestamp updatedTime; + private String image; + private String gatewayId; + + 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 String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public String getGatewayId() { + return gatewayId; + } + + public void setGatewayId(String gatewayId) { + this.gatewayId = gatewayId; + } + + @Override + public void remove(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW); + generator.setParameter(WorkflowConstants.WF_TEMPLATE_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(WORKFLOW); + generator.setParameter(WorkflowConstants.WF_TEMPLATE_ID, identifier); + Query q = generator.selectQuery(em); + Workflow workflow = (Workflow) q.getSingleResult(); + WorkflowAppCatalogResourceAppCat workflowResource = (WorkflowAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow); + em.getTransaction().commit(); + em.close(); + return workflowResource; + } 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> workflowResources = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW); + Query q; + if ((fieldName.equals(WorkflowConstants.WF_NAME)) || (fieldName.equals(WorkflowConstants.CREATED_USER)) || (fieldName.equals(WorkflowConstants.GRAPH)) || (fieldName.equals(WorkflowConstants.WF_TEMPLATE_ID))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + Workflow workflow = (Workflow) result; + WorkflowAppCatalogResourceAppCat workflowResource = (WorkflowAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow); + workflowResources.add(workflowResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Workflow 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 workflowResources; + } + + @Override + public List<AppCatalogResource> getAll() throws AppCatalogException { + List<AppCatalogResource> workflows = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW); + generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId); + Query q = generator.selectQuery(em); + List results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + Workflow workflow = (Workflow) result; + WorkflowAppCatalogResourceAppCat wfResource = + (WorkflowAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow); + workflows.add(wfResource); + } + } + 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 workflows; + } + + @Override + public List<String> getAllIds() throws AppCatalogException { + List<String> workflowIds = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW); + generator.setParameter(WorkflowConstants.GATEWAY_ID, gatewayId); + Query q = generator.selectQuery(em); + List results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + Workflow workflow = (Workflow) result; + workflowIds.add(workflow.getWfTemplateId()); + } + } + 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 workflowIds; + } + + @Override + public List<String> getIds(String fieldName, Object value) throws AppCatalogException { + List<String> workflowResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(WORKFLOW); + Query q; + if ((fieldName.equals(WorkflowConstants.WF_NAME)) || (fieldName.equals(WorkflowConstants.CREATED_USER)) || (fieldName.equals(WorkflowConstants.GRAPH)) || (fieldName.equals(WorkflowConstants.WF_TEMPLATE_ID))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + Workflow workflow = (Workflow) result; + WorkflowAppCatalogResourceAppCat workflowResource = (WorkflowAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.WORKFLOW, workflow); + workflowResourceIDs.add(workflowResource.getWfTemplateId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Workflow Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Workflow 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 workflowResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + Workflow existingWorkflow = em.find(Workflow.class, wfTemplateId); + em.close(); + Workflow workflow; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingWorkflow == null) { + workflow = new Workflow(); + workflow.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + workflow = existingWorkflow; + workflow.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + workflow.setWfName(getWfName()); + workflow.setCreatedUser(getCreatedUser()); + workflow.setGatewayId(gatewayId); + if (getGraph() != null){ + workflow.setGraph(getGraph().toCharArray()); + } + if (image != null){ + workflow.setImage(image.getBytes()); + } + workflow.setWfTemplateId(getWfTemplateId()); + if (existingWorkflow == null) { + em.persist(workflow); + } else { + em.merge(workflow); + } + 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(); + Workflow workflow = em.find(Workflow.class, identifier); + em.close(); + return workflow != 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 getWfName() { + return wfName; + } + + public String getCreatedUser() { + return createdUser; + } + + public String getGraph() { + return graph; + } + + public String getWfTemplateId() { + return wfTemplateId; + } + + public void setWfName(String wfName) { + this.wfName=wfName; + } + + public void setCreatedUser(String createdUser) { + this.createdUser=createdUser; + } + + public void setGraph(String graph) { + this.graph=graph; + } + + public void setWfTemplateId(String wfTemplateId) { + this.wfTemplateId=wfTemplateId; + } +}
