modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
| 72 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
| 46 ++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java
| 10 +
4 files changed, 103 insertions(+), 27 deletions(-)
New commits:
commit d20fd07a539d5e2d420144014c72a4cc826556d6
Author: Joseph Marques <joseph(a)redhat.com>
Date: Wed Sep 15 15:05:20 2010 -0400
further work for creating new group definitions
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java
index b2cbadb..c4a4bca 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java
@@ -51,4 +51,6 @@ public interface ResourceGroupGWTService extends RemoteService {
void updateGroupDefinition(GroupDefinition groupDefinition);
void deleteGroupDefinitions(int[] groupDefinitionIds);
+
+ GroupDefinition createGroupDefinition(GroupDefinition groupDefinition);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
index e5885f4..d96880d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
@@ -22,12 +22,12 @@ import java.util.LinkedHashMap;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
+import com.smartgwt.client.widgets.form.fields.ButtonItem;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.ResetItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.SpinnerItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-import com.smartgwt.client.widgets.form.fields.SubmitItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
@@ -42,6 +42,7 @@ import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -57,7 +58,7 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
private TextItem name;
private TextAreaItem description;
- private RadioGroupItem recursive;
+ private CheckboxItem recursive;
private SelectItem templateSelector;
private TextAreaItem expression;
private SpinnerItem recalculationInterval;
@@ -106,13 +107,12 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
expression.setValue(groupDefinition.getExpression());
expressionStatic.setValue(groupDefinition.getExpression());
- SubmitItem saveButton = new SubmitItem("save", "Save");
+ ButtonItem saveButton = new ButtonItem("save", "Save");
ResetItem resetButton = new ResetItem("reset", "Reset");
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
- save();
- System.out.println("Save is done");
+ createOrUpdate();
}
});
@@ -168,28 +168,46 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
markForRedraw();
}
- public void save() {
- groupDefinition.setName(name.getValue().toString());
- groupDefinition.setDescription(description.getValue().toString());
+ public void createOrUpdate() {
+ groupDefinition.setName(FormUtility.getStringSafely(name));
+ groupDefinition.setDescription(FormUtility.getStringSafely(description));
groupDefinition.setRecursive("Yes".equals(recursive.getValue()));
- groupDefinition.setExpression(expression.getValue().toString());
-
groupDefinition.setRecalculationInterval(Long.valueOf(recalculationInterval.getValue().toString()));
-
- GWTServiceLookup.getResourceGroupService().updateGroupDefinition(groupDefinition,
new AsyncCallback<Void>() {
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failure saving group
definition[id=" + groupDefinitionId + "]",
- caught);
- }
+ groupDefinition.setExpression(FormUtility.getStringSafely(expression));
+
groupDefinition.setRecalculationInterval(Long.valueOf(FormUtility.getStringSafely(recalculationInterval,
"0")));
- @Override
- public void onSuccess(Void result) {
- CoreGUI.getErrorHandler().handleError(
- "Successfully saved group definition[id=" +
groupDefinitionId + "]");
- String listViewLink = LinkManager.getHubGroupDefinitionsLink();
- CoreGUI.goToView(listViewLink.substring(1));
- }
- });
+ final String name = groupDefinition.getName();
+ if (groupDefinitionId == 0) {
+
GWTServiceLookup.getResourceGroupService().createGroupDefinition(groupDefinition,
+ new AsyncCallback<GroupDefinition>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failure to create
group definition '" + name + "'",
+ caught);
+ }
+
+ @Override
+ public void onSuccess(GroupDefinition result) {
+ CoreGUI.getErrorHandler().handleError("Successfully created
group definition '" + name + "'");
+ String listViewLink = LinkManager.getHubGroupDefinitionsLink();
+ CoreGUI.goToView(listViewLink.substring(1));
+ }
+ });
+ } else {
+
GWTServiceLookup.getResourceGroupService().updateGroupDefinition(groupDefinition,
+ new AsyncCallback<Void>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failure saving group
definition '" + name + "'", caught);
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ CoreGUI.getErrorHandler().handleError("Successfully saved
group definition '" + name + "'");
+ String listViewLink = LinkManager.getHubGroupDefinitionsLink();
+ CoreGUI.goToView(listViewLink.substring(1));
+ }
+ });
+ }
}
public void clearFormValues() {
@@ -222,7 +240,7 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
description.setDefaultValue("");
descriptionStatic = new StaticTextItem("descriptionStatic",
"Description");
- recursive = new RadioGroupItem("recursive",
"Recursive");
+ recursive = new CheckboxItem("recursive", "Recursive");
recursive.setValueMap("Yes", "No");
recursive.setDefaultValue("Yes");
recursiveStatic = new StaticTextItem("recursiveStatic",
"Recursive");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java
index ccb4db5..46c965c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java
@@ -78,6 +78,16 @@ public class ResourceGroupGWTServiceImpl extends AbstractGWTServiceImpl
implemen
groupManager.updateResourceGroup(getSessionSubject(), group);
}
+ public GroupDefinition createGroupDefinition(GroupDefinition groupDefinition) {
+ try {
+ GroupDefinition results =
definitionManager.createGroupDefinition(getSessionSubject(), groupDefinition);
+
+ return SerialUtility.prepare(results,
"ResourceGroupService.createGroupDefinition");
+ } catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+
public void updateGroupDefinition(GroupDefinition groupDefinition) {
try {
definitionManager.updateGroupDefinition(getSessionSubject(),
groupDefinition);
commit 733a2e6f9da1ae93ac22ea8e40ccce5ec26139b9
Author: Joseph Marques <joseph(a)redhat.com>
Date: Wed Sep 15 15:04:22 2010 -0400
form utility class
* initial functions will safely get the string value of a form item
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
new file mode 100644
index 0000000..9f118a7
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
@@ -0,0 +1,46 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2010 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.util;
+
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+
+/**
+ * A collection of utility methods for working with SmartGWT {@link DynamicForm}s.
+ *
+ * @author Joseph Marques
+ */
+public class FormUtility {
+ private FormUtility() {
+ // statuc utility class only
+ }
+
+ public static String getStringSafely(FormItem item) {
+ return getStringSafely(item, null);
+ }
+
+ public static String getStringSafely(FormItem item, String defaultValue) {
+ if (item.getValue() == null) {
+ return defaultValue;
+ } else {
+ return item.getValue().toString();
+ }
+ }
+
+}