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@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@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(); + } + } + +}