package org.openstack.atlas.util.itest.hibernate;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.openstack.atlas.util.staticutils.StaticFileUtils;
import org.openstack.atlas.util.staticutils.StaticStringUtils;
public class HibernateDbConf {
public static final String exampleJson = ""
+ "{\n"
+ " \"db\": {\n"
+ " \"dialect\": \"org.hibernate.dialect.MySQL5InnoDBDialect\", \n"
+ " \"url\": \"jdbc:mysql://mysql-master-n01.ord1.lbaas.rackspace.net:3306/loadbalancing\", \n"
+ " \"driver\": \"com.mysql.jdbc.Driver\", \n"
+ " \"passwd\": \"YourPassword\", \n"
+ " \"classes\": [\n"
+ " \"org.openstack.atlas.service.domain.entities.AccessList\", \n"
+ " \"org.openstack.atlas.service.domain.entities.AccessListType\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Cluster\", \n"
+ " \"org.openstack.atlas.service.domain.entities.GroupRateLimit\", \n"
+ " \"org.openstack.atlas.service.domain.entities.AccountGroup\", \n"
+ " \"org.openstack.atlas.service.domain.entities.ConnectionLimit\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Entity\", \n"
+ " \"org.openstack.atlas.service.domain.entities.HealthMonitor\", \n"
+ " \"org.openstack.atlas.service.domain.entities.HealthMonitorType\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Host\", \n"
+ " \"org.openstack.atlas.service.domain.entities.HostStatus\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Backup\", \n"
+ " \"org.openstack.atlas.service.domain.entities.IpVersion\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancer\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerJoinVip\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerJoinVip6\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerAlgorithm\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerProtocol\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerProtocolObject\", \n"
+ " \"org.openstack.atlas.service.domain.entities.RateLimit\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerStatus\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Node\", \n"
+ " \"org.openstack.atlas.service.domain.entities.NodeCondition\", \n"
+ " \"org.openstack.atlas.service.domain.entities.NodeStatus\", \n"
+ " \"org.openstack.atlas.service.domain.entities.SessionPersistence\", \n"
+ " \"org.openstack.atlas.service.domain.entities.SessionPersistenceObject\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Suspension\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Usage\", \n"
+ " \"org.openstack.atlas.service.domain.entities.AccountUsage\", \n"
+ " \"org.openstack.atlas.service.domain.entities.VirtualIp\", \n"
+ " \"org.openstack.atlas.service.domain.entities.VirtualIpv6\", \n"
+ " \"org.openstack.atlas.service.domain.entities.TrafficScripts\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerAlgorithmObject\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Ticket\", \n"
+ " \"org.openstack.atlas.service.domain.entities.BlacklistItem\", \n"
+ " \"org.openstack.atlas.service.domain.entities.BlacklistType\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Account\", \n"
+ " \"org.openstack.atlas.service.domain.entities.AccountLimit\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LimitType\", \n"
+ " \"org.openstack.atlas.service.domain.entities.JobState\", \n"
+ " \"org.openstack.atlas.service.domain.entities.UserPages\", \n"
+ " \"org.openstack.atlas.service.domain.entities.SslTermination\", \n"
+ " \"org.openstack.atlas.service.domain.entities.Defaults\", \n"
+ " \"org.openstack.atlas.service.domain.entities.AllowedDomain\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadbalancerMeta\", \n"
+ " \"org.openstack.atlas.service.domain.entities.NodeMeta\", \n"
+ " \"org.openstack.atlas.service.domain.entities.LoadBalancerStatusHistory\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.Event\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.Alert\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.AlertStatus\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.AccessListEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.ConnectionLimitEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.HealthMonitorEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.LoadBalancerEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.LoadBalancerServiceEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.NodeEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.NodeServiceEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.VirtualIpEvent\", \n"
+ " \"org.openstack.atlas.service.domain.events.entities.SessionPersistenceEvent\"\n"
+ " ], \n"
+ " \"db_key\": \"lb\", \n"
+ " \"user\": \"lbaas\", \n"
+ " \"hbm2ddl\": \"none\"\n"
+ " }\n"
+ "}";
private String dbKey;
private String url;
private String user;
private String passwd;
private String driver;
private String dialect;
private String hbm2ddl;
private String packageName;
private List<String> classNames;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("HibernateDbConf{dbKey=").append(dbKey).
append(", url=").append(url).
append(", user=").append(user).
append(", passwd=").append(passwd).
append(", driver=").append(driver).
append(", dialect=").append(dialect).
append(", hbm2ddl=").append(hbm2ddl).
append(", packageName=").append(packageName).
append(", classNames=");
if (classNames == null) {
sb.append("null");
} else {
sb.append(StaticStringUtils.collectionToString(classNames, ", "));
}
sb.append("}");
return sb.toString();
}
public HibernateDbConf() {
}
public static HibernateDbConf newCacheBuilder(String url, String user, String passwd) {
HibernateDbConf conf = new HibernateDbConf();
return conf;
}
public static List<String> getHibernateClasses(String fileName) throws ParseException, UnsupportedEncodingException, FileNotFoundException, IOException {
List<String> classList = new ArrayList<String>();
String jsonStr = new String(StaticFileUtils.readFile(fileName), "utf-8");
JSONParser jp = new JSONParser();
JSONObject rootConf = (JSONObject) jp.parse(jsonStr);
JSONObject dbConf = (JSONObject) rootConf.get("db");
JSONArray classes = (JSONArray) dbConf.get("classes");
if (classes != null) {
int cl = classes.size();
for (int i = 0; i < cl; i++) {
classList.add((String) classes.get(i));
}
}
return classList;
}
public static HibernateDbConf newHibernateConf(String fileName) throws ParseException, UnsupportedEncodingException, FileNotFoundException, IOException {
HibernateDbConf conf = new HibernateDbConf();
String jsonStr = new String(StaticFileUtils.readFile(fileName), "utf-8");
JSONParser jp = new JSONParser();
JSONObject rootConf = (JSONObject) jp.parse(jsonStr);
JSONObject dbConf = (JSONObject) rootConf.get("db");
List<String> classList = new ArrayList<String>();
conf.setUrl((String) dbConf.get("url"));
conf.setUser((String) dbConf.get("user"));
conf.setPasswd((String) dbConf.get("passwd"));
conf.setClassNames(classList);
conf.setDbKey((String) dbConf.get("dbkey"));
conf.setDialect((String) dbConf.get("dialect"));
conf.setDriver((String) dbConf.get("driver"));
conf.setPackageName((String) dbConf.get("package"));
conf.setHbm2ddl((String) dbConf.get("hbm2ddl"));
JSONArray classes = (JSONArray) dbConf.get("classes");
if (classes != null) {
int cl = classes.size();
for (int i = 0; i < cl; i++) {
classList.add((String) classes.get(i));
}
}
return conf;
}
public String getDbKey() {
return dbKey;
}
public void setDbKey(String dbKey) {
this.dbKey = dbKey;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getDialect() {
return dialect;
}
public void setDialect(String dialect) {
this.dialect = dialect;
}
public String getHbm2ddl() {
return hbm2ddl;
}
public void setHbm2ddl(String hbm2ddl) {
this.hbm2ddl = hbm2ddl;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public List<String> getClassNames() {
return classNames;
}
public void setClassNames(List<String> classNames) {
this.classNames = classNames;
}
}