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/PreJobCommandResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/PreJobCommandResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/PreJobCommandResource.java new file mode 100644 index 0000000..09a8fa1 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/PreJobCommandResource.java @@ -0,0 +1,333 @@ +/** + * 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.ApplicationDeployment; +import org.apache.aiaravata.application.catalog.data.model.PreJobCommand; +import org.apache.aiaravata.application.catalog.data.model.PreJobCommandPK; +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 PreJobCommandResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(PreJobCommandResource.class); + + private String appDeploymentId; + private String command; + + private AppDeploymentResource appDeploymentResource; + + + 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(PRE_JOBCOMMAND); + generator.setParameter(PreJobCommandConstants.DEPLOYMENT_ID, + ids.get(PreJobCommandConstants.DEPLOYMENT_ID)); + if (ids.get(PreJobCommandConstants.COMMAND) != null){ + generator.setParameter(PreJobCommandConstants.COMMAND, ids.get(PreJobCommandConstants.COMMAND)); + } + 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(PRE_JOBCOMMAND); + generator.setParameter(PreJobCommandConstants.DEPLOYMENT_ID, + ids.get(PreJobCommandConstants.DEPLOYMENT_ID)); + generator.setParameter(PreJobCommandConstants.COMMAND, ids.get(PreJobCommandConstants.COMMAND)); + Query q = generator.selectQuery(em); + PreJobCommand preJobCommand = (PreJobCommand) q.getSingleResult(); + PreJobCommandResource preJobCommandResource = + (PreJobCommandResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.PRE_JOBCOMMAND, preJobCommand); + em.getTransaction().commit(); + em.close(); + return preJobCommandResource; + } 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> gsiSSHPreJobResources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(PRE_JOBCOMMAND); + List results; + if (fieldName.equals(PreJobCommandConstants.DEPLOYMENT_ID)) { + generator.setParameter(PreJobCommandConstants.DEPLOYMENT_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + PreJobCommand preJobCommand = (PreJobCommand) result; + PreJobCommandResource preJobCommandResource = + (PreJobCommandResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.PRE_JOBCOMMAND, preJobCommand); + gsiSSHPreJobResources.add(preJobCommandResource); + } + } + } else if (fieldName.equals(PreJobCommandConstants.COMMAND)) { + generator.setParameter(PreJobCommandConstants.COMMAND, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + PreJobCommand preJobCommand = (PreJobCommand) result; + PreJobCommandResource preJobCommandResource = + (PreJobCommandResource) AppCatalogJPAUtils.getResource( + AppCatalogResourceType.PRE_JOBCOMMAND, preJobCommand); + gsiSSHPreJobResources.add(preJobCommandResource); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for GSISSH Pre Job Command Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for GSISSH Pre Job Command 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 gsiSSHPreJobResources; + } + + @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> gsiSSHPreJobResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + Query q; + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(PRE_JOBCOMMAND); + List results; + if (fieldName.equals(PreJobCommandConstants.DEPLOYMENT_ID)) { + generator.setParameter(PreJobCommandConstants.DEPLOYMENT_ID, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + PreJobCommand preJobCommand = (PreJobCommand) result; + gsiSSHPreJobResourceIDs.add(preJobCommand.getDeploymentId()); + } + } + } else if (fieldName.equals(PreJobCommandConstants.COMMAND)) { + generator.setParameter(PreJobCommandConstants.COMMAND, value); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + PreJobCommand preJobCommand = (PreJobCommand) result; + gsiSSHPreJobResourceIDs.add(preJobCommand.getDeploymentId()); + } + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for GSISSH Pre Job resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for GSISSH Pre JOb 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 gsiSSHPreJobResourceIDs; + } + + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + PreJobCommand existingGSIsshPreJobCommand = em.find(PreJobCommand.class, + new PreJobCommandPK(appDeploymentId, command)); + em.close(); + + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + ApplicationDeployment deployment = em.find(ApplicationDeployment.class, appDeploymentId); + if (existingGSIsshPreJobCommand != null){ + existingGSIsshPreJobCommand.setDeploymentId(appDeploymentId); + existingGSIsshPreJobCommand.setCommand(command); + existingGSIsshPreJobCommand.setApplicationDeployment(deployment); + em.merge(existingGSIsshPreJobCommand); + }else { + PreJobCommand preJobCommand = new PreJobCommand(); + preJobCommand.setDeploymentId(appDeploymentId); + preJobCommand.setCommand(command); + preJobCommand.setApplicationDeployment(deployment); + em.persist(preJobCommand); + } + 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(); + PreJobCommand preJobCommand = em.find(PreJobCommand.class, new PreJobCommandPK( + ids.get(PreJobCommandConstants.DEPLOYMENT_ID), + ids.get(PreJobCommandConstants.COMMAND))); + + em.close(); + return preJobCommand != 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 getAppDeploymentId() { + return appDeploymentId; + } + + public void setAppDeploymentId(String appDeploymentId) { + this.appDeploymentId = appDeploymentId; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } + + public AppDeploymentResource getAppDeploymentResource() { + return appDeploymentResource; + } + + public void setAppDeploymentResource(AppDeploymentResource appDeploymentResource) { + this.appDeploymentResource = appDeploymentResource; + } +}
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/Resource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/Resource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/Resource.java new file mode 100644 index 0000000..d4ad2fd --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/Resource.java @@ -0,0 +1,89 @@ +/* +* +* 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 java.util.List; + +public interface Resource { + + /** + * This method will remove the given resource from the database + * + * @param identifier identifier that can uniquely identify a single instance of the resource + */ + void remove(Object identifier) throws AppCatalogException; + + /** + * This method will return the given resource from the database + * + * @param identifier identifier that can uniquely identify a single instance of the resource + * @return associate resource + */ + Resource get(Object identifier) throws AppCatalogException; + + /** + * This method will list all the resources according to the filtering criteria + * @param fieldName field name + * @param value value of the field + * @return list of resources + */ + List<Resource> get(String fieldName, Object value) throws AppCatalogException; + + /** + * + * @return + * @throws AppCatalogException + */ + List<Resource> getAll() throws AppCatalogException; + + /** + * + * @return + * @throws AppCatalogException + */ + List<String> getAllIds() throws AppCatalogException; + + /** This method will return list of resource ids according to given criteria + * @param fieldName field name + * @param value value of the field + * @return list of resource Ids + * @throws AppCatalogException + */ + List<String> getIds(String fieldName, Object value) throws AppCatalogException; + + /** + * This method will save the resource to the database. + */ + void save() throws AppCatalogException; + + /** + * This method will check whether an entry from the given resource and resource name + * exists in the database + * + * @param identifier identifier that can uniquely identify a single instance of the resource + * @return whether the entry exists in the database or not + */ + boolean isExists(Object identifier) throws AppCatalogException; + + +} 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/ResourceJobManagerAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerAppCatalogResourceAppCat.java new file mode 100644 index 0000000..19e65a3 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerAppCatalogResourceAppCat.java @@ -0,0 +1,301 @@ +/* + * + * 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.ResourceJobManager; +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 ResourceJobManagerAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(ResourceJobManagerAppCatalogResourceAppCat.class); + private String resourceJobManagerId; + private String pushMonitoringEndpoint; + private String jobManagerBinPath; + private String resourceJobManagerType; + 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(RESOURCE_JOB_MANAGER); + generator.setParameter(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_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(RESOURCE_JOB_MANAGER); + generator.setParameter(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID, identifier); + Query q = generator.selectQuery(em); + ResourceJobManager resourceJobManager = (ResourceJobManager) q.getSingleResult(); + ResourceJobManagerAppCatalogResourceAppCat resourceJobManagerResource = (ResourceJobManagerAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + em.getTransaction().commit(); + em.close(); + return resourceJobManagerResource; + } 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> resourceJobManagerResources = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(RESOURCE_JOB_MANAGER); + Query q; + if ((fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(ResourceJobManagerConstants.PUSH_MONITORING_ENDPOINT)) || (fieldName.equals(ResourceJobManagerConstants.JOB_MANAGER_BIN_PATH)) || (fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_TYPE))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ResourceJobManager resourceJobManager = (ResourceJobManager) result; + ResourceJobManagerAppCatalogResourceAppCat resourceJobManagerResource = (ResourceJobManagerAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + resourceJobManagerResources.add(resourceJobManagerResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Resource Job Manager Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Resource Job Manager 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 resourceJobManagerResources; + } + + @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> resourceJobManagerResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(RESOURCE_JOB_MANAGER); + Query q; + if ((fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(ResourceJobManagerConstants.PUSH_MONITORING_ENDPOINT)) || (fieldName.equals(ResourceJobManagerConstants.JOB_MANAGER_BIN_PATH)) || (fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_TYPE))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ResourceJobManager resourceJobManager = (ResourceJobManager) result; + ResourceJobManagerAppCatalogResourceAppCat resourceJobManagerResource = (ResourceJobManagerAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + resourceJobManagerResourceIDs.add(resourceJobManagerResource.getResourceJobManagerId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Resource Job Manager Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Resource Job Manager 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 resourceJobManagerResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + ResourceJobManager existingResourceJobManager = em.find(ResourceJobManager.class, resourceJobManagerId); + em.close(); + ResourceJobManager resourceJobManager; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingResourceJobManager == null) { + resourceJobManager = new ResourceJobManager(); + resourceJobManager.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + resourceJobManager = existingResourceJobManager; + resourceJobManager.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + resourceJobManager.setResourceJobManagerId(getResourceJobManagerId()); + resourceJobManager.setPushMonitoringEndpoint(getPushMonitoringEndpoint()); + resourceJobManager.setJobManagerBinPath(getJobManagerBinPath()); + resourceJobManager.setResourceJobManagerType(getResourceJobManagerType()); + if (existingResourceJobManager == null) { + em.persist(resourceJobManager); + } else { + em.merge(resourceJobManager); + } + 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(); + ResourceJobManager resourceJobManager = em.find(ResourceJobManager.class, identifier); + em.close(); + return resourceJobManager != 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 String getPushMonitoringEndpoint() { + return pushMonitoringEndpoint; + } + + public String getJobManagerBinPath() { + return jobManagerBinPath; + } + + public String getResourceJobManagerType() { + return resourceJobManagerType; + } + + public void setResourceJobManagerId(String resourceJobManagerId) { + this.resourceJobManagerId=resourceJobManagerId; + } + + public void setPushMonitoringEndpoint(String pushMonitoringEndpoint) { + this.pushMonitoringEndpoint=pushMonitoringEndpoint; + } + + public void setJobManagerBinPath(String jobManagerBinPath) { + this.jobManagerBinPath=jobManagerBinPath; + } + + public void setResourceJobManagerType(String resourceJobManagerType) { + this.resourceJobManagerType=resourceJobManagerType; + } +} 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/ResourceJobManagerResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerResource.java new file mode 100644 index 0000000..0cc5a18 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ResourceJobManagerResource.java @@ -0,0 +1,301 @@ +/* + * + * 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.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 ResourceJobManagerResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(ResourceJobManagerResource.class); + private String resourceJobManagerId; + private String pushMonitoringEndpoint; + private String jobManagerBinPath; + private String resourceJobManagerType; + 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(RESOURCE_JOB_MANAGER); + generator.setParameter(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_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(RESOURCE_JOB_MANAGER); + generator.setParameter(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID, identifier); + Query q = generator.selectQuery(em); + ResourceJobManager resourceJobManager = (ResourceJobManager) q.getSingleResult(); + ResourceJobManagerResource resourceJobManagerResource = (ResourceJobManagerResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + em.getTransaction().commit(); + em.close(); + return resourceJobManagerResource; + } 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> resourceJobManagerResources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(RESOURCE_JOB_MANAGER); + Query q; + if ((fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(ResourceJobManagerConstants.PUSH_MONITORING_ENDPOINT)) || (fieldName.equals(ResourceJobManagerConstants.JOB_MANAGER_BIN_PATH)) || (fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_TYPE))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ResourceJobManager resourceJobManager = (ResourceJobManager) result; + ResourceJobManagerResource resourceJobManagerResource = (ResourceJobManagerResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + resourceJobManagerResources.add(resourceJobManagerResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Resource Job Manager Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Resource Job Manager 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 resourceJobManagerResources; + } + + @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> resourceJobManagerResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(RESOURCE_JOB_MANAGER); + Query q; + if ((fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_ID)) || (fieldName.equals(ResourceJobManagerConstants.PUSH_MONITORING_ENDPOINT)) || (fieldName.equals(ResourceJobManagerConstants.JOB_MANAGER_BIN_PATH)) || (fieldName.equals(ResourceJobManagerConstants.RESOURCE_JOB_MANAGER_TYPE))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ResourceJobManager resourceJobManager = (ResourceJobManager) result; + ResourceJobManagerResource resourceJobManagerResource = (ResourceJobManagerResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.RESOURCE_JOB_MANAGER, resourceJobManager); + resourceJobManagerResourceIDs.add(resourceJobManagerResource.getResourceJobManagerId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Resource Job Manager Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Resource Job Manager 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 resourceJobManagerResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + ResourceJobManager existingResourceJobManager = em.find(ResourceJobManager.class, resourceJobManagerId); + em.close(); + ResourceJobManager resourceJobManager; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingResourceJobManager == null) { + resourceJobManager = new ResourceJobManager(); + resourceJobManager.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + resourceJobManager = existingResourceJobManager; + resourceJobManager.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + resourceJobManager.setResourceJobManagerId(getResourceJobManagerId()); + resourceJobManager.setPushMonitoringEndpoint(getPushMonitoringEndpoint()); + resourceJobManager.setJobManagerBinPath(getJobManagerBinPath()); + resourceJobManager.setResourceJobManagerType(getResourceJobManagerType()); + if (existingResourceJobManager == null) { + em.persist(resourceJobManager); + } else { + em.merge(resourceJobManager); + } + 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(); + ResourceJobManager resourceJobManager = em.find(ResourceJobManager.class, identifier); + em.close(); + return resourceJobManager != 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 String getPushMonitoringEndpoint() { + return pushMonitoringEndpoint; + } + + public String getJobManagerBinPath() { + return jobManagerBinPath; + } + + public String getResourceJobManagerType() { + return resourceJobManagerType; + } + + public void setResourceJobManagerId(String resourceJobManagerId) { + this.resourceJobManagerId=resourceJobManagerId; + } + + public void setPushMonitoringEndpoint(String pushMonitoringEndpoint) { + this.pushMonitoringEndpoint=pushMonitoringEndpoint; + } + + public void setJobManagerBinPath(String jobManagerBinPath) { + this.jobManagerBinPath=jobManagerBinPath; + } + + public void setResourceJobManagerType(String resourceJobManagerType) { + this.resourceJobManagerType=resourceJobManagerType; + } +} 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/ScpDataMovementAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementAppCatalogResourceAppCat.java new file mode 100644 index 0000000..59839ea --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementAppCatalogResourceAppCat.java @@ -0,0 +1,308 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.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.ScpDataMovement; +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 ScpDataMovementAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(ScpDataMovementAppCatalogResourceAppCat.class); + private String queueDescription; + private String dataMovementInterfaceId; + private String securityProtocol; + private String alternativeScpHostname; + private int sshPort; + 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(SCP_DATA_MOVEMENT); + generator.setParameter(ScpDataMovementConstants.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(SCP_DATA_MOVEMENT); + generator.setParameter(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, identifier); + Query q = generator.selectQuery(em); + ScpDataMovement scpDataMovement = (ScpDataMovement) q.getSingleResult(); + ScpDataMovementAppCatalogResourceAppCat scpDataMovementResource = (ScpDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + em.getTransaction().commit(); + em.close(); + return scpDataMovementResource; + } 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> scpDataMovementResources = new ArrayList<AppCatalogResource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SCP_DATA_MOVEMENT); + Query q; + if ((fieldName.equals(ScpDataMovementConstants.QUEUE_DESCRIPTION)) || (fieldName.equals(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || (fieldName.equals(ScpDataMovementConstants.SECURITY_PROTOCOL)) || (fieldName.equals(ScpDataMovementConstants.ALTERNATIVE_SCP_HOSTNAME)) || (fieldName.equals(ScpDataMovementConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ScpDataMovement scpDataMovement = (ScpDataMovement) result; + ScpDataMovementAppCatalogResourceAppCat scpDataMovementResource = (ScpDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + scpDataMovementResources.add(scpDataMovementResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Scp Data Movement Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Scp 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 scpDataMovementResources; + } + + @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> scpDataMovementResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SCP_DATA_MOVEMENT); + Query q; + if ((fieldName.equals(ScpDataMovementConstants.QUEUE_DESCRIPTION)) || (fieldName.equals(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || (fieldName.equals(ScpDataMovementConstants.SECURITY_PROTOCOL)) || (fieldName.equals(ScpDataMovementConstants.ALTERNATIVE_SCP_HOSTNAME)) || (fieldName.equals(ScpDataMovementConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ScpDataMovement scpDataMovement = (ScpDataMovement) result; + ScpDataMovementAppCatalogResourceAppCat scpDataMovementResource = (ScpDataMovementAppCatalogResourceAppCat) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + scpDataMovementResourceIDs.add(scpDataMovementResource.getDataMovementInterfaceId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Scp Data Movement Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Scp 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 scpDataMovementResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + ScpDataMovement existingScpDataMovement = em.find(ScpDataMovement.class, dataMovementInterfaceId); + em.close(); + ScpDataMovement scpDataMovement; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingScpDataMovement == null) { + scpDataMovement = new ScpDataMovement(); + scpDataMovement.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + scpDataMovement = existingScpDataMovement; + scpDataMovement.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + scpDataMovement.setQueueDescription(getQueueDescription()); + scpDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId()); + scpDataMovement.setSecurityProtocol(getSecurityProtocol()); + scpDataMovement.setAlternativeScpHostname(getAlternativeScpHostname()); + scpDataMovement.setSshPort(getSshPort()); + if (existingScpDataMovement == null) { + em.persist(scpDataMovement); + } else { + em.merge(scpDataMovement); + } + 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(); + ScpDataMovement scpDataMovement = em.find(ScpDataMovement.class, identifier); + em.close(); + return scpDataMovement != 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 getQueueDescription() { + return queueDescription; + } + + public String getDataMovementInterfaceId() { + return dataMovementInterfaceId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public String getAlternativeScpHostname() { + return alternativeScpHostname; + } + + public int getSshPort() { + return sshPort; + } + + public void setQueueDescription(String queueDescription) { + this.queueDescription=queueDescription; + } + + public void setDataMovementInterfaceId(String dataMovementInterfaceId) { + this.dataMovementInterfaceId=dataMovementInterfaceId; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol=securityProtocol; + } + + public void setAlternativeScpHostname(String alternativeScpHostname) { + this.alternativeScpHostname=alternativeScpHostname; + } + + public void setSshPort(int sshPort) { + this.sshPort=sshPort; + } +} \ 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/ScpDataMovementResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementResource.java new file mode 100644 index 0000000..8c593f3 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/ScpDataMovementResource.java @@ -0,0 +1,308 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.aiaravata.application.catalog.data.resources; + +import org.airavata.appcatalog.cpi.AppCatalogException; +import org.apache.aiaravata.application.catalog.data.model.ScpDataMovement; +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 ScpDataMovementResource extends AbstractResource { + private final static Logger logger = LoggerFactory.getLogger(ScpDataMovementResource.class); + private String queueDescription; + private String dataMovementInterfaceId; + private String securityProtocol; + private String alternativeScpHostname; + private int sshPort; + 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(SCP_DATA_MOVEMENT); + generator.setParameter(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, identifier); + Query q = generator.deleteQuery(em); + q.executeUpdate(); + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + @Override + public Resource get(Object identifier) throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SCP_DATA_MOVEMENT); + generator.setParameter(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID, identifier); + Query q = generator.selectQuery(em); + ScpDataMovement scpDataMovement = (ScpDataMovement) q.getSingleResult(); + ScpDataMovementResource scpDataMovementResource = (ScpDataMovementResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + em.getTransaction().commit(); + em.close(); + return scpDataMovementResource; + } 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> scpDataMovementResources = new ArrayList<Resource>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SCP_DATA_MOVEMENT); + Query q; + if ((fieldName.equals(ScpDataMovementConstants.QUEUE_DESCRIPTION)) || (fieldName.equals(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || (fieldName.equals(ScpDataMovementConstants.SECURITY_PROTOCOL)) || (fieldName.equals(ScpDataMovementConstants.ALTERNATIVE_SCP_HOSTNAME)) || (fieldName.equals(ScpDataMovementConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ScpDataMovement scpDataMovement = (ScpDataMovement) result; + ScpDataMovementResource scpDataMovementResource = (ScpDataMovementResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + scpDataMovementResources.add(scpDataMovementResource); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Scp Data Movement Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Scp 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 scpDataMovementResources; + } + + @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> scpDataMovementResourceIDs = new ArrayList<String>(); + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(SCP_DATA_MOVEMENT); + Query q; + if ((fieldName.equals(ScpDataMovementConstants.QUEUE_DESCRIPTION)) || (fieldName.equals(ScpDataMovementConstants.DATA_MOVEMENT_INTERFACE_ID)) || (fieldName.equals(ScpDataMovementConstants.SECURITY_PROTOCOL)) || (fieldName.equals(ScpDataMovementConstants.ALTERNATIVE_SCP_HOSTNAME)) || (fieldName.equals(ScpDataMovementConstants.SSH_PORT))) { + generator.setParameter(fieldName, value); + q = generator.selectQuery(em); + List<?> results = q.getResultList(); + for (Object result : results) { + ScpDataMovement scpDataMovement = (ScpDataMovement) result; + ScpDataMovementResource scpDataMovementResource = (ScpDataMovementResource) AppCatalogJPAUtils.getResource(AppCatalogResourceType.SCP_DATA_MOVEMENT, scpDataMovement); + scpDataMovementResourceIDs.add(scpDataMovementResource.getDataMovementInterfaceId()); + } + } else { + em.getTransaction().commit(); + em.close(); + logger.error("Unsupported field name for Scp Data Movement Resource.", new IllegalArgumentException()); + throw new IllegalArgumentException("Unsupported field name for Scp 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 scpDataMovementResourceIDs; + } + + @Override + public void save() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + ScpDataMovement existingScpDataMovement = em.find(ScpDataMovement.class, dataMovementInterfaceId); + em.close(); + ScpDataMovement scpDataMovement; + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + if (existingScpDataMovement == null) { + scpDataMovement = new ScpDataMovement(); + scpDataMovement.setCreationTime(AiravataUtils.getCurrentTimestamp()); + } else { + scpDataMovement = existingScpDataMovement; + scpDataMovement.setUpdateTime(AiravataUtils.getCurrentTimestamp()); + } + scpDataMovement.setQueueDescription(getQueueDescription()); + scpDataMovement.setDataMovementInterfaceId(getDataMovementInterfaceId()); + scpDataMovement.setSecurityProtocol(getSecurityProtocol()); + scpDataMovement.setAlternativeScpHostname(getAlternativeScpHostname()); + scpDataMovement.setSshPort(getSshPort()); + if (existingScpDataMovement == null) { + em.persist(scpDataMovement); + } else { + em.merge(scpDataMovement); + } + 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(); + ScpDataMovement scpDataMovement = em.find(ScpDataMovement.class, identifier); + em.close(); + return scpDataMovement != 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 getQueueDescription() { + return queueDescription; + } + + public String getDataMovementInterfaceId() { + return dataMovementInterfaceId; + } + + public String getSecurityProtocol() { + return securityProtocol; + } + + public String getAlternativeScpHostname() { + return alternativeScpHostname; + } + + public int getSshPort() { + return sshPort; + } + + public void setQueueDescription(String queueDescription) { + this.queueDescription=queueDescription; + } + + public void setDataMovementInterfaceId(String dataMovementInterfaceId) { + this.dataMovementInterfaceId=dataMovementInterfaceId; + } + + public void setSecurityProtocol(String securityProtocol) { + this.securityProtocol=securityProtocol; + } + + public void setAlternativeScpHostname(String alternativeScpHostname) { + this.alternativeScpHostname=alternativeScpHostname; + } + + public void setSshPort(int sshPort) { + this.sshPort=sshPort; + } +} \ 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/SshJobSubmissionAppCatalogResourceAppCat.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionAppCatalogResourceAppCat.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionAppCatalogResourceAppCat.java new file mode 100644 index 0000000..2bbd6f3 --- /dev/null +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/app/catalog/resources/SshJobSubmissionAppCatalogResourceAppCat.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.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.ResourceJobManager; +import org.apache.airavata.registry.core.app.catalog.model.SshJobSubmission; +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 SshJobSubmissionAppCatalogResourceAppCat extends AppCatAbstractResource { + private final static Logger logger = LoggerFactory.getLogger(SshJobSubmissionAppCatalogResourceAppCat.class); + private String resourceJobManagerId; + private ResourceJobManagerAppCatalogResourceAppCat 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 AppCatalogResource 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(); + SshJobSubmissionAppCatalogResourceAppCat sshJobSubmissionResource = (SshJobSubmissionAppCatalogResourceAppCat) 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<AppCatalogResource> get(String fieldName, Object value) throws AppCatalogException { + List<AppCatalogResource> sshJobSubmissionResources = new ArrayList<AppCatalogResource>(); + 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; + SshJobSubmissionAppCatalogResourceAppCat sshJobSubmissionResource = (SshJobSubmissionAppCatalogResourceAppCat) 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<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> 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; + SshJobSubmissionAppCatalogResourceAppCat sshJobSubmissionResource = (SshJobSubmissionAppCatalogResourceAppCat) 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 ResourceJobManagerAppCatalogResourceAppCat 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(ResourceJobManagerAppCatalogResourceAppCat 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
