You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/01/08 06:51:42 UTC
[31/46] renaming package adc.mgt to manager
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/DatabaseBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/DatabaseBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/DatabaseBasedPersistenceManager.java
new file mode 100644
index 0000000..6ba08be
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/DatabaseBasedPersistenceManager.java
@@ -0,0 +1,1408 @@
+///*
+// * 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.stratos.manager.persistence;
+//
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.stratos.manager.client.CloudControllerServiceClient;
+//import org.apache.stratos.manager.dao.Cluster;
+//import org.apache.stratos.manager.dao.DataCartridge;
+//import org.apache.stratos.manager.exception.ADCException;
+//import org.apache.stratos.manager.exception.PersistenceManagerException;
+//import org.apache.stratos.manager.repository.Repository;
+//import org.apache.stratos.manager.subscriber.Subscriber;
+//import org.apache.stratos.manager.subscription.CartridgeSubscription;
+//import org.apache.stratos.manager.subscription.DataCartridgeSubscription;
+//import org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory;
+//import org.apache.stratos.manager.utils.CartridgeConstants;
+//import org.apache.stratos.manager.utils.RepoPasswordMgtUtil;
+//import org.apache.stratos.manager.utils.StratosDBUtils;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//import org.wso2.carbon.context.CarbonContext;
+//
+//import java.sql.*;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+////import org.apache.stratos.manager.subscription.SingleTenantCartridgeSubscription;
+//
+//public class DatabaseBasedPersistenceManager extends PersistenceManager {
+//
+// private static final Log log = LogFactory.getLog(DatabaseBasedPersistenceManager.class);
+//
+// @Override
+// public void persistCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// int repositoryId = -1;
+// //persist Repository if available
+// if(cartridgeSubscription.getRepository() != null) {
+// repositoryId = persistRepository(connection, cartridgeSubscription.getRepository());
+// }
+//
+// int dataCartridgeInfoId = -1;
+// //persist Data Cartridge Subscription specific details if available
+// if(cartridgeSubscription.getCartridgeInfo().getProvider().equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER) &&
+// cartridgeSubscription instanceof DataCartridgeSubscription) {
+// DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription) cartridgeSubscription;
+// dataCartridgeInfoId = persistDataCartridgeInformation(connection, dataCartridgeSubscription.getHost(),
+// dataCartridgeSubscription.getUsername(), dataCartridgeSubscription.getPassword());
+// }
+//
+// PreparedStatement persistSubscriptionStmt = null;
+//
+// String insertSubscription = "INSERT INTO SUBSCRIPTION (CARTRIDGE_TYPE,CARTRIDGE_ALIAS,MAPPED_DOMAIN," +
+// "SUBSCRIPTION_STATUS,MULTITENANT,PROVIDER,AUTOSCALING_POLICY,HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN," +
+// "MGT_SUBDOMAIN,SERVICE_STATUS,DATA_CARTRIDGE_ID,REPOSITORY_ID)"
+// + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+//
+// try {
+// persistSubscriptionStmt = connection.prepareStatement(insertSubscription);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriptionStmt.setString(1, cartridgeSubscription.getType());
+// persistSubscriptionStmt.setString(2, cartridgeSubscription.getAlias());
+// persistSubscriptionStmt.setString(3, cartridgeSubscription.getMappedDomain());
+// persistSubscriptionStmt.setString(4, cartridgeSubscription.getSubscriptionStatus());
+// persistSubscriptionStmt.setBoolean(5, cartridgeSubscription.getCartridgeInfo().getMultiTenant());
+// persistSubscriptionStmt.setString(6, cartridgeSubscription.getCartridgeInfo().getProvider());
+// persistSubscriptionStmt.setString(7, cartridgeSubscription.getAutoscalingPolicyName());
+// persistSubscriptionStmt.setString(8, cartridgeSubscription.getHostName());
+// persistSubscriptionStmt.setString(9, cartridgeSubscription.getClusterDomain());
+// persistSubscriptionStmt.setString(10, cartridgeSubscription.getClusterSubDomain());
+// persistSubscriptionStmt.setString(11, cartridgeSubscription.getMgtClusterDomain());
+// persistSubscriptionStmt.setString(12, cartridgeSubscription.getMgtClusterSubDomain());
+// persistSubscriptionStmt.setString(13, "CLUSTER_CREATED");//TODO: fix properly
+// persistSubscriptionStmt.setInt(14, dataCartridgeInfoId);
+// persistSubscriptionStmt.setInt(15, repositoryId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriptionStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// connection.commit();
+//
+// } catch (SQLException e) {
+// try {
+// connection.rollback();
+//
+// } catch (SQLException e1) {
+// log.error("Failed to rollback", e);
+// }
+// String errorMsg = "Failed to commit the changes for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// }
+// }
+//
+// private int persistRepository (Connection connection, Repository repository) throws PersistenceManagerException{
+//
+// PreparedStatement persistRepoStmt = null;
+// ResultSet resultSet = null;
+// int repoId = -1;
+//
+// String insertRepo = "INSERT INTO REPOSITORY (URL,USERNAME,PASSWORD,IS_PRIVATE)"
+// + " VALUES (?,?,?,?)";
+//
+// try {
+// persistRepoStmt = connection.prepareStatement(insertRepo, Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistRepoStmt.setString(1, repository.getUrl());
+// persistRepoStmt.setString(2, repository.getUserName());
+// persistRepoStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(repository.getPassword()));
+// persistRepoStmt.setBoolean(4, repository.isPrivateRepository());
+//
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistRepoStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistRepoStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// repoId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistRepoStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return repoId;
+// }
+//
+// /*private int persistCluster (Connection connection, Cluster cluster) throws PersistenceManagerException {
+//
+// PreparedStatement persistClusterStmt = null;
+// ResultSet resultSet = null;
+// int clusterId = -1;
+//
+// String insertCluster = "INSERT INTO CLUSTER (HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN,MGT_SUBDOMAIN,SERVICE_STATUS)"
+// + " VALUES (?,?,?,?,?,?,?)";
+//
+// try {
+// persistClusterStmt = connection.prepareStatement(insertCluster, Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException("Failed create a Prepared Statement for persisting Cluster", e);
+// }
+//
+// try {
+// persistClusterStmt.setString(1, cluster.getHostName());
+// persistClusterStmt.setString(2, cluster.getClusterDomain());
+// persistClusterStmt.setString(3, cluster.getClusterSubDomain());
+// persistClusterStmt.setString(4, cluster.getMgtClusterDomain());
+// persistClusterStmt.setString(5, cluster.getMgtClusterSubDomain());
+// persistClusterStmt.setString(6, "CREATED");//TODO:refactor
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Cluster";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistClusterStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Cluster";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistClusterStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// clusterId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistClusterStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return clusterId;
+// } */
+//
+// private int persistDataCartridgeInformation (Connection connection, String host, String adminUserName,
+// String adminPassword) throws PersistenceManagerException {
+//
+// PreparedStatement persistDataCartridgeInformationStmt = null;
+// ResultSet resultSet = null;
+// int dataCartridgeInfoId = -1;
+//
+// String insertDataCartridgeInfo = "INSERT INTO DATA_CARTRIDGE (HOST,ADMIN_USERNAME,ADMIN_PASSWORD)"
+// + " VALUES (?,?,?)";
+//
+// try {
+// persistDataCartridgeInformationStmt = connection.prepareStatement(insertDataCartridgeInfo,
+// Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistDataCartridgeInformationStmt.setString(1, host);
+// persistDataCartridgeInformationStmt.setString(2, adminUserName);
+// persistDataCartridgeInformationStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(adminPassword));
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistDataCartridgeInformationStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistDataCartridgeInformationStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// dataCartridgeInfoId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Data Cartridge " +
+// "Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistDataCartridgeInformationStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return dataCartridgeInfoId;
+// }
+//
+// /*private int persistSubscriber (Connection connection, Subscriber subscriber) throws PersistenceManagerException {
+//
+// PreparedStatement persistSubscriberStmt = null;
+//
+// String insertSubscriber = "INSERT INTO TENANT (TENANT_ID,USERNAME,PASSWORD) VALUES (?,?,?)";
+//
+// try {
+// persistSubscriberStmt = connection.prepareStatement(insertSubscriber);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriberStmt.setInt(1, subscriber.getTenantId());
+// persistSubscriberStmt.setString(2, subscriber.getAdminUserName());
+// persistSubscriberStmt.setString(3, subscriber.getTenantDomain());
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriberStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistSubscriberStmt);
+// }
+//
+// return subscriber.getTenantId();
+// }*/
+//
+// @Override
+// public void removeCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+// //TODO
+// }
+//
+// @Override
+// public CartridgeSubscription getCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getSubscriptionStatement = null;
+// try {
+// getSubscriptionStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getSubscriptionStatement.setString(1, alias);
+// getSubscriptionStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getSubscriptionStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// CartridgeSubscription cartridgeSubscription = null;
+// try {
+// while (resultSet.next()) {
+// cartridgeSubscription = populateCartridgeSubscription(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// }
+//
+// return cartridgeSubscription;
+// }
+//
+// private CartridgeSubscription populateCartridgeSubscription (ResultSet resultSet)
+// throws PersistenceManagerException, SQLException {
+//
+// String cartridgeType = resultSet.getString("CARTRIDGE_TYPE");
+//
+// CartridgeInfo cartridgeInfo = null;
+// try {
+// cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
+//
+// } catch (Exception e) {
+// //Cannot happen, but can continue
+// String message = "Error getting Cartridge Definition for " + cartridgeType;
+// log.error(message, e);
+// }
+//
+// //If an error occurred while getting the CartridgeInfo instance, create an instance with a minimal data set
+// if(cartridgeInfo == null) {
+// cartridgeInfo = new CartridgeInfo();
+// cartridgeInfo.setMultiTenant(resultSet.getBoolean("MULTITENANT"));
+// cartridgeInfo.setProvider(resultSet.getString("PROVIDER"));
+// }
+//
+// CartridgeSubscription cartridgeSubscription = null;
+// try {
+// cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+//
+// } catch (ADCException e) {
+// throw new PersistenceManagerException(e);
+// }
+//
+// /*Policy autoScalingPolicy = PolicyHolder.getInstance().getPolicy(resultSet.getString("AUTOSCALING_POLICY"));
+// if(autoScalingPolicy == null) {
+// //get the default AutoScaling policy
+// autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
+// }*/
+//
+// //populate data
+// cartridgeSubscription.setSubscriptionId(resultSet.getInt("SUBSCRIPTION_ID"));
+// cartridgeSubscription.setType(cartridgeType);
+// cartridgeSubscription.setAlias(resultSet.getString("CARTRIDGE_ALIAS"));
+// cartridgeSubscription.setMappedDomain(resultSet.getString("MAPPED_DOMAIN"));
+// cartridgeSubscription.setSubscriptionStatus(resultSet.getString("SUBSCRIPTION_STATUS"));
+// cartridgeSubscription.setAutoscalingPolicyName(resultSet.getString("AUTOSCALING_POLICY"));
+//
+// //Repository related data
+// if (resultSet.getInt("REPOSITORY_ID") != -1) {
+// Repository repository = new Repository();
+// repository.setId(resultSet.getInt("REPOSITORY_ID"));
+// repository.setUrl(resultSet.getString("URL"));
+// repository.setUserName(resultSet.getString("USERNAME"));
+// repository.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.getString("PASSWORD")));
+// repository.setPrivateRepository(resultSet.getBoolean("IS_PRIVATE"));
+// cartridgeSubscription.setRepository(repository);
+// }
+//
+// //Cluster related data
+// Cluster cluster = new Cluster();
+// cluster.setId(resultSet.getInt("CLUSTER_ID"));
+// cluster.setHostName(resultSet.getString("HOSTNAME"));
+// cluster.setClusterDomain(resultSet.getString("DOMAIN"));
+// cluster.setClusterSubDomain(resultSet.getString("SUBDOMAIN"));
+// cluster.setMgtClusterDomain(resultSet.getString("MGT_DOMAIN"));
+// cluster.setMgtClusterSubDomain(resultSet.getString("MGT_SUBDOMAIN"));
+// cluster.setServiceStatus(resultSet.getString("SERVICE_STATUS"));
+// cartridgeSubscription.setCluster(cluster);
+//
+// //data cartridge specific information
+// //TODO: temporarily removed
+//// if (resultSet.getInt("DATA_CARTRIDGE_ID") != -1 && cartridgeSubscription instanceof
+//// SingleTenantCartridgeSubscription) {
+//// DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription)cartridgeSubscription;
+//// dataCartridgeSubscription.setHost(resultSet.getString("HOST"));
+//// dataCartridgeSubscription.setUsername(resultSet.getString("ADMIN_USERNAME"));
+//// dataCartridgeSubscription.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.
+//// getString("ADMIN_PASSWORD")));
+//// }
+//
+// //Subscriber related data
+// CarbonContext carbonContext = CarbonContext.getThreadLocalCarbonContext();
+// Subscriber subscriber = new Subscriber(carbonContext.getUsername(), carbonContext.getTenantId(),
+// carbonContext.getTenantDomain());
+// cartridgeSubscription.setSubscriber(subscriber);
+//
+// return cartridgeSubscription;
+// }
+//
+// @Override
+// public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getSubscriptionsStatement = null;
+// try {
+// getSubscriptionsStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getSubscriptionsStatement.setInt(1, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getSubscriptionsStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// List<CartridgeSubscription> cartridgeSubscriptions = new ArrayList<CartridgeSubscription>();
+// try {
+// while(resultSet.next()) {
+// CartridgeSubscription cartridgeSubscription = populateCartridgeSubscription(resultSet);
+// cartridgeSubscriptions.add(cartridgeSubscription);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// }
+//
+// return cartridgeSubscriptions;
+// }
+//
+// @Override
+// public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_TYPE=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getSubscriptionsStatement = null;
+// try {
+// getSubscriptionsStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getSubscriptionsStatement.setString(1, cartridgeType);
+// getSubscriptionsStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getSubscriptionsStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// List<CartridgeSubscription> cartridgeSubscriptions = new ArrayList<CartridgeSubscription>();
+// try {
+// while(resultSet.next()) {
+// CartridgeSubscription cartridgeSubscription = populateCartridgeSubscription(resultSet);
+// cartridgeSubscriptions.add(cartridgeSubscription);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
+// }
+//
+// return cartridgeSubscriptions;
+// }
+//
+// @Override
+// public Repository getRepository(int tenantId, String alias) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.TENANT_ID=? AND S.CARTRIDGE_ALIAS=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID ";
+//
+// PreparedStatement getRepositoryStatement = null;
+// try {
+// getRepositoryStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getRepositoryStatement.setInt(1, tenantId);
+// getRepositoryStatement.setString(2, alias);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getRepositoryStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// Repository repository = null;
+// try {
+// while(resultSet.next()) {
+// repository = populateRepository(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// }
+//
+// return repository;
+// }
+//
+// private Repository populateRepository (ResultSet resultSet) throws SQLException {
+//
+// if(resultSet.getInt("REPOSITORY_ID") == -1) {
+// return null;
+// }
+//
+// Repository repository = new Repository();
+// repository.setId(resultSet.getInt("REPOSITORY_ID"));
+// repository.setUrl(resultSet.getString("URL"));
+// repository.setUserName(resultSet.getString("USERNAME"));
+// repository.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.getString("PASSWORD")));
+// repository.setPrivateRepository(resultSet.getBoolean("IS_PRIVATE"));
+//
+// return repository;
+// }
+//
+// @Override
+// public Repository getRepository(String clusterDomain) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.DOMAIN=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID ";
+//
+// PreparedStatement getRepositoryStatement = null;
+// try {
+// getRepositoryStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getRepositoryStatement.setString(1, clusterDomain);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getRepositoryStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// Repository repository = null;
+// try {
+// while(resultSet.next()) {
+// repository = populateRepository(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
+// }
+//
+// return repository;
+// }
+//
+// @Override
+// public DataCartridge getDataCartridgeSubscriptionInfo(int tenantId, String alias)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getDataCartridgeSubscriptionInfoStatement = null;
+// try {
+// getDataCartridgeSubscriptionInfoStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getDataCartridgeSubscriptionInfoStatement.setString(1, alias);
+// getDataCartridgeSubscriptionInfoStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getDataCartridgeSubscriptionInfoStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// DataCartridge dataCartridge = null;
+// try {
+// while (resultSet.next()) {
+// dataCartridge = populateDataCartridgeInfo(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
+// }
+//
+// return dataCartridge;
+// }
+//
+// private DataCartridge populateDataCartridgeInfo (ResultSet resultSet) throws SQLException {
+//
+// if(resultSet.getInt("DATA_CARTRIDGE_ID") == -1) {
+// return null;
+// }
+//
+// DataCartridge dataCartridge = new DataCartridge();
+// dataCartridge.setId(resultSet.getInt("DATA_CARTRIDGE_ID"));
+// dataCartridge.setDataCartridgeType(resultSet.getString("CARTRIDGE_TYPE"));
+// dataCartridge.setHost(resultSet.getString("HOST"));
+// dataCartridge.setUserName(resultSet.getString("ADMIN_USERNAME"));
+// dataCartridge.setPassword(resultSet.getString("ADMIN_PASSWORD"));
+//
+// return dataCartridge;
+// }
+//
+// @Override
+// public boolean isAliasTaken(int tenantId, String alias) throws PersistenceManagerException {
+//
+// boolean isAliasTaken = false;
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
+//
+// PreparedStatement isAliasTakenStatement = null;
+// try {
+// isAliasTakenStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// isAliasTakenStatement.setString(1, alias);
+// isAliasTakenStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = isAliasTakenStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// if(resultSet.next()) {
+// log.info("Alias " + alias + " has been already used for tenant " + tenantId);
+// isAliasTaken = true;
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
+// }
+//
+// return isAliasTaken;
+// }
+//
+// @Override
+// public boolean hasSubscribed(int tenantId, String cartridgeType) throws PersistenceManagerException {
+//
+// boolean hasSubscribed = false;
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_TYPE=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
+//
+// PreparedStatement hasSubscribedStatement = null;
+// try {
+// hasSubscribedStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// hasSubscribedStatement.setString(1, cartridgeType);
+// hasSubscribedStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = hasSubscribedStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// if(resultSet.next()) {
+// log.info("Tenant " + tenantId + " has already subscribed for the Cartridge Type " + cartridgeType);
+// hasSubscribed = true;
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
+// }
+//
+// return hasSubscribed;
+// }
+//
+// @Override
+// public void updateDomianMapping(int tenantId, String cartridgeAlias, String newDomain)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// PreparedStatement updateDomainMappingStmt = null;
+//
+// String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET MAPPED_DOMAIN = ? " +
+// "WHERE TENANT_ID = ? AND ALIAS = ?";
+//
+// try {
+// updateDomainMappingStmt = connection.prepareStatement(insertDataCartridgeInfo);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateDomainMappingStmt.setString(1, newDomain);
+// updateDomainMappingStmt.setInt(2, tenantId);
+// updateDomainMappingStmt.setString(3, cartridgeAlias);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateDomainMappingStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
+// }
+// }
+//
+// @Override
+// public String getMappedDomain(int tenantId, String cartridgeAlias) throws PersistenceManagerException {
+//
+// String mappedDomain = null;
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT MAPPED_DOMAIN FROM SUBSCRIPTION S " +
+// "WHERE S.TENANT_ID=? AND S.CARTRIDGE_ALIAS=? AND S.STATE != 'UNSUBSCRIBED'";
+//
+// PreparedStatement getMappedDomainStatement = null;
+// try {
+// getMappedDomainStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getMappedDomainStatement.setInt(1, tenantId);
+// getMappedDomainStatement.setString(2, cartridgeAlias);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getMappedDomainStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// if(resultSet.next()) {
+// mappedDomain = resultSet.getString("MAPPED_DOMAIN");
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
+// }
+//
+// return mappedDomain;
+// }
+//
+// @Override
+// public Cluster getCluster(int tenantId, String cartridgeAlias) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN,MGT_SUBDOMAIN,SERVICE_STATUS FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
+//
+// PreparedStatement getClusterStatement = null;
+// try {
+// getClusterStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getClusterStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getClusterStatement.setString(1, cartridgeAlias);
+// getClusterStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getClusterStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getClusterStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// Cluster cluster = null;
+// try {
+// if(resultSet.next()) {
+// cluster = populateCluster(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
+// }
+//
+// return cluster;
+// }
+//
+// @Override
+// public void updateSubscriptionStatus(int tenantId, String cartridgeAlias, String newStatus)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// PreparedStatement updateSubscriptionStatusStmt = null;
+//
+// String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET SUBSCRIPTION_STATUS = ? " +
+// "WHERE TENANT_ID = ? AND ALIAS = ?";
+//
+// try {
+// updateSubscriptionStatusStmt = connection.prepareStatement(insertDataCartridgeInfo);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateSubscriptionStatusStmt.setString(1, newStatus);
+// updateSubscriptionStatusStmt.setInt(2, tenantId);
+// updateSubscriptionStatusStmt.setString(3, cartridgeAlias);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateSubscriptionStatusStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
+// }
+//
+// }
+//
+// @Override
+// public void updateServiceStatus(int tenantId, String cartridgeAlias, String newStatus)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// PreparedStatement updateServiceStatusStmt = null;
+//
+// String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET SUBSCRIPTION_STATUS = ? " +
+// "WHERE TENANT_ID = ? AND ALIAS = ?";
+//
+// try {
+// updateServiceStatusStmt = connection.prepareStatement(insertDataCartridgeInfo);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateServiceStatusStmt.setString(1, newStatus);
+// updateServiceStatusStmt.setInt(2, tenantId);
+// updateServiceStatusStmt.setString(3, cartridgeAlias);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// updateServiceStatusStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
+// }
+// }
+//
+// private Cluster populateCluster (ResultSet resultSet) throws SQLException {
+//
+// Cluster cluster = new Cluster();
+// cluster.setHostName(resultSet.getString("HOSTNAME"));
+// cluster.setClusterDomain(resultSet.getString("DOMAIN"));
+// cluster.setClusterSubDomain(resultSet.getString("SUBDOMAIN"));
+// cluster.setMgtClusterDomain(resultSet.getString("MGT_DOMAIN"));
+// cluster.setMgtClusterSubDomain(resultSet.getString("MGT_SUBDOMAIN"));
+// cluster.setServiceStatus(resultSet.getString("SERVICE_STATUS"));
+//
+// return cluster;
+// }
+//
+// @Override
+// public void removeDomainMapping(int tenantId, String cartridgeAlias)
+// throws PersistenceManagerException {
+//
+// updateDomianMapping(tenantId, cartridgeAlias, null);
+// }
+//
+//
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
new file mode 100644
index 0000000..5fe4d1a
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
@@ -0,0 +1,92 @@
+/*
+ * 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.stratos.manager.persistence;
+
+import org.apache.stratos.manager.deploy.service.Service;
+import org.apache.stratos.manager.exception.PersistenceManagerException;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
+
+import java.util.Collection;
+
+public abstract class PersistenceManager {
+
+ public abstract void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription)
+ throws PersistenceManagerException;
+
+ public abstract void removeCartridgeSubscription (int tenantId, String type, String alias)
+ throws PersistenceManagerException;
+
+ //public abstract CartridgeSubscription getCartridgeSubscription(int tenantId, String alias)
+ // throws PersistenceManagerException;
+
+ public abstract Collection<CartridgeSubscription> getCartridgeSubscriptions()
+ throws PersistenceManagerException;
+
+ public abstract Collection<CartridgeSubscription> getCartridgeSubscriptions(int tenantId)
+ throws PersistenceManagerException;
+
+ public abstract void persistService (Service service) throws PersistenceManagerException;
+
+ public abstract Service getService (String cartridgeType) throws PersistenceManagerException;
+
+ public abstract void removeService (String cartridgeType) throws PersistenceManagerException;
+
+ //public abstract Collection<CartridgeSubscription> getCartridgeSubscriptions(int tenantId)
+ // throws PersistenceManagerException;
+
+ //public abstract CartridgeSubscription getCartridgeSubscription (String clusterDomain)
+ // throws PersistenceManagerException;
+
+ //public abstract Collection<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
+ // throws PersistenceManagerException;
+
+ /*public abstract Repository getRepository (int tenantId, String alias)
+ throws PersistenceManagerException;
+
+ public abstract Repository getRepository (String clusterDomain)
+ throws PersistenceManagerException;
+
+ public abstract DataCartridge getDataCartridgeSubscriptionInfo (int tenantId, String alias)
+ throws PersistenceManagerException;
+
+ public abstract boolean isAliasTaken (int tenantId, String alias)
+ throws PersistenceManagerException;
+
+ public abstract boolean hasSubscribed (int tenantId, String cartridgeType)
+ throws PersistenceManagerException;
+
+ public abstract void removeDomainMapping (int tenantId, String cartridgeAlias)
+ throws PersistenceManagerException;
+
+ public abstract void updateDomianMapping (int tenantId, String cartridgeAlias, String newDomain)
+ throws PersistenceManagerException;
+
+ public abstract String getMappedDomain (int tenantId, String cartridgeAlias)
+ throws PersistenceManagerException;
+
+ public abstract Cluster getCluster (int tenantId, String cartridgeAlias)
+ throws PersistenceManagerException;
+
+ public abstract void updateSubscriptionStatus (int tenantId, String cartridgeAlias, String newStatus)
+ throws PersistenceManagerException;
+
+ public abstract void updateServiceStatus (int tenantId, String cartridgeAlias, String newStatus)
+ throws PersistenceManagerException; */
+}