summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim <timothyasir@gluster.com>2011-07-07 14:07:10 +0530
committerTim <timothyasir@gluster.com>2011-07-07 14:07:10 +0530
commit3c8399353ca5f81bfb08579a7b5856c3740a6c76 (patch)
treec461089aa731040a159d3d88c12c3deb0d48b62d /src
parent60d53a40bd2b48c8231740559e29bfa7951a2dae (diff)
parentbcef8a077f87b760fd04be847676e7ab9000f6f3 (diff)
Merge remote branch 'upstream/master'
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java34
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java27
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;
+ }
}