From 962aea710b0d8d3fd6153fa87d92e4ba5bd74095 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Tue, 4 Jan 2011 02:44:36 -0800 Subject: [PATCH] Cluster details java files --- .../src/com/cloud/dc/ClusterDetailsDao.java | 15 ++++ .../com/cloud/dc/ClusterDetailsDaoImpl.java | 77 +++++++++++++++++++ server/src/com/cloud/dc/ClusterDetailsVO.java | 56 ++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 server/src/com/cloud/dc/ClusterDetailsDao.java create mode 100644 server/src/com/cloud/dc/ClusterDetailsDaoImpl.java create mode 100644 server/src/com/cloud/dc/ClusterDetailsVO.java diff --git a/server/src/com/cloud/dc/ClusterDetailsDao.java b/server/src/com/cloud/dc/ClusterDetailsDao.java new file mode 100644 index 00000000000..a6cd6a34448 --- /dev/null +++ b/server/src/com/cloud/dc/ClusterDetailsDao.java @@ -0,0 +1,15 @@ +package com.cloud.dc; + +import java.util.Map; + +import com.cloud.utils.db.GenericDao; + +public interface ClusterDetailsDao extends GenericDao { + Map findDetails(long clusterId); + + void persist(long clusterId, Map details); + + ClusterDetailsVO findDetail(long clusterId, String name); + + void deleteDetails(long clusterId); +} diff --git a/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java b/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java new file mode 100644 index 00000000000..f5c6be597f1 --- /dev/null +++ b/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -0,0 +1,77 @@ +package com.cloud.dc; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.ejb.Local; + +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.Transaction; + +@Local(value=ClusterDetailsDao.class) +public class ClusterDetailsDaoImpl extends GenericDaoBase implements ClusterDetailsDao { + protected final SearchBuilder ClusterSearch; + protected final SearchBuilder DetailSearch; + + protected ClusterDetailsDaoImpl() { + ClusterSearch = createSearchBuilder(); + ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ); + ClusterSearch.done(); + + DetailSearch = createSearchBuilder(); + DetailSearch.and("clusterId", DetailSearch.entity().getClusterId(), SearchCriteria.Op.EQ); + DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ); + DetailSearch.done(); + } + + @Override + public ClusterDetailsVO findDetail(long clusterId, String name) { + SearchCriteria sc = DetailSearch.create(); + sc.setParameters("clusterId", clusterId); + sc.setParameters("name", name); + + return findOneIncludingRemovedBy(sc); + } + + @Override + public Map findDetails(long clusterId) { + SearchCriteria sc = ClusterSearch.create(); + sc.setParameters("clusterId", clusterId); + + List results = search(sc, null); + Map details = new HashMap(results.size()); + for (ClusterDetailsVO result : results) { + details.put(result.getName(), result.getValue()); + } + return details; + } + + @Override + public void deleteDetails(long clusterId) { + SearchCriteria sc = ClusterSearch.create(); + sc.setParameters("clusterId", clusterId); + + List results = search(sc, null); + for (ClusterDetailsVO result : results) { + remove(result.getId()); + } + } + + @Override + public void persist(long clusterId, Map details) { + Transaction txn = Transaction.currentTxn(); + txn.start(); + SearchCriteria sc = ClusterSearch.create(); + sc.setParameters("clusterId", clusterId); + expunge(sc); + + for (Map.Entry detail : details.entrySet()) { + ClusterDetailsVO vo = new ClusterDetailsVO(clusterId, detail.getKey(), detail.getValue()); + persist(vo); + } + txn.commit(); + } +} diff --git a/server/src/com/cloud/dc/ClusterDetailsVO.java b/server/src/com/cloud/dc/ClusterDetailsVO.java new file mode 100644 index 00000000000..ff3a61d10f9 --- /dev/null +++ b/server/src/com/cloud/dc/ClusterDetailsVO.java @@ -0,0 +1,56 @@ +package com.cloud.dc; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="cluster_details") +public class ClusterDetailsVO { + + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="cluster_id") + private long clusterId; + + @Column(name="name") + private String name; + + @Column(name="value") + private String value; + + protected ClusterDetailsVO() { + } + + public ClusterDetailsVO(long clusterId, String name, String value) { + this.clusterId = clusterId; + this.name = name; + this.value = value; + } + + public long getClusterId() { + return clusterId; + } + + public String getName() { + return name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public long getId() { + return id; + } +}