You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/28 00:42:12 UTC
[1/2] git commit: updated refs/heads/vmsync to 422d9b8
Updated Branches:
refs/heads/vmsync 0233044b2 -> 422d9b8da
Fixed the build error
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a407b33a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a407b33a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a407b33a
Branch: refs/heads/vmsync
Commit: a407b33a77e3e20037214a88dc6b0564671a6f44
Parents: 0233044
Author: Alex Huang <al...@gmail.com>
Authored: Thu Jun 27 15:23:42 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Thu Jun 27 15:23:42 2013 -0700
----------------------------------------------------------------------
.../framework/jobs/dao/AsyncJobJoinMapDao.java | 5 +-
.../jobs/dao/AsyncJobJoinMapDaoImpl.java | 144 +++++++++++--------
.../jobs/impl/AsyncJobManagerImpl.java | 76 ++++------
3 files changed, 119 insertions(+), 106 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a407b33a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDao.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDao.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDao.java
index 4458fa2..577ed10 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDao.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDao.java
@@ -16,6 +16,7 @@
// under the License.
package org.apache.cloudstack.framework.jobs.dao;
+import java.util.Date;
import java.util.List;
import org.apache.cloudstack.framework.jobs.impl.AsyncJobJoinMapVO;
@@ -36,8 +37,10 @@ public interface AsyncJobJoinMapDao extends GenericDao<AsyncJobJoinMapVO, Long>
void completeJoin(long joinJobId, JobInfo.Status joinStatus, String joinResult, long completeMsid);
- List<Long> wakeupScan();
+// List<Long> wakeupScan();
List<Long> findJobsToWake(long joinedJobId);
+
+ List<Long> findJobsToWakeBetween(Date cutDate);
// List<Long> wakeupByJoinedJobCompletion(long joinedJobId);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a407b33a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java
index fa3b14b..20d8ba6 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java
@@ -26,7 +26,6 @@ import java.util.TimeZone;
import org.apache.log4j.Logger;
-import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.impl.AsyncJobJoinMapVO;
import org.apache.cloudstack.jobs.JobInfo;
@@ -152,66 +151,67 @@ public class AsyncJobJoinMapDaoImpl extends GenericDaoBase<AsyncJobJoinMapVO, Lo
update(ub, sc, null);
}
- @Override
- public List<Long> wakeupScan() {
- List<Long> standaloneList = new ArrayList<Long>();
-
- Date cutDate = DateUtil.currentGMTTime();
-
- Transaction txn = Transaction.currentTxn();
- PreparedStatement pstmt = null;
- try {
- txn.start();
-
- //
- // performance sensitive processing, do it in plain SQL
- //
- String sql = "UPDATE async_job SET job_pending_signals=? WHERE id IN " +
- "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setInt(1, AsyncJob.Constants.SIGNAL_MASK_WAKEUP);
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(3, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
-
- sql = "UPDATE sync_queue_item SET queue_proc_msid=NULL, queue_proc_number=NULL WHERE content_id IN " +
- "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
-
- sql = "SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- ResultSet rs = pstmt.executeQuery();
- while(rs.next()) {
- standaloneList.add(rs.getLong(1));
- }
- rs.close();
- pstmt.close();
-
- // update for next wake-up
- sql = "UPDATE async_job_join_map SET next_wakeup=DATE_ADD(next_wakeup, INTERVAL wakeup_interval SECOND) WHERE next_wakeup < ? AND expiration > ?";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
-
- txn.commit();
- } catch (SQLException e) {
- s_logger.error("Unexpected exception", e);
- }
-
- return standaloneList;
- }
+// @Override
+// public List<Long> wakeupScan() {
+// List<Long> standaloneList = new ArrayList<Long>();
+//
+// Date cutDate = DateUtil.currentGMTTime();
+//
+// Transaction txn = Transaction.currentTxn();
+// PreparedStatement pstmt = null;
+// try {
+// txn.start();
+//
+// //
+// // performance sensitive processing, do it in plain SQL
+// //
+// String sql = "UPDATE async_job SET job_pending_signals=? WHERE id IN " +
+// "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
+// pstmt = txn.prepareStatement(sql);
+// pstmt.setInt(1, AsyncJob.Constants.SIGNAL_MASK_WAKEUP);
+// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.setString(3, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.executeUpdate();
+// pstmt.close();
+//
+// sql = "UPDATE sync_queue_item SET queue_proc_msid=NULL, queue_proc_number=NULL WHERE content_id IN " +
+// "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
+// pstmt = txn.prepareStatement(sql);
+// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.executeUpdate();
+// pstmt.close();
+//
+// sql = "SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)";
+// pstmt = txn.prepareStatement(sql);
+// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// ResultSet rs = pstmt.executeQuery();
+// while(rs.next()) {
+// standaloneList.add(rs.getLong(1));
+// }
+// rs.close();
+// pstmt.close();
+//
+// // update for next wake-up
+// sql = "UPDATE async_job_join_map SET next_wakeup=DATE_ADD(next_wakeup, INTERVAL wakeup_interval SECOND) WHERE next_wakeup < ? AND expiration > ?";
+// pstmt = txn.prepareStatement(sql);
+// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+// pstmt.executeUpdate();
+// pstmt.close();
+//
+// txn.commit();
+// } catch (SQLException e) {
+// s_logger.error("Unexpected exception", e);
+// }
+//
+// return standaloneList;
+// }
@Override
public List<Long> findJobsToWake(long joinedJobId) {
+ // TODO: We should fix this. We shouldn't be crossing daos in a dao code.
List<Long> standaloneList = new ArrayList<Long>();
Transaction txn = Transaction.currentTxn();
String sql = "SELECT job_id FROM async_job_join_map WHERE join_job_id = ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)";
@@ -227,6 +227,34 @@ public class AsyncJobJoinMapDaoImpl extends GenericDaoBase<AsyncJobJoinMapVO, Lo
}
return standaloneList;
}
+
+ @Override
+ public List<Long> findJobsToWakeBetween(Date cutDate) {
+ List<Long> standaloneList = new ArrayList<Long>();
+ Transaction txn = Transaction.currentTxn();
+ try {
+ String sql = "SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)";
+ PreparedStatement pstmt = txn.prepareStatement(sql);
+ pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ ResultSet rs = pstmt.executeQuery();
+ while (rs.next()) {
+ standaloneList.add(rs.getLong(1));
+ }
+
+ // update for next wake-up
+ sql = "UPDATE async_job_join_map SET next_wakeup=DATE_ADD(next_wakeup, INTERVAL wakeup_interval SECOND) WHERE next_wakeup < ? AND expiration > ?";
+ pstmt = txn.prepareStatement(sql);
+ pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ pstmt.executeUpdate();
+
+ return standaloneList;
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Unable to handle SQL exception", e);
+ }
+
+ }
// @Override
// public List<Long> wakeupByJoinedJobCompletion(long joinedJobId) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a407b33a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
index 9b6aa97..5c3908d 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
@@ -20,8 +20,6 @@ package org.apache.cloudstack.framework.jobs.impl;
import java.io.File;
import java.io.FileInputStream;
import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -819,7 +817,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
SearchCriteria<Long> joinJobSC = JoinJobSearch.create("joinJobId", joinedJobId);
List<Long> result = _joinMapDao.customSearch(joinJobSC, null);
- if (result.size() != 0) {
+ if (result.size() > 0) {
Collections.sort(result);
Long[] ids = result.toArray(new Long[result.size()]);
@@ -849,55 +847,36 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
Transaction txn = Transaction.currentTxn();
PreparedStatement pstmt = null;
- try {
- txn.start();
+ SearchCriteria<Long> sc = JoinJobTimeSearch.create();
+ sc.setParameters("beginTime", DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ sc.setParameters("endTime", DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- //
- // performance sensitive processing, do it in plain SQL
- //
- String sql = "UPDATE async_job SET job_pending_signals=? WHERE id IN " +
- "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setInt(1, AsyncJob.Constants.SIGNAL_MASK_WAKEUP);
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(3, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
-
- sql = "UPDATE sync_queue_item SET queue_proc_msid=NULL, queue_proc_number=NULL WHERE content_id IN " +
- "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
-
- sql = "SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- ResultSet rs = pstmt.executeQuery();
- while (rs.next()) {
- standaloneList.add(rs.getLong(1));
- }
- rs.close();
- pstmt.close();
+ List<Long> result = _joinMapDao.customSearch(sc, null);
+
+ txn.start();
+ if (result.size() > 0) {
+ Collections.sort(result);
+ Long[] ids = result.toArray(new Long[result.size()]);
- // update for next wake-up
- sql = "UPDATE async_job_join_map SET next_wakeup=DATE_ADD(next_wakeup, INTERVAL wakeup_interval SECOND) WHERE next_wakeup < ? AND expiration > ?";
- pstmt = txn.prepareStatement(sql);
- pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- pstmt.executeUpdate();
- pstmt.close();
+ AsyncJobVO job = _jobDao.createForUpdate();
+ job.setPendingSignals(AsyncJob.Constants.SIGNAL_MASK_WAKEUP);
- txn.commit();
- } catch (SQLException e) {
- s_logger.error("Unexpected exception", e);
+ SearchCriteria<AsyncJobVO> sc2 = JobIdsSearch.create("ids", ids);
+ SearchCriteria<SyncQueueItemVO> queueItemsSC = QueueJobIdsSearch.create("contentIds", ids);
+
+ _jobDao.update(job, sc2);
+
+ SyncQueueItemVO item = _queueItemDao.createForUpdate();
+ item.setLastProcessNumber(null);
+ item.setLastProcessMsid(null);
+ _queueItemDao.update(item, queueItemsSC);
}
- return standaloneList;
+ List<Long> wakupIds = _joinMapDao.findJobsToWakeBetween(cutDate);
+ txn.commit();
+
+ return wakupIds;
}
@Override
@@ -925,7 +904,10 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
JoinJobSearch.selectField(JoinJobSearch.entity().getJobId());
JoinJobSearch.done();
- JoinJobTimeSearch
+ JoinJobTimeSearch = _joinMapDao.createSearchBuilder(Long.class);
+ JoinJobTimeSearch.and(JoinJobTimeSearch.entity().getNextWakeupTime(), Op.LT, "beginTime");
+ JoinJobTimeSearch.and(JoinJobTimeSearch.entity().getExpiration(), Op.GT, "endTime");
+ JoinJobTimeSearch.selectField(JoinJobTimeSearch.entity().getJobId()).done();
JobIdsSearch = _jobDao.createSearchBuilder();
JobIdsSearch.and(JobIdsSearch.entity().getId(), Op.IN, "ids").done();
[2/2] git commit: updated refs/heads/vmsync to 422d9b8
Posted by ah...@apache.org.
Disabled ssp plugin because I don't have the db
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/422d9b8d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/422d9b8d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/422d9b8d
Branch: refs/heads/vmsync
Commit: 422d9b8daf281c6c897125d0ff0bf526c67b3f2b
Parents: a407b33
Author: Alex Huang <al...@gmail.com>
Authored: Thu Jun 27 15:43:02 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Thu Jun 27 15:43:02 2013 -0700
----------------------------------------------------------------------
client/tomcatconf/componentContext.xml.in | 2 ++
.../framework/jobs/impl/AsyncJobManagerImpl.java | 11 ++---------
.../src/com/cloud/network/dao/SspCredentialVO.java | 6 +++---
3 files changed, 7 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/422d9b8d/client/tomcatconf/componentContext.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/componentContext.xml.in b/client/tomcatconf/componentContext.xml.in
index 61bca48..8aa3917 100644
--- a/client/tomcatconf/componentContext.xml.in
+++ b/client/tomcatconf/componentContext.xml.in
@@ -73,6 +73,7 @@
<!--
Stratosphere SSP support components
-->
+ <!--
<bean id="sspCredentialDaoImpl" class="com.cloud.network.dao.SspCredentialDaoImpl"/>
<bean id="sspTenantDaoImpl" class="com.cloud.network.dao.SspTenantDaoImpl"/>
<bean id="sspUuidDaoImpl" class="com.cloud.network.dao.SspUuidDaoImpl"/>
@@ -82,6 +83,7 @@
<bean id="StratosphereSsp" class="com.cloud.network.element.SspElement">
<property name="name" value="StratosphereSsp"/>
</bean>
+ -->
<!--
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/422d9b8d/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
index 5c3908d..9879efc 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
@@ -19,15 +19,12 @@ package org.apache.cloudstack.framework.jobs.impl;
import java.io.File;
import java.io.FileInputStream;
-import java.sql.PreparedStatement;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Random;
-import java.util.TimeZone;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
@@ -841,16 +838,12 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
@DB
protected List<Long> wakeupScan() {
- List<Long> standaloneList = new ArrayList<Long>();
-
Date cutDate = DateUtil.currentGMTTime();
-
Transaction txn = Transaction.currentTxn();
- PreparedStatement pstmt = null;
SearchCriteria<Long> sc = JoinJobTimeSearch.create();
- sc.setParameters("beginTime", DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
- sc.setParameters("endTime", DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate));
+ sc.setParameters("beginTime", cutDate);
+ sc.setParameters("endTime", cutDate);
List<Long> result = _joinMapDao.customSearch(sc, null);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/422d9b8d/plugins/network-elements/stratosphere-ssp/src/com/cloud/network/dao/SspCredentialVO.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/stratosphere-ssp/src/com/cloud/network/dao/SspCredentialVO.java b/plugins/network-elements/stratosphere-ssp/src/com/cloud/network/dao/SspCredentialVO.java
index 9511e84..8bc3946 100644
--- a/plugins/network-elements/stratosphere-ssp/src/com/cloud/network/dao/SspCredentialVO.java
+++ b/plugins/network-elements/stratosphere-ssp/src/com/cloud/network/dao/SspCredentialVO.java
@@ -32,7 +32,7 @@ public class SspCredentialVO {
private long id;
@Column(name="data_center_id")
- private long dataCenterId; // Actually, this is zoneId
+ private long zoneId; // Actually, this is zoneId, then name it as zone id.
// XXX: We might want to restrict access to this by cloudstack privileges.
@Column(name="username")
@@ -42,11 +42,11 @@ public class SspCredentialVO {
private String password;
public long getZoneId() {
- return dataCenterId;
+ return zoneId;
}
public void setZoneId(long zoneId) {
- this.dataCenterId = zoneId;
+ this.zoneId = zoneId;
}
public String getUsername() {