airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From scnakand...@apache.org
Subject [21/44] airavata git commit: Adding mongo-registry WIP
Date Sun, 07 Jun 2015 17:01:02 GMT
Adding mongo-registry WIP


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e13d90da
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e13d90da
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e13d90da

Branch: refs/heads/mongo-registry
Commit: e13d90da792ba825dc9e279c66f79130b4a955ff
Parents: fed06c2
Author: Supun Nakandala <scnakandala@apache.org>
Authored: Wed May 27 00:16:12 2015 +0530
Committer: Supun Nakandala <scnakandala@apache.org>
Committed: Wed May 27 00:16:14 2015 +0530

----------------------------------------------------------------------
 .../persistance/registry/jpa/JPAConstants.java  |   33 +
 .../persistance/registry/jpa/Resource.java      |   71 +
 .../persistance/registry/jpa/ResourceType.java  |   49 +
 .../persistance/registry/jpa/ResourceUtils.java |  525 ++++++
 .../registry/jpa/impl/ExperimentRegistry.java   | 1773 ++++++++++++++++++
 .../registry/jpa/impl/GatewayRegistry.java      |  115 ++
 .../registry/jpa/impl/LoggingRegistryImpl.java  |   97 +
 .../registry/jpa/impl/ProjectRegistry.java      |  305 +++
 .../registry/jpa/impl/RegistryFactory.java      |   80 +
 .../persistance/registry/jpa/impl/UserReg.java  |   41 +
 .../jpa/model/AdvancedInputDataHandling.java    |  129 ++
 .../jpa/model/AdvancedOutputDataHandling.java   |  119 ++
 .../registry/jpa/model/ApplicationInput.java    |  173 ++
 .../registry/jpa/model/ApplicationInput_PK.java |   65 +
 .../registry/jpa/model/ApplicationOutput.java   |  150 ++
 .../jpa/model/ApplicationOutput_PK.java         |   64 +
 .../Computational_Resource_Scheduling.java      |  190 ++
 .../registry/jpa/model/Configuration.java       |   80 +
 .../registry/jpa/model/Configuration_PK.java    |   74 +
 .../registry/jpa/model/DataTransferDetail.java  |   88 +
 .../registry/jpa/model/ErrorDetail.java         |  196 ++
 .../registry/jpa/model/Experiment.java          |  211 +++
 .../jpa/model/ExperimentConfigData.java         |  106 ++
 .../registry/jpa/model/Experiment_Input.java    |  178 ++
 .../registry/jpa/model/Experiment_Input_PK.java |   64 +
 .../registry/jpa/model/Experiment_Output.java   |  151 ++
 .../jpa/model/Experiment_Output_PK.java         |   64 +
 .../persistance/registry/jpa/model/Gateway.java |   76 +
 .../registry/jpa/model/Gateway_Worker.java      |   82 +
 .../registry/jpa/model/Gateway_Worker_PK.java   |   64 +
 .../registry/jpa/model/JobDetail.java           |  120 ++
 .../registry/jpa/model/JobDetails_PK.java       |   64 +
 .../registry/jpa/model/NodeInput.java           |  171 ++
 .../registry/jpa/model/NodeInput_PK.java        |   64 +
 .../registry/jpa/model/NodeOutput.java          |  148 ++
 .../registry/jpa/model/NodeOutput_PK.java       |   64 +
 .../registry/jpa/model/Notification_Email.java  |   97 +
 .../persistance/registry/jpa/model/Project.java |  125 ++
 .../registry/jpa/model/ProjectUser.java         |   81 +
 .../registry/jpa/model/ProjectUser_PK.java      |   64 +
 .../registry/jpa/model/QosParam.java            |  119 ++
 .../persistance/registry/jpa/model/Status.java  |  174 ++
 .../registry/jpa/model/TaskDetail.java          |  119 ++
 .../persistance/registry/jpa/model/Users.java   |   55 +
 .../registry/jpa/model/WorkflowNodeDetail.java  |  107 ++
 .../registry/jpa/mongo/ExperimentRegistry.java  |   28 +
 .../persistance/registry/jpa/mongo/Test.java    |   81 +
 .../conversion/AbstractThriftDeserializer.java  |  152 ++
 .../conversion/AbstractThriftSerializer.java    |  122 ++
 .../mongo/conversion/ModelConversionHelper.java |  218 +++
 .../idot/InputDataObjectTypeDeserializer.java   |   44 +
 .../idot/InputDataObjectTypeSerializer.java     |   41 +
 .../odot/OutputDataObjectTypeDeserializer.java  |   44 +
 .../odot/OutputDataObjectTypeSerializer.java    |   41 +
 .../experiment/ExperimentDeserializer.java      |   44 +
 .../experiment/ExperimentSerializer.java        |   41 +
 .../AdvancedInputDataHandlingDeserializer.java  |   44 +
 .../AdvancedInputDataHandlingSerializer.java    |   41 +
 .../AdvancedOutputDataHandlingDeserializer.java |   44 +
 .../AdvancedOutputDataHandlingSerializer.java   |   41 +
 .../ApplicationStatusDeserializer.java          |   44 +
 .../appstatus/ApplicationStatusSerializer.java  |   42 +
 ...utationalResourceSchedulingDeserializer.java |   44 +
 ...mputationalResourceSchedulingSerializer.java |   41 +
 .../DataTransferDetailsDeserializer.java        |   44 +
 .../DataTransferDetailsSerializer.java          |   41 +
 .../errdetails/ErrorDetailsDeserializer.java    |   44 +
 .../errdetails/ErrorDetailsSerializer.java      |   41 +
 .../expstatus/ExperimentStatusDeserializer.java |   44 +
 .../expstatus/ExperimentStatusSerializer.java   |   41 +
 .../ExperimentSummaryDeserializer.java          |   44 +
 .../expsummary/ExperimentSummarySerializer.java |   41 +
 .../jobdetails/JobDetailsDeserializer.java      |   44 +
 .../jobdetails/JobDetailsSerializer.java        |   41 +
 .../jobstatus/JobStatusDeserializer.java        |   44 +
 .../jobstatus/JobStatusSerializer.java          |   41 +
 .../QualityOfServiceParamsDeserializer.java     |   44 +
 .../qosp/QualityOfServiceParamsSerializer.java  |   41 +
 .../taskdetails/TaskDetailsDeserializer.java    |   44 +
 .../taskdetails/TaskDetailsSerializer.java      |   41 +
 .../taskstatus/TaskStatusDeserializer.java      |   44 +
 .../taskstatus/TaskStatusSerializer.java        |   41 +
 .../trstatus/TransferStatusDeserializer.java    |   44 +
 .../trstatus/TransferStatusSerializer.java      |   41 +
 .../UserConfigurationDataDeserializer.java      |   44 +
 .../ucdata/UserConfigurationDataSerializer.java |   41 +
 .../ValidationResultsDeserializer.java          |   44 +
 .../ValidationResultsSerializer.java            |   41 +
 .../ValidatorResultDeserializer.java            |   44 +
 .../ValidatorResultSerializer.java              |   41 +
 .../wfnd/WorkflowNodeDetailsDeserializer.java   |   44 +
 .../wfnd/WorkflowNodeDetailsSerializer.java     |   41 +
 .../wfns/WorkflowNodeStatusDeserializer.java    |   44 +
 .../wfns/WorkflowNodeStatusSerializer.java      |   41 +
 .../conversion/gateway/GatewayDeserializer.java |   44 +
 .../conversion/gateway/GatewaySerializer.java   |   41 +
 .../conversion/group/GroupDeserializer.java     |   44 +
 .../mongo/conversion/group/GroupSerializer.java |   41 +
 .../conversion/project/ProjectDeserializer.java |   44 +
 .../conversion/project/ProjectSerializer.java   |   40 +
 .../mongo/conversion/user/UserDeserializer.java |   44 +
 .../mongo/conversion/user/UserSerializer.java   |   40 +
 .../registry/jpa/mongo/dao/ExperimentDao.java   |  346 ++++
 .../registry/jpa/mongo/utils/MongoUtil.java     |   70 +
 .../jpa/resources/AbstractResource.java         |  317 ++++
 .../AdvanceInputDataHandlingResource.java       |  168 ++
 .../AdvancedOutputDataHandlingResource.java     |  159 ++
 .../jpa/resources/ApplicationInputResource.java |  235 +++
 .../resources/ApplicationOutputResource.java    |  213 +++
 .../ComputationSchedulingResource.java          |  229 +++
 .../jpa/resources/ConfigDataResource.java       |  162 ++
 .../jpa/resources/ConfigurationResource.java    |  208 ++
 .../resources/DataTransferDetailResource.java   |  272 +++
 .../jpa/resources/ErrorDetailResource.java      |  229 +++
 .../jpa/resources/ExperimentInputResource.java  |  229 +++
 .../jpa/resources/ExperimentOutputResource.java |  209 +++
 .../jpa/resources/ExperimentResource.java       |  777 ++++++++
 .../registry/jpa/resources/GatewayResource.java |  436 +++++
 .../jpa/resources/JobDetailResource.java        |  361 ++++
 .../jpa/resources/NodeInputResource.java        |  231 +++
 .../jpa/resources/NodeOutputResource.java       |  211 +++
 .../resources/NotificationEmailResource.java    |  125 ++
 .../registry/jpa/resources/ProjectResource.java |  531 ++++++
 .../jpa/resources/ProjectUserResource.java      |  123 ++
 .../jpa/resources/QosParamResource.java         |  152 ++
 .../registry/jpa/resources/StatusResource.java  |  195 ++
 .../jpa/resources/TaskDetailResource.java       |  661 +++++++
 .../registry/jpa/resources/UserResource.java    |  186 ++
 .../registry/jpa/resources/Utils.java           |  824 ++++++++
 .../registry/jpa/resources/WorkerResource.java  |  908 +++++++++
 .../resources/WorkflowNodeDetailResource.java   |  473 +++++
 .../registry/jpa/utils/QueryGenerator.java      |  128 ++
 .../jpa/utils/ThriftDataModelConversion.java    |  714 +++++++
 .../src/main/resources/META-INF/persistence.xml |   65 +
 .../main/resources/airavata-server.properties   |  280 +++
 .../src/main/resources/registry-derby.sql       |  391 ++++
 .../src/main/resources/registry-mysql.sql       |  392 ++++
 .../registry/mongo/ExperimentDaoTest.java       |  268 +++
 .../registry/RegistryUseCaseTest.java           |  291 +++
 modules/registry/pom.xml                        |    1 +
 140 files changed, 21565 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java
b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java
new file mode 100644
index 0000000..deb3ba2
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java
@@ -0,0 +1,33 @@
+/*
+ *
+ * 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.persistance.registry.jpa;
+
+public class JPAConstants {
+	public static final String KEY_JDBC_URL = "registry.jdbc.url";
+	public static final String KEY_JDBC_USER = "registry.jdbc.user";
+	public static final String KEY_JDBC_PASSWORD = "registry.jdbc.password";
+	public static final String KEY_JDBC_DRIVER = "registry.jdbc.driver";
+	public static final String KEY_DERBY_START_ENABLE = "start.derby.server.mode";
+    public static final String VALIDATION_QUERY = "validationQuery";
+    public static final String JPA_CACHE_SIZE = "jpa.cache.size";
+    public static final String ENABLE_CACHING = "cache.enable";
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/Resource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/Resource.java
b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/Resource.java
new file mode 100644
index 0000000..640f771
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/Resource.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * 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.persistance.registry.jpa;
+
+import org.apache.airavata.registry.cpi.RegistryException;
+
+import java.util.List;
+
+public interface Resource {
+    /**
+     * This method will create associate resource objects for the given resource type.
+     * @param type child resource type
+     * @return associate child resource
+     */
+    Resource create(ResourceType type) throws RegistryException, RegistryException;
+
+    /**
+     * This method will remove the given child resource from the database
+     * @param type child resource type
+     * @param name child resource name
+     */
+    void remove(ResourceType type, Object name) throws RegistryException;
+
+    /**
+     *  This method will return the given child resource from the database
+     * @param type child resource type
+     * @param name child resource name
+     * @return associate child resource
+     */
+    Resource get(ResourceType type, Object name) throws RegistryException;
+
+    /**
+     * This method will list all the child resources for the given resource type
+     * @param type child resource type
+     * @return list of child resources of the given child resource type
+     */
+    List<Resource> get(ResourceType type) throws RegistryException;
+
+    /**
+     * This method will saveExperiment the resource to the database.
+     */
+    void save() throws RegistryException;
+
+    /**
+     * This method will check whether an entry from the given resource type and resource
name
+     * exists in the database
+     * @param type child resource type
+     * @param name child resource name
+     * @return whether the entry exists in the database or not
+     */
+    boolean isExists(ResourceType type, Object name) throws RegistryException;
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
new file mode 100644
index 0000000..0a38664
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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.persistance.registry.jpa;
+
+public enum ResourceType {
+    GATEWAY,
+    PROJECT,
+    USER,
+    PROJECT_USER,
+    CONFIGURATION,
+    GATEWAY_WORKER,
+    EXPERIMENT,
+    NOTIFICATION_EMAIL,
+    EXPERIMENT_INPUT,
+    EXPERIMENT_OUTPUT,
+    WORKFLOW_NODE_DETAIL,
+    TASK_DETAIL,
+    ERROR_DETAIL,
+    APPLICATION_INPUT,
+    APPLICATION_OUTPUT,
+    NODE_INPUT,
+    NODE_OUTPUT,
+    JOB_DETAIL,
+    DATA_TRANSFER_DETAIL,
+    STATUS,
+    CONFIG_DATA,
+    COMPUTATIONAL_RESOURCE_SCHEDULING,
+    ADVANCE_INPUT_DATA_HANDLING,
+    ADVANCE_OUTPUT_DATA_HANDLING,
+    QOS_PARAM
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e13d90da/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
new file mode 100644
index 0000000..4b6fc80
--- /dev/null
+++ b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
@@ -0,0 +1,525 @@
+/*
+ *
+ * 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.persistance.registry.jpa;
+
+import org.apache.airavata.persistance.registry.jpa.model.*;
+import org.apache.airavata.persistance.registry.jpa.resources.*;
+import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ResourceUtils {
+    private final static Logger logger = LoggerFactory.getLogger(ResourceUtils.class);
+    private static final String PERSISTENCE_UNIT_NAME = "airavata_data";
+    protected static EntityManagerFactory factory;
+
+    public static void reset(){
+    	factory=null;
+    }
+    
+    public static EntityManager getEntityManager(){
+        if (factory == null) {
+            String connectionProperties = "DriverClassName=" + Utils.getJDBCDriver() + ","
+ "Url=" + Utils.getJDBCURL() + "?autoReconnect=true,," +
+                    "Username=" + Utils.getJDBCUser() + "," + "Password=" + Utils.getJDBCPassword()
+ ",validationQuery=" +
+            Utils.getValidationQuery();
+            System.out.println(connectionProperties);
+            Map<String, String> properties = new HashMap<String, String>();
+            properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource");
+            properties.put("openjpa.ConnectionProperties", connectionProperties);
+            properties.put("openjpa.DynamicEnhancementAgent", "true");
+            properties.put("openjpa.RuntimeUnenhancedClasses", "unsupported");
+            properties.put("openjpa.DataCache","" + Utils.isCachingEnabled() + "(CacheSize="
+ Utils.getJPACacheSize() + ", SoftReferenceSize=0)");
+            properties.put("openjpa.QueryCache","" + Utils.isCachingEnabled() + "(CacheSize="
+ Utils.getJPACacheSize() + ", SoftReferenceSize=0)");
+            properties.put("openjpa.RemoteCommitProvider","sjvm");
+            properties.put("openjpa.Log","DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO");
+            properties.put("openjpa.jdbc.DBDictionary","SupportsMultipleNontransactionalResultSets=false");
+//            properties.put("openjpa.ReadLockLevel", "none");
+//            properties.put("openjpa.WriteLockLevel", "none");
+//            properties.put("openjpa.LockTimeout", "30000");
+//            properties.put("openjpa.LockManager", "none");
+            properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
+            properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72,
PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000,  autoReconnect=true");
+			properties.put("openjpa.jdbc.QuerySQLCache", "false");
+            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
+        }
+		return factory.createEntityManager();
+    }
+
+    /**
+     * @param gatewayId
+     * @return
+     */
+    public static Resource createGateway(String gatewayId) throws RegistryException {
+        if (!isGatewayExist(gatewayId)) {
+            GatewayResource gatewayResource = new GatewayResource();
+            gatewayResource.setGatewayId(gatewayId);
+            return gatewayResource;
+        }else {
+            return getGateway(gatewayId);
+        }
+    }
+
+    public static UserResource createUser(String username, String password) throws RegistryException
{
+        if (!isUserExist(username)) {
+            UserResource userResource = new UserResource();
+            userResource.setUserName(username);
+            userResource.setPassword(password);
+            return userResource;
+        }else {
+            return (UserResource)getUser(username);
+        }
+
+    }
+
+    public static Resource getGateway(String gatewayId) throws RegistryException{
+        EntityManager em = null;
+        try {
+            if (isGatewayExist(gatewayId)) {
+                em = getEntityManager();
+                Gateway gateway = em.find(Gateway.class, gatewayId);
+                GatewayResource gatewayResource = (GatewayResource)Utils.getResource(ResourceType.GATEWAY,
gateway);
+                em.close();
+                return gatewayResource;
+            }
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return null;
+    }
+
+    public static void addUser (String userName, String password) throws RegistryException{
+        UserResource resource = new UserResource();
+        resource.setUserName(userName);
+        resource.setPassword(password);
+        resource.save();
+    }
+
+    public static boolean isUserExist (String username) throws RegistryException{
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.USERS);
+            generator.setParameter(AbstractResource.UserConstants.USERNAME, username);
+            Query q = generator.selectQuery(em);
+            int size = q.getResultList().size();
+            em.getTransaction().commit();
+            em.close();
+            return size>0;
+        } catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+
+    public static Resource getUser(String userName) throws RegistryException{
+        EntityManager em = null;
+        try {
+            if (isUserExist(userName)) {
+                em = getEntityManager();
+                Users user =  em.find(Users.class, userName);
+                UserResource userResource = (UserResource)Utils.getResource(ResourceType.USER,
user);
+                em.close();
+                return userResource;
+            }
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return null;
+
+    }
+
+    public static Resource getWorker(String gatewayId, String userName) throws RegistryException{
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            Gateway_Worker gatewayWorker = em.find(Gateway_Worker.class, new Gateway_Worker_PK(gatewayId,
userName));
+            WorkerResource workerResource = (WorkerResource) Utils.getResource(ResourceType.GATEWAY_WORKER,
gatewayWorker);
+            em.close();
+            return workerResource;
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+
+
+    }
+
+
+    /**
+     * @param gatewayId
+     * @return
+     */
+    public static boolean isGatewayExist(String gatewayId) throws RegistryException{
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.GATEWAY);
+            generator.setParameter(AbstractResource.GatewayConstants.GATEWAY_ID, gatewayId);
+            Query q = generator.selectQuery(em);
+            int size = q.getResultList().size();
+            em.getTransaction().commit();
+            em.close();
+            return size>0;
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+
+    }
+
+    public static List<Resource> getAllGateways() throws RegistryException{
+        List<Resource> resourceList = new ArrayList<Resource>();
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.GATEWAY);
+            Query q = generator.selectQuery(em);
+            List results = q.getResultList();
+            if (results.size() != 0) {
+                for (Object result : results) {
+                    Gateway gateway = (Gateway) result;
+                    GatewayResource gatewayResource =
+                            (GatewayResource) Utils.getResource(ResourceType.GATEWAY, gateway);
+                    resourceList.add(gatewayResource);
+                }
+            }
+            em.getTransaction().commit();
+            em.close();
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return resourceList;
+    }
+
+    /**
+     * @param gatewayId
+     * @return
+     */
+    public static boolean removeGateway(String gatewayId) {
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.GATEWAY);
+            generator.setParameter(AbstractResource.GatewayConstants.GATEWAY_ID, gatewayId);
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            em.close();
+            return true;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return false;
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    /**
+     * @param gatewayResource
+     * @param userResource
+     */
+    public static WorkerResource addGatewayWorker(GatewayResource gatewayResource, UserResource
userResource) throws RegistryException{
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            if (!isGatewayExist(gatewayResource.getGatewayName())){
+                gatewayResource.save();
+            }
+            if (!isUserExist(userResource.getUserName())){
+                userResource.save();
+            }
+            Gateway gateway = em.find(Gateway.class, gatewayResource.getGatewayId());
+            Users user = em.find(Users.class, userResource.getUserName());
+            Gateway_Worker gatewayWorker = new Gateway_Worker();
+            gatewayWorker.setGateway(gateway);
+            gatewayWorker.setUser(user);
+            em.persist(gatewayWorker);
+            em.getTransaction().commit();
+            em.close();
+            return (WorkerResource)Utils.getResource(ResourceType.GATEWAY_WORKER, gatewayWorker);
+        } catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    /**
+     * @param gatewayResource
+     * @param userResource
+     * @return
+     */
+    public static boolean removeGatewayWorker(GatewayResource gatewayResource, UserResource
userResource) {
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.GATEWAY_WORKER);
+            generator.setParameter(AbstractResource.GatewayWorkerConstants.GATEWAY_ID,
+                    gatewayResource.getGatewayName());
+            generator.setParameter(AbstractResource.UserConstants.USERNAME, userResource.getUserName());
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            em.close();
+            return true;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return false;
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+
+    }
+
+    /**
+     * @param configKey
+     * @return
+     */
+    public static List<ConfigurationResource> getConfigurations(String configKey){
+        List<ConfigurationResource> list = new ArrayList<ConfigurationResource>();
+        EntityManager em = null;
+        try {
+            em = getEntityManager();
+            em.getTransaction().begin();
+            QueryGenerator generator = new QueryGenerator(AbstractResource.CONFIGURATION);
+            generator.setParameter(AbstractResource.ConfigurationConstants.CONFIG_KEY, configKey);
+            Query q = generator.selectQuery(em);
+            List<?> resultList = q.getResultList();
+            if (resultList.size() != 0) {
+                for (Object result : resultList) {
+                    ConfigurationResource configurationResource = createConfigurationResourceObject(result);
+                    list.add(configurationResource);
+                }
+            }
+            em.getTransaction().commit();
+            em.close();
+        }catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+        return list;
+    }
+
+    /**
+     * @param configKey
+     * @return
+     */
+    public static ConfigurationResource getConfiguration(String configKey){
+        List<ConfigurationResource> configurations = getConfigurations(configKey);
+        return (configurations != null && configurations.size() > 0) ? configurations.get(0)
: null;
+    }
+
+    /**
+     * @param configKey
+     * @return
+     */
+    public static boolean isConfigurationExist(String configKey){
+        List<ConfigurationResource> configurations = getConfigurations(configKey);
+        return (configurations != null && configurations.size() > 0);
+    }
+
+    /**
+     * @param configKey
+     * @return
+     */
+    public static ConfigurationResource createConfiguration(String configKey) {
+        ConfigurationResource config = new ConfigurationResource();
+        config.setConfigKey(configKey);
+        return config;
+    }
+
+    /**
+     * @param result
+     * @return
+     */
+    private static ConfigurationResource createConfigurationResourceObject(
+            Object result) {
+        Configuration configuration = (Configuration) result;
+        ConfigurationResource configurationResource = new ConfigurationResource(configuration.getConfig_key(),
configuration.getConfig_val());
+        configurationResource.setExpireDate(configuration.getExpire_date());
+        return configurationResource;
+    }
+
+    /**
+     * @param configkey
+     * @param configValue
+     */
+    public static void removeConfiguration(String configkey, String configValue) throws RegistryException{
+        QueryGenerator queryGenerator = new QueryGenerator(AbstractResource.CONFIGURATION);
+        queryGenerator.setParameter(AbstractResource.ConfigurationConstants.CONFIG_KEY, configkey);
+        queryGenerator.setParameter(AbstractResource.ConfigurationConstants.CONFIG_VAL, configValue);
+        EntityManager em = null;
+        try {
+            if(isConfigurationExists(configkey, configValue)){
+                em = getEntityManager();
+                em.getTransaction().begin();
+                Query q = queryGenerator.deleteQuery(em);
+                q.executeUpdate();
+                em.getTransaction().commit();
+                em.close();
+            }
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    /**
+     * @param configkey
+     */
+    public static void removeConfiguration(String configkey) throws RegistryException{
+        QueryGenerator queryGenerator = new QueryGenerator(AbstractResource.CONFIGURATION);
+        queryGenerator.setParameter(AbstractResource.ConfigurationConstants.CONFIG_KEY, configkey);
+        EntityManager em = null;
+        try {
+            if(isConfigurationExist(configkey)){
+                em = getEntityManager();
+                em.getTransaction().begin();
+                Query q = queryGenerator.deleteQuery(em);
+                q.executeUpdate();
+                em.getTransaction().commit();
+                em.close();
+            }
+        }catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public static boolean isConfigurationExists(String configKey, String configVal) throws
RegistryException{
+        EntityManager em = null;
+        try{
+            //Currently categoryID is hardcoded value
+            em = ResourceUtils.getEntityManager();
+            Configuration existing = em.find(Configuration.class, new Configuration_PK(configKey,
configVal, AbstractResource.ConfigurationConstants.CATEGORY_ID_DEFAULT_VALUE));
+            em.close();
+            return existing!= null;
+        } catch (Exception e){
+            logger.error(e.getMessage(), e);
+            throw new RegistryException(e);
+        }finally {
+            if (em != null && em.isOpen()){
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+}


Mime
View raw message