diff options
| author | Tim <timothyasir@gluster.com> | 2011-07-07 14:07:10 +0530 |
|---|---|---|
| committer | Tim <timothyasir@gluster.com> | 2011-07-07 14:07:10 +0530 |
| commit | 3c8399353ca5f81bfb08579a7b5856c3740a6c76 (patch) | |
| tree | c461089aa731040a159d3d88c12c3deb0d48b62d /src | |
| parent | 60d53a40bd2b48c8231740559e29bfa7951a2dae (diff) | |
| parent | bcef8a077f87b760fd04be847676e7ab9000f6f3 (diff) | |
Merge remote branch 'upstream/master'
Diffstat (limited to 'src')
2 files changed, 59 insertions, 2 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java index 8d821174..8027473b 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java @@ -19,6 +19,7 @@ package com.gluster.storage.management.client; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -119,14 +120,43 @@ public class GlusterDataModelManager { } logger.info("Starting data sync"); - updateModel(fetchData(clusterName)); - syncInProgress = false; + try { + updateModel(fetchData(clusterName)); + } catch(Exception e) { + logger.error("Error in data sync!", e); + } finally { + syncInProgress = false; + } } + private void updateModel(GlusterDataModel model) { updateVolumes(model); updateGlusterServers(model); updateDiscoveredServers(model); + updateTasks(model); + } + + private void updateTasks(GlusterDataModel newModel) { + List<TaskInfo> oldTasks = model.getCluster().getTaskInfoList(); + List<TaskInfo> newTasks = newModel.getCluster().getTaskInfoList(); + + Set<TaskInfo> addedTasks = GlusterCoreUtil.getAddedEntities(oldTasks, newTasks, true); + for(TaskInfo task : addedTasks) { + addTask(task); + } + + Set<TaskInfo> removedTasks = GlusterCoreUtil.getAddedEntities(newTasks, oldTasks, true); + for(TaskInfo task : removedTasks) { + removeTask(task); + } + + Map<TaskInfo, TaskInfo> modifiedTasks = GlusterCoreUtil.getModifiedEntities(oldTasks, newTasks); + for(Entry<TaskInfo, TaskInfo> entry : modifiedTasks.entrySet()) { + TaskInfo modifiedTask = entry.getKey(); + modifiedTask.copyFrom(entry.getValue()); + updateTask(modifiedTask); + } } private void updateDiscoveredServers(GlusterDataModel newModel) { diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java index d3267ec4..43299863 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java @@ -110,4 +110,31 @@ public class TaskInfo extends Entity { public boolean filter(String filterString, boolean caseSensitive) { return StringUtil.filterString(getDescription() + getStatus().getMessage(), filterString, caseSensitive); } + + public void copyFrom(TaskInfo newTask) { + setName(newTask.getName()); + setDescription(newTask.getDescription()); + setReference(newTask.getReference()); + setStatus(newTask.getStatus()); + setType(newTask.getType()); + setPauseSupported(newTask.getPauseSupported()); + setStopSupported(newTask.getStopSupported()); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof TaskInfo)) { + return false; + } + + TaskInfo newTask = (TaskInfo)obj; + if (newTask.getName().equals(getName()) && newTask.getDescription().equals(getDescription()) + && newTask.getReference().equals(getReference()) && newTask.getStatus().equals(getStatus()) + && newTask.getType() == getType() && newTask.getPauseSupported() == getPauseSupported() + && newTask.getStopSupported() == getStopSupported()) { + return true; + } + + return false; + } } |
