summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.core
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-06-27 08:38:11 -0700
committerSelvasundaram <selvam@gluster.com>2011-06-28 21:09:31 +0530
commit5c9b6a12aab8e4ea95d404c4312a89ca2b07ddc6 (patch)
treebcc91e2fd0eabc9228bfe72e05e3daf6cac5f1bd /src/com.gluster.storage.management.core
parent8c59a588c903cc1a70ea769e78e0414c69006b35 (diff)
parent4ef7f5b73e733528d818d2bb6987a56cc3b097ce (diff)
Task progress view UI
Diffstat (limited to 'src/com.gluster.storage.management.core')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java1
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/exceptions/GlusterValidationException.java27
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java6
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java19
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Task.java33
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java54
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java (renamed from src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskListResponse.java)34
7 files changed, 124 insertions, 50 deletions
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
index deabbde7..c37869dc 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
@@ -45,6 +45,7 @@ public class RESTConstants {
public static final String TASK_PAUSE = "pause";
public static final String TASK_RESUME = "resume";
public static final String TASK_STOP = "stop";
+ public static final String TASK_COMMIT = "commit";
public static final String TASK_STATUS = "status";
public static final String TASK_DELETE = "delete";
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/exceptions/GlusterValidationException.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/exceptions/GlusterValidationException.java
new file mode 100644
index 00000000..ca5e01f8
--- /dev/null
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/exceptions/GlusterValidationException.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.core.exceptions;
+
+public class GlusterValidationException extends GlusterRuntimeException {
+ private static final long serialVersionUID = 1L;
+
+ public GlusterValidationException(String message) {
+ super(message);
+ }
+}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
index f96116ed..71de5e23 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
@@ -42,4 +42,10 @@ public interface ClusterListener {
public void volumeCreated(Volume volume);
public void volumeDeleted(Volume volume);
+
+ public void taskAdded(TaskInfo taskInfo);
+
+ public void taskRemoved(TaskInfo taskInfo);
+
+ public void taskUpdated(TaskInfo taskInfo);
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
index e226d51b..d3b0e42e 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
@@ -74,6 +74,24 @@ public class DefaultClusterListener implements ClusterListener {
clusterChanged();
}
+
+ @Override
+ public void taskAdded(TaskInfo taskInfo) {
+ clusterChanged();
+ }
+
+
+ @Override
+ public void taskRemoved(TaskInfo taskInfo) {
+ clusterChanged();
+ }
+
+
+ @Override
+ public void taskUpdated(TaskInfo taskInfo) {
+ clusterChanged();
+ }
+
/**
* This method is called by every other event method. Thus, if a view/listener is interested in performing the same
* task on any change happening in the cluster data model, it can simply override this method and implement the
@@ -82,4 +100,5 @@ public class DefaultClusterListener implements ClusterListener {
public void clusterChanged() {
}
+
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Task.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Task.java
index 45eb07ba..b7823c4b 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Task.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Task.java
@@ -20,22 +20,23 @@
*/
package com.gluster.storage.management.core.model;
+import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
+
public abstract class Task {
- public enum TASK_TYPE {
- DISK_FORMAT, BRICK_MIGRATE, VOLUME_REBALANCE
- }
-
public String[] TASK_TYPE_STR = { "Format Disk", "Migrate Brick", "Volume Rebalance" };
- private TaskInfo taskInfo;
+ protected TaskInfo taskInfo;
protected String serverName;
- public Task(TASK_TYPE type, String reference) {
+ public Task(TASK_TYPE type, String reference, String desc, boolean canPause, boolean canStop, boolean canCommit) {
taskInfo = new TaskInfo();
taskInfo.setType(type);
- taskInfo.setId(getTypeStr() + "-" + reference); // construct id
taskInfo.setReference(reference);
+ taskInfo.setDescription(desc);
+
+ // IMPORTANT. This call must be in the end since getId may need to use the values set in above statements
+ taskInfo.setName(getId());
}
public Task(TaskInfo taskInfo) {
@@ -68,16 +69,18 @@ public abstract class Task {
public abstract String getId();
- public abstract TaskInfo start();
+ public abstract void start();
- public abstract TaskInfo resume();
+ public abstract void resume();
- public abstract TaskInfo stop();
+ public abstract void stop();
- public abstract TaskInfo pause();
-
- public abstract TaskInfo status();
-
- public abstract void setTaskDescription();
+ public abstract void pause();
+ public abstract void commit();
+
+ /**
+ * This method should check current status of the task and update it's taskInfo accordingly
+ */
+ public abstract TaskStatus checkStatus();
}
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 d4549146..1ce2fa04 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
@@ -20,24 +20,31 @@
*/
package com.gluster.storage.management.core.model;
-import com.gluster.storage.management.core.model.Task.TASK_TYPE;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.gluster.storage.management.core.utils.StringUtil;
+
+@XmlRootElement
+public class TaskInfo extends Entity {
+ public enum TASK_TYPE {
+ DISK_FORMAT, BRICK_MIGRATE, VOLUME_REBALANCE
+ }
-public class TaskInfo extends Status {
- private String id;
private TASK_TYPE type;
private String reference;
private String description;
- private Boolean canPause;
- private Boolean canStop;
+ private Boolean pauseSupported;
+ private Boolean stopSupported;
+ private Boolean commitSupported;
private TaskStatus status;
-
- public String getId() {
- return id;
+ public TaskInfo() {
}
- public void setId(String id) {
- this.id = id;
+ @XmlElement(name="id")
+ public String getName() {
+ return super.getName();
}
public TASK_TYPE getType() {
@@ -72,20 +79,35 @@ public class TaskInfo extends Status {
this.status = status;
}
- public Boolean getCanPause() {
- return canPause;
+ public Boolean canPause() {
+ return pauseSupported;
}
public void setCanPause(Boolean canPause) {
- this.canPause = canPause;
+ this.pauseSupported = canPause;
}
- public Boolean getCanStop() {
- return canStop;
+ public Boolean canStop() {
+ return stopSupported;
}
public void setCanStop(Boolean canStop) {
- this.canStop = canStop;
+ this.stopSupported = canStop;
+ }
+
+ public Boolean canCommit() {
+ return this.commitSupported;
+ }
+
+ public void setCanCommit(Boolean canCommit) {
+ this.commitSupported = canCommit;
}
+ /* (non-Javadoc)
+ * @see com.gluster.storage.management.core.model.Entity#filter(java.lang.String, boolean)
+ */
+ @Override
+ public boolean filter(String filterString, boolean caseSensitive) {
+ return StringUtil.filterString(getDescription() + getStatus().getMessage(), filterString, caseSensitive);
+ }
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
index 2637b197..0ab27c35 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskListResponse.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
@@ -20,35 +20,31 @@
*/
package com.gluster.storage.management.core.response;
-import java.util.ArrayList;
import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
-@XmlRootElement
-public class TaskListResponse extends AbstractResponse {
- private List<TaskInfo> taskList = new ArrayList<TaskInfo>();
- private Status status;
-
- public Status getStatus() {
- return status;
- }
+@XmlRootElement(name = "tasks")
+public class TaskInfoListResponse {
+ private List<TaskInfo> taskInfoList;
- public void setStatus(Status status) {
- this.status = status;
- }
+ public TaskInfoListResponse() {
+ }
- public void setData(List<TaskInfo> taskList) {
- this.taskList.clear();
- this.taskList.addAll(taskList);
+ public TaskInfoListResponse(List<TaskInfo> taskInfoList) {
+ this.taskInfoList = taskInfoList;
+ }
+
+ @XmlElement(name="task", type=TaskInfo.class)
+ public List<TaskInfo> getTaskList() {
+ return taskInfoList;
}
- @Override
- public Object getData() {
- return this.taskList;
+ public void setTaskList(List<TaskInfo> taskInfoList) {
+ this.taskInfoList = taskInfoList;
}
}