diff --git a/components/org.apache.stratos.manager/META-INF/persistence b/components/org.apache.stratos.manager/META-INF/persistence new file mode 100644 index 0000000000..339782b4e4 --- /dev/null +++ b/components/org.apache.stratos.manager/META-INF/persistence @@ -0,0 +1,20 @@ + + + + + org.apache.openjpa.persistence.PersistenceProviderImpl + + org.apache.stratos.messaging.domain.application.signup.ApplicationSignUp + org.apache.stratos.messaging.domain.application.signup.ArtifactRepository + org.apache.stratos.messaging.domain.application.signup.DomainMapping + org.apache.stratos.messaging.domain.topology.Cluster + + + + + + + + + + \ No newline at end of file diff --git a/components/org.apache.stratos.manager/src/main/database/ER-MODEL.mwb b/components/org.apache.stratos.manager/src/main/database/ER-MODEL.mwb new file mode 100644 index 0000000000..1cd2055a60 Binary files /dev/null and b/components/org.apache.stratos.manager/src/main/database/ER-MODEL.mwb differ diff --git a/components/org.apache.stratos.manager/src/main/database/Stratos-dbScript b/components/org.apache.stratos.manager/src/main/database/Stratos-dbScript new file mode 100644 index 0000000000..961bee7d8b --- /dev/null +++ b/components/org.apache.stratos.manager/src/main/database/Stratos-dbScript @@ -0,0 +1,91 @@ +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; + +CREATE SCHEMA IF NOT EXISTS `StratosManager` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; +USE `StratosManager` ; + +-- ----------------------------------------------------- +-- Table `StratosManager`.`Cluster` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `StratosManager`.`Cluster` ( + `clusterId` VARCHAR(255) NULL, + `serviceName` VARCHAR(255) NULL, + `autoscalePolicyName` VARCHAR(255) NULL, + `deploymentPolicyName` VARCHAR(255) NULL, + `hostNames` VARCHAR(255) NULL, + `tenantRange` VARCHAR(45) NULL, + `isLbCluster` TINYINT(1) NULL, + `isKubernetesCluster` TINYINT(1) NULL, + `appId` VARCHAR(45) NULL, + PRIMARY KEY (`clusterId`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `StratosManager`.`ArtifactRepository` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `StratosManager`.`ArtifactRepository` ( + `alias` VARCHAR(255) NOT NULL, + `isPrivateRepo` TINYINT(1) NULL, + `repoUserName` VARCHAR(255) NULL, + `repoPassword` VARCHAR(255) NULL, + `repoURL` VARCHAR(255) NULL, + `catridgeType` VARCHAR(255) NULL, + PRIMARY KEY (`alias`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `StratosManager`.`ApplicationSignUp` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `StratosManager`.`ApplicationSignUp` ( + `applicationId` VARCHAR(255) NOT NULL, + `tenantId` INT NOT NULL, + `Cluster_clusterId` VARCHAR(255) NOT NULL, + `ArtifactRepository_alias` VARCHAR(255) NOT NULL, + PRIMARY KEY (`applicationId`, `tenantId`), + INDEX `fk_ApplicationSignUp_Cluster_idx` (`Cluster_clusterId` ASC), + INDEX `fk_ApplicationSignUp_ArtifactRepository1_idx` (`ArtifactRepository_alias` ASC), + CONSTRAINT `fk_ApplicationSignUp_Cluster` + FOREIGN KEY (`Cluster_clusterId`) + REFERENCES `StratosManager`.`Cluster` (`clusterId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_ApplicationSignUp_ArtifactRepository1` + FOREIGN KEY (`ArtifactRepository_alias`) + REFERENCES `StratosManager`.`ArtifactRepository` (`alias`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `StratosManager`.`DomainMapping` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `StratosManager`.`DomainMapping` ( + `domainName` VARCHAR(255) NOT NULL, + `serviceName` VARCHAR(255) NULL, + `contextPath` VARCHAR(255) NULL, + `ApplicationSignUp_applicationId` VARCHAR(255) NOT NULL, + `ApplicationSignUp_tenantId` INT NOT NULL, + `Cluster_clusterId` VARCHAR(255) NOT NULL, + PRIMARY KEY (`domainName`, `ApplicationSignUp_tenantId`, `ApplicationSignUp_applicationId`), + INDEX `fk_DomainMapping_ApplicationSignUp1_idx` (`ApplicationSignUp_applicationId` ASC, `ApplicationSignUp_tenantId` ASC), + INDEX `fk_DomainMapping_Cluster1_idx` (`Cluster_clusterId` ASC), + CONSTRAINT `fk_DomainMapping_ApplicationSignUp1` + FOREIGN KEY (`ApplicationSignUp_applicationId` , `ApplicationSignUp_tenantId`) + REFERENCES `StratosManager`.`ApplicationSignUp` (`applicationId` , `tenantId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_DomainMapping_Cluster1` + FOREIGN KEY (`Cluster_clusterId`) + REFERENCES `StratosManager`.`Cluster` (`clusterId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; 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 0000000000..ac81fa82a5 --- /dev/null +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/Persistence/PersistenceManager.java @@ -0,0 +1,259 @@ +package org.apache.stratos.manager.Persistence; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.persistence.*; + +import java.util.*; +/** + * Created by aarthy on 7/27/15. + */ +public class PersistenceManager { + + private static final Log log; + + static { + log = LogFactory.getLog(PersistenceManager.class); + } + + private EntityManagerFactory entitymanagerFactory = Persistence.createEntityManagerFactory("PersistenceUnit"); + + private static final PersistenceManager instance = new PersistenceManager(); + + EntityManager entityManager = null; + + + public static PersistenceManager getInstance() { + return instance; + } + + + /** + * Add object to persist + * @param object + * @throws PersistenceException + */ + public void add(Object object) + { + System.out.printf("entered"); + + System.out.printf("true"); + try { + entityManager = this.entitymanagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + entityManager.persist(object); + entityManager.flush(); + entityManager.getTransaction().commit(); + String msg="Added Successfully"; + log.info(msg); + } + catch (PersistenceException e) + { + String msg="Error while adding"; + log.error(msg); + } + + } + + + /** + * remove object by primary key + * @param object + * @param primaryKey + * @throws PersistenceException + */ + + public void remove(Object object,Object primaryKey) + { + try { + entityManager = this.entitymanagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + Object found=entityManager.find(object.getClass(), primaryKey); + if(found!=null) { + entityManager.remove(found); + entityManager.getTransaction().commit(); + String msg = "Deleted sucessfully"; + log.info(msg); + } + else + { + String msg ="Object does not exists"; + log.error(msg); + } + } + catch (PersistenceException e) + { + + String msg="Error while Deleting"; + log.error(msg); + } + + } + + /** + * retrieve an object by primary key + * @param object + * @param primaryKey + * @return + */ + + public Object retrieve(Object object,Object primaryKey) + { + Object found=null; + try{ + + entityManager=this.entitymanagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + found= entityManager.find(found.getClass(), primaryKey); + if(found!=null) + log.info("Object Found"); + else + log.error("Object not Found"); + return found; + + } + catch (PersistenceException e) + { + + String msg="Error while retrieving"; + log.error(msg); + return found; + } + + } + + /** + * + * @param tableName + * @return + */ + + + public List retrieveAll(String tableName) + { + List objectList=new ArrayList(); + try{ + + entityManager=this.entitymanagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + String msg="Successfully retrieved"; + + objectList= entityManager.createQuery("select obj from "+tableName+" obj" ).getResultList(); + + if(objectList!=null) + { + log.info(msg); + return objectList; + } + else + return null; + + } + catch (javax.persistence.PersistenceException e) + { + String msg="Object not found"; + System.out.println(msg); + return null; + } + + } + + /** + * + * @param object + * @param primaryKey + * @param setValues + * @param whereValues + */ + + public void update(Object object,Object primaryKey,Map setValues,Map whereValues) + { + String setQuery=""; + String updateQuery=""; + String whereQuery=""; + + try { + + Object foundObject =retrieve(object,primaryKey); + + if(foundObject!=null) + { + + String query ="Update "+ object +" obj Set "; + int count =0; + for (String key : setValues.keySet()) { + setQuery += "obj."+key + "="; + + if(setValues.get(key)instanceof String) + { + setQuery+="'"+setValues.get(key)+"'"; + } + else + { + setQuery+=setValues.get(key); + } + + count++; + if(setValues.size()>1 && count!=setValues.size()) + { + setQuery+=","; + } + } + updateQuery=query+setQuery+" Where "; + + int pkCount=0; + for (String key : whereValues.keySet()){ + + whereQuery+="obj."+key+"="; + if(whereValues.get(key)instanceof String) + { whereQuery+="'"+whereValues.get(key)+"'"; + } + else + { whereQuery+=whereValues.get(key); + } + pkCount++; + if(whereValues.size()>1 && pkCount!=whereValues.size()) + { whereQuery+=" and "; + } + } + + updateQuery+=whereQuery; + entityManager=this.entitymanagerFactory.createEntityManager(); + + entityManager.getTransaction().begin(); + + Query queryString= entityManager.createQuery(updateQuery); + int updatedCount =queryString.executeUpdate(); + + if (updatedCount==1) + { + entityManager.getTransaction().commit(); + String msg="updated Successfully"; + log.info(msg); + } + + else + { + String msg= "Error while Updating"; + log.error(msg); + } + } + else { + String msg="Object not found"; + log.error(msg); + } + + } + catch (PersistenceException e) + { + String msg="Error while updating"; + log.error(msg); + } + + + + } + + +}