[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java | 296 ++++++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java | 54 +
2 files changed, 291 insertions(+), 59 deletions(-)
New commits:
commit 3c15cf4358a7db142a39e773a91c25b69833a918
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Nov 19 19:40:39 2010 -0500
finish permissions editor, with the exception of i18n
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java
index 3ac6adf..b7c8fce 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java
@@ -20,6 +20,7 @@ package org.rhq.enterprise.gui.coregui.client.admin.roles;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
@@ -27,22 +28,28 @@ import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.core.RefDataClass;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.ListGridEditEvent;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.util.JSOHelper;
+import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
+
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.ChangeEvent;
-import com.smartgwt.client.widgets.grid.events.ChangeHandler;
+import com.smartgwt.client.widgets.grid.events.ChangedEvent;
+import com.smartgwt.client.widgets.grid.events.ChangedHandler;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.authz.Role;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.Messages;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVStack;
/**
* A complex form item for editing the set of RHQ {@link Permission permission}s associated with an RHQ
@@ -87,14 +94,26 @@ public class PermissionsItem extends CanvasItem {
public void redraw() {
this.selectedPermissions = getValueAsPermissionSet();
- // Update the value of the authorized field for each row of the table.
- ListGridRecord[] records = getCanvas().getGlobalPermissionsGrid().getRecords();
- for (ListGridRecord record : records) {
+ // Update the value of the authorized fields in each row of the grids.
+
+ ListGridRecord[] globalPermissionRecords = getCanvas().getGlobalPermissionsGrid().getRecords();
+ for (ListGridRecord record : globalPermissionRecords) {
String permissionName = record.getAttribute("name");
Permission permission = Permission.valueOf(permissionName);
record.setAttribute("authorized", this.selectedPermissions.contains(permission));
}
+ ListGridRecord[] resourcePermissionRecords = getCanvas().getResourcePermissionsGrid().getRecords();
+ for (ListGridRecord record : resourcePermissionRecords) {
+ String readPermissionName = record.getAttribute("readName");
+ Permission readPermission = Permission.valueOf(readPermissionName);
+ record.setAttribute("readAuthorized", this.selectedPermissions.contains(readPermission));
+
+ String writePermissionName = record.getAttribute("writeName");
+ Permission writePermission = Permission.valueOf(writePermissionName);
+ record.setAttribute("writeAuthorized", this.selectedPermissions.contains(writePermission));
+ }
+
super.redraw();
}
@@ -104,8 +123,9 @@ public class PermissionsItem extends CanvasItem {
return RolesDataSource.toPermissionSet(permissionRecords);
}
- private ListGrid buildGlobalPermissionsGrid() {
- ListGrid globalPermissionsGrid = new ListGrid();
+ private ListGrid createGlobalPermissionsGrid() {
+ ListGrid grid = new ListGrid();
+ grid.setHeight(115);
// TODO: Add table title.
ListGridField iconField = new ListGridField("icon", " ", 40);
@@ -121,53 +141,178 @@ public class PermissionsItem extends CanvasItem {
ListGridField displayNameField = new ListGridField("displayName", "Name", 120);
- ListGridField descriptionField = new ListGridField("description", "Description", 370);
+ ListGridField descriptionField = new ListGridField("description", "Description", 450);
descriptionField.setWrap(true);
- final ListGridField authorizedField = new ListGridField("authorized", "Authorized?", 65);
- authorizedField.setType(ListGridFieldType.BOOLEAN);
- if (!this.isReadOnly) {
- authorizedField.setCanEdit(true);
- final Record[] recordBeingEdited = {null};
- authorizedField.addRecordClickHandler(new RecordClickHandler() {
- public void onRecordClick(RecordClickEvent event) {
- recordBeingEdited[0] = event.getRecord();
- }
- });
- authorizedField.addChangeHandler(new ChangeHandler() {
- public void onChange(ChangeEvent event) {
- Boolean authorized = (Boolean)event.getValue();
- String permissionName = recordBeingEdited[0].getAttribute("name");
- Permission permission = Permission.valueOf(permissionName);
- updatePermissions(authorized, permission);
+ final ListGridField authorizedField = createAuthorizedField("authorized", "Authorized?", "name", grid);
- // Let our parent role editor know the permissions have been changed, so it can update the
- // enablement of its Save and Reset buttons.
- PermissionsItem.this.roleEditView.onItemChanged();
- }
- });
- }
-
- globalPermissionsGrid.setFields(iconField, nameField, displayNameField, descriptionField, authorizedField);
+ grid.setFields(iconField, nameField, displayNameField, descriptionField, authorizedField);
List<ListGridRecord> records = new ArrayList<ListGridRecord>();
- ListGridRecord record = createSimplePermissionRecord("Manage Security", "global/Locked", Permission.MANAGE_SECURITY,
+ ListGridRecord record = createGlobalPermissionRecord("Manage Security", "global/Locked", Permission.MANAGE_SECURITY,
"can create, update, or delete users and roles (viewing is implied for everyone)");
records.add(record);
- record = createSimplePermissionRecord("Manage Inventory", "subsystems/inventory/Inventory", Permission.MANAGE_INVENTORY,
+ record = createGlobalPermissionRecord("Manage Inventory", "subsystems/inventory/Inventory", Permission.MANAGE_INVENTORY,
"has all Resource permissions, as described below, for all Resources; can create, update, and delete groups; " +
"and can import auto-discovered or manually discovered Resources");
records.add(record);
- record = createSimplePermissionRecord("Manage Settings", "subsystems/configure/Configure", Permission.MANAGE_SETTINGS,
+ record = createGlobalPermissionRecord("Manage Settings", "subsystems/configure/Configure", Permission.MANAGE_SETTINGS,
"can modify the RHQ Server configuration and perform any Server-related functionality");
records.add(record);
- record = createSimplePermissionRecord("Manage Bundles", "subsystems/bundle/Bundle", Permission.MANAGE_BUNDLE,
+ record = createGlobalPermissionRecord("Manage Bundles", "subsystems/bundle/Bundle", Permission.MANAGE_BUNDLE,
"can create, update, or delete provisioning bundles (viewing is implied for everyone)");
records.add(record);
- globalPermissionsGrid.setData(records.toArray(new ListGridRecord[records.size()]));
+ grid.setData(records.toArray(new ListGridRecord[records.size()]));
+
+ return grid;
+ }
+
+ private ListGrid createResourcePermissionsGrid() {
+ ListGrid grid = new ListGrid();
+ grid.setHeight(290);
+ // TODO: Add table title.
+
+ ListGridField iconField = new ListGridField("icon", " ", 40);
+ iconField.setShowDefaultContextMenu(false);
+ iconField.setAlign(Alignment.CENTER);
+ iconField.setType(ListGridFieldType.IMAGE);
+ iconField.setImageURLSuffix("_16.png");
+ iconField.setImageWidth(16);
+ iconField.setImageHeight(16);
+
+ ListGridField readNameField = new ListGridField("readName");
+ readNameField.setHidden(true);
+
+ ListGridField writeNameField = new ListGridField("writeName");
+ writeNameField.setHidden(true);
+
+ ListGridField displayNameField = new ListGridField("displayName", "Name", 120);
+
+ ListGridField descriptionField = new ListGridField("description", "Description", 450);
+ descriptionField.setWrap(true);
+
+ ListGridField readField = createAuthorizedField("readAuthorized", "Read?", "readName", grid);
+ ListGridField writeField = createAuthorizedField("writeAuthorized", "Write?", "writeName", grid);
+
+ grid.setFields(iconField, readNameField, displayNameField, descriptionField, readField, writeField);
+
+ List<ListGridRecord> records = new ArrayList<ListGridRecord>();
+
+ ListGridRecord record = createResourcePermissionRecord("Inventory", "subsystems/inventory/Inventory",
+ Permission.VIEW_RESOURCE,
+ "view Resource properties (name, description, version, etc.), connection settings, and connection settings history (IMPLIED)",
+ Permission.MODIFY_RESOURCE,
+ "update Resource name, version, description, and connection settings; delete connection settings history items");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Manage Measurements", "subsystems/monitor/Monitor",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.MANAGE_MEASUREMENTS,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Manage Alerts", "subsystems/alert/Alerts",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.MANAGE_ALERTS,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Configure", "subsystems/configure/Configure",
+ Permission.CONFIGURE_READ,
+ "TODO",
+ Permission.CONFIGURE_WRITE,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Control", "subsystems/control/Operation",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.CONTROL,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Manage Events", "subsystems/event/Events",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.MANAGE_EVENTS,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Manage Content", "subsystems/content/Content",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.MANAGE_CONTENT,
+ "TODO");
+ records.add(record);
+
+ record = createResourcePermissionRecord("Create Child Resources", "subsystems/inventory/Inventory",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.CREATE_CHILD_RESOURCES,
+ "TODO");
+ records.add(record);
- return globalPermissionsGrid;
+ record = createResourcePermissionRecord("Delete Child Resources", "subsystems/inventory/Inventory",
+ Permission.VIEW_RESOURCE,
+ "TODO (IMPLIED)",
+ Permission.DELETE_RESOURCE,
+ "TODO");
+ records.add(record);
+
+ grid.setData(records.toArray(new ListGridRecord[records.size()]));
+
+ return grid;
+ }
+
+ private ListGridField createAuthorizedField(String name, String title, final String nameField, final ListGrid grid) {
+ final ListGridField authorizedField = new ListGridField(name, title, 65);
+
+ // Show yes/no rather than true/false.
+ LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>();
+ valueMap.put(Boolean.TRUE.toString(), MSG.common_val_yes_lower());
+ valueMap.put(Boolean.FALSE.toString(), MSG.common_val_no_lower());
+ authorizedField.setValueMap(valueMap);
+
+ if (!this.isReadOnly) {
+ authorizedField.setCanEdit(true);
+ grid.setEditEvent(ListGridEditEvent.CLICK);
+ CheckboxItem editor = new CheckboxItem();
+ authorizedField.setEditorType(editor);
+ final Record[] recordBeingEdited = {null};
+ authorizedField.addRecordClickHandler(new RecordClickHandler() {
+ public void onRecordClick(RecordClickEvent event) {
+ recordBeingEdited[0] = event.getRecord();
+ }
+ });
+ authorizedField.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent event) {
+ Boolean authorized = (Boolean)event.getValue();
+ int recordNum = event.getRowNum();
+ ListGridRecord record = grid.getRecord(recordNum);
+ String permissionName = record.getAttribute(nameField);
+ Permission permission = Permission.valueOf(permissionName);
+ if (permission == Permission.VIEW_RESOURCE) {
+ event.getItem().setValue(true);
+ event.getItem().disable();
+ String permissionDisplayName = record.getAttribute("displayName");
+ Message message = new Message("Read access for the " + permissionDisplayName
+ + " permission is implied and cannot be disabled.", Message.Severity.Warning);
+ CoreGUI.getMessageCenter().notify(message);
+ } else {
+ updatePermissions(authorized, permission);
+
+ // Let our parent role editor know the permissions have been changed, so it can update the
+ // enablement of its Save and Reset buttons.
+ PermissionsItem.this.roleEditView.onItemChanged();
+ }
+ }
+ });
+ }
+
+ return authorizedField;
}
private void updatePermissions(Boolean authorized, Permission permission) {
@@ -181,7 +326,7 @@ public class PermissionsItem extends CanvasItem {
getForm().setValue(getName(), permissionRecords);
}
- private ListGridRecord createSimplePermissionRecord(String displayName, String icon, Permission globalPermission,
+ private ListGridRecord createGlobalPermissionRecord(String displayName, String icon, Permission globalPermission,
String description) {
ListGridRecord record = new ListGridRecord();
record.setAttribute("displayName", displayName);
@@ -189,20 +334,22 @@ public class PermissionsItem extends CanvasItem {
record.setAttribute("name", globalPermission.name());
record.setAttribute("description", description);
record.setAttribute("authorized", this.selectedPermissions.contains(globalPermission));
+
return record;
}
- private ListGridRecord createReadWritePermissionRecord(String displayName, Permission readPermission,
+ private ListGridRecord createResourcePermissionRecord(String displayName, String icon, Permission readPermission,
String readDescription, Permission writePermission,
String writeDescription) {
ListGridRecord record = new ListGridRecord();
record.setAttribute("displayName", displayName);
+ record.setAttribute("icon", icon);
record.setAttribute("readName", readPermission.name());
record.setAttribute("readAuthorized", this.selectedPermissions.contains(readPermission));
- record.setAttribute("readDescription", readDescription);
+ record.setAttribute("description", "<b>Read:</b> " + readDescription + "<br/><b>Write:</b> " + writeDescription);
record.setAttribute("writeName", writePermission.name());
record.setAttribute("writeAuthorized", this.selectedPermissions.contains(writePermission));
- record.setAttribute("writeDescription", writeDescription);
+
return record;
}
@@ -210,34 +357,65 @@ public class PermissionsItem extends CanvasItem {
return this.selectedPermissions;
}
- private static ListGridRecord[] convertToListGridRecordArray(JavaScriptObject nativeArray) {
- if (nativeArray == null) {
- return new ListGridRecord[]{};
+ private static ListGridRecord[] convertToListGridRecordArray(JavaScriptObject jsObject) {
+ if (jsObject == null) {
+ return new ListGridRecord[0];
}
- JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray);
- ListGridRecord[] objects = new ListGridRecord[componentsj.length];
- for (int i = 0; i < componentsj.length; i++) {
- JavaScriptObject componentJS = componentsj[i];
- ListGridRecord obj = (ListGridRecord) RefDataClass.getRef(componentJS);
- if (obj == null) obj = new ListGridRecord(componentJS);
- objects[i] = obj;
+ JavaScriptObject[] jsArray = JSOHelper.toArray(jsObject);
+ ListGridRecord[] records = new ListGridRecord[jsArray.length];
+ for (int i = 0; i < jsArray.length; i++) {
+ JavaScriptObject jsArrayItem = jsArray[i];
+ ListGridRecord record = (ListGridRecord) RefDataClass.getRef(jsArrayItem);
+ if (record == null) {
+ record = new ListGridRecord(jsArrayItem);
+ }
+ records[i] = record;
}
- return objects;
+ return records;
}
- class PermissionsEditor extends LocatableVLayout {
+ class PermissionsEditor extends LocatableVStack {
private ListGrid globalPermissionsGrid;
+ private ListGrid resourcePermissionsGrid;
PermissionsEditor() {
super(roleEditView.extendLocatorId("Permissions"));
setWidth100();
- setHeight(350);
- this.globalPermissionsGrid = buildGlobalPermissionsGrid();
- addMember(globalPermissionsGrid);
+ setHeight(500);
+
+ VLayout spacer = createVerticalSpacer(13);
+ addMember(spacer);
+
+ Label globalPermissionsHeader = new Label("<h4>Global Permissions</h4>");
+ globalPermissionsHeader.setHeight(17);
+ addMember(globalPermissionsHeader);
+
+ this.globalPermissionsGrid = createGlobalPermissionsGrid();
+ addMember(this.globalPermissionsGrid);
+
+ spacer = createVerticalSpacer(13);
+ addMember(spacer);
+
+ Label resourcePermissionsHeader = new Label("<h4>Resource Permissions</h4>");
+ resourcePermissionsHeader.setHeight(17);
+ addMember(resourcePermissionsHeader);
+
+ this.resourcePermissionsGrid = createResourcePermissionsGrid();
+ addMember(this.resourcePermissionsGrid);
+ }
+
+ private VLayout createVerticalSpacer(int height) {
+ VLayout spacer = new VLayout();
+ spacer.setHeight(height);
+ return spacer;
}
public ListGrid getGlobalPermissionsGrid() {
- return globalPermissionsGrid;
+ return this.globalPermissionsGrid;
+ }
+
+ public ListGrid getResourcePermissionsGrid() {
+ return this.resourcePermissionsGrid;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
new file mode 100644
index 0000000..bb9093b
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVStack.java
@@ -0,0 +1,54 @@
+package org.rhq.enterprise.gui.coregui.client.util.selenium;
+
+import com.smartgwt.client.widgets.layout.VStack;
+
+/**
+ * Wrapper for a SmartGWT {@link VStack} that sets the ID for use with Selenium scLocators.
+ *
+ * @author Jay Shaughnessy
+ */
+public class LocatableVStack extends VStack implements Locatable {
+
+ private String locatorId;
+
+ /**
+ * <pre>
+ * ID Format: "simpleClassname_locatorId"
+ * </pre>
+ * @param locatorId not null or empty.
+ */
+ public LocatableVStack(String locatorId) {
+ super();
+ init(locatorId);
+ }
+
+ /**
+ * <pre>
+ * ID Format: "simpleClassname_locatorId"
+ * </pre>
+ * @param locatorId not null or empty.
+ * @param membersMargin
+ */
+ public LocatableVStack(String locatorId, int membersMargin) {
+ super(membersMargin);
+ init(locatorId);
+ }
+
+ private void init(String locatorId) {
+ this.locatorId = locatorId;
+ SeleniumUtility.setID(this, locatorId);
+ }
+
+ public String getLocatorId() {
+ return locatorId;
+ }
+
+ public String extendLocatorId(String extension) {
+ return this.locatorId + "_" + extension;
+ }
+
+ public void destroyMembers() {
+ SeleniumUtility.destroyMembers(this);
+ }
+
+}
13 years, 6 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/BooleanCellFormatter.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
New commits:
commit 239932591390aebcd56899b58fd7bfbb344146b4
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Nov 19 16:56:06 2010 -0500
show icons for enabled column, not yes/no words
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/BooleanCellFormatter.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/BooleanCellFormatter.java
index 0977691..7f22af9 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/BooleanCellFormatter.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/BooleanCellFormatter.java
@@ -14,12 +14,16 @@ import org.rhq.enterprise.gui.coregui.client.Messages;
public class BooleanCellFormatter implements CellFormatter {
private static final Messages MSG = CoreGUI.getMessages();
+ private static String RED = "/images/icons/availability_red_16.png";
+ private static String GREEN = "/images/icons/availability_green_16.png";
+ private static String GREY = "/images/icons/availability_grey_16.png";
+
public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
String result;
if (value == null) {
- result = "";
+ result = "<img src=\"" + GREY + "\"/>";
} else if (value instanceof Boolean) {
- result = ((Boolean) value) ? MSG.common_val_yes_lower() : MSG.common_val_no_lower();
+ result = ((Boolean) value) ? "<img src=\"" + GREEN + "\"/>" : "<img src=\"" + RED + "\"/>";
} else {
throw new IllegalArgumentException("value parameter is not a Boolean.");
}
13 years, 6 months
[rhq] modules/core modules/enterprise
by Jay Shaughnessy
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java | 3 +++
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java | 6 +++++-
modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java | 8 +++++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 4 ++++
4 files changed, 17 insertions(+), 4 deletions(-)
New commits:
commit 9aeb5a00158b7d24dbb706522d8f8bb35e03bb07
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Nov 19 15:07:27 2010 -0500
[BZ 655187]
I believe in the past Resource uninventory was using hibernate cascade
to remove bundle resource deployments. At some point in the data model
changes it looks like I took the relation off of Resource and did not
add the needed remove logic.
I've now added to bulk delete for efficient removal of BundleResourceDeployment
and BundleResourceDeploymentHistory.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
index 5638dc9..1bc3c25 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
@@ -58,6 +58,8 @@ import org.rhq.core.domain.resource.Resource;
*/
@Entity
@NamedQueries( {
+ @NamedQuery(name = BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, query = "DELETE FROM BundleResourceDeployment brd "
+ + " WHERE brd.resource.id IN ( :resourceIds ) )"),
@NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH, query = "SELECT brd FROM BundleResourceDeployment brd WHERE brd.bundleDeployment.id = :id "),
@NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_RESOURCE_ID_NO_FETCH, query = "SELECT brd FROM BundleResourceDeployment brd WHERE brd.resource.id = :id ") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_RES_DEPLOY_ID_SEQ")
@@ -66,6 +68,7 @@ import org.rhq.core.domain.resource.Resource;
public class BundleResourceDeployment implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES = "BundleResourceDeployment.deleteByResources";
public static final String QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH = "BundleResourceDeployment.findByDeploymentIdNoFetch";
public static final String QUERY_FIND_BY_RESOURCE_ID_NO_FETCH = "BundleResourceDeployment.findByResourceIdNoFetch";
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
index d528f8b..eb00b26 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
@@ -48,7 +48,10 @@ import javax.xml.bind.annotation.XmlType;
* @author Jay Shaughnessy
*/
@Entity
-@NamedQueries( { @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query = "SELECT brdh FROM BundleResourceDeploymentHistory brdh") //
+@NamedQueries( {
+ @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, query = "DELETE FROM BundleResourceDeploymentHistory brdh "
+ + " WHERE brdh.resourceDeployment IN ( SELECT brd FROM BundleResourceDeployment brd WHERE brd.resource.id IN ( :resourceIds ) ) )"),
+ @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query = "SELECT brdh FROM BundleResourceDeploymentHistory brdh") //
})
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_RES_DEP_HIST_ID_SEQ")
@Table(name = "RHQ_BUNDLE_RES_DEP_HIST")
@@ -56,6 +59,7 @@ import javax.xml.bind.annotation.XmlType;
public class BundleResourceDeploymentHistory implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES = "BundleResourceDeploymentHistory.deleteByResources";
public static final String QUERY_FIND_ALL = "BundleResourceDeploymentHistory.findAll";
@Column(name = "ID", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
index 2683561..4d51488 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
@@ -81,7 +81,7 @@ import org.rhq.core.domain.util.Summary;
* Represents a JON managed resource (i.e. a platform, server, or service).
*/
@Entity
-@NamedQueries({
+@NamedQueries( {
@NamedQuery(name = Resource.QUERY_FIND_PROBLEM_RESOURCES_ALERT_ADMIN, query = "" //
+ " SELECT DISTINCT new org.rhq.core.domain.resource.composite.ProblemResourceComposite"
+ " ( "
@@ -1025,8 +1025,10 @@ public class Resource implements Comparable<Resource>, Serializable {
@ManyToOne(fetch = FetchType.LAZY)
private ProductVersion productVersion;
- // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
- // private List<BundleResourceDeployment> resourceDeployments = new ArrayList<BundleResourceDeployment>();
+ // not currently needed, but could be added if we find a need to get deployment info via the resource
+ // bulk delete (already being done)
+ // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY)
+ // private List<BundleResourceDeployment> resourceDeployments = new ArrayList<BundleResourceDeployment>();
@ManyToMany(mappedBy = "resources", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private Set<Tag> tags;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 32a7792..605b817 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -56,6 +56,8 @@ import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.alert.notification.AlertNotificationLog;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
+import org.rhq.core.domain.bundle.BundleResourceDeployment;
+import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
import org.rhq.core.domain.configuration.PluginConfigurationUpdate;
import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
import org.rhq.core.domain.content.ContentServiceRequest;
@@ -455,6 +457,8 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
ResourceError.QUERY_DELETE_BY_RESOURCES, //
Event.DELETE_BY_RESOURCES, //
EventSource.QUERY_DELETE_BY_RESOURCES, //
+ BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, // resource deployment history BEFORE resource deployment
+ BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, //
PackageInstallationStep.QUERY_DELETE_BY_RESOURCES, // steps BEFORE installed package history
InstalledPackageHistory.QUERY_DELETE_BY_RESOURCES, // history BEFORE installed packages & content service requests
InstalledPackage.QUERY_DELETE_BY_RESOURCES, //
13 years, 6 months
[rhq] modules/core modules/enterprise
by ips
modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java | 117 ----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java | 244 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java | 25 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java | 59 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java | 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java | 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2
9 files changed, 299 insertions(+), 172 deletions(-)
New commits:
commit b3ad0fe1765c45d00e790a134db17934f7fe5236
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Nov 19 15:00:30 2010 -0500
add ability to view/edit global permissions to role edit view
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
index d34136b..6156cd4 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
@@ -49,10 +49,10 @@ public enum Permission {
"can C/R/U/D all resources, groups and can import auto-discovered resources"), // 1
/**
- * can modify the JON Server configuration and perform any server-related functionality
+ * can modify the RHQ Server configuration and perform any server-related functionality
*/
MANAGE_SETTINGS(Target.GLOBAL, "Manage Settings",
- "can modify the JON Server configuration and perform any server-related functionality"), // 2
+ "can modify the RHQ Server configuration and perform any server-related functionality"), // 2
/* ========= Resource Permissions ========= */
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java
deleted file mode 100644
index 589b0e3..0000000
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.admin.roles;
-
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Set;
-
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.events.ItemChangedEvent;
-import com.smartgwt.client.widgets.form.events.ItemChangedHandler;
-import com.smartgwt.client.widgets.form.fields.CanvasItem;
-import com.smartgwt.client.widgets.form.fields.CheckboxItem;
-import com.smartgwt.client.widgets.form.fields.FormItem;
-import com.smartgwt.client.widgets.form.fields.HeaderItem;
-
-import org.rhq.core.domain.authz.Permission;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.Messages;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
-
-/**
- * @author Greg Hinkle
- */
-public class PermissionEditorView extends CanvasItem {
- private static Messages MSG = CoreGUI.getMessages();
-
- private Set<Permission> selectedPermissions = EnumSet.noneOf(Permission.class);
-
- private DynamicForm form;
- private RoleEditView roleEditView;
-
- public PermissionEditorView(String locatorId, String name, String title, RoleEditView roleEditView) {
- super(name, title);
- this.roleEditView = roleEditView;
-
- setCanvas(buildForm(locatorId));
- }
-
- public Canvas buildForm(String locatorId) {
- this.form = new LocatableDynamicForm(locatorId);
- this.form.setNumCols(8);
- this.form.setTitleWidth(80);
- this.form.setPadding(6);
-
- List<FormItem> items = new ArrayList<FormItem>();
-
- HeaderItem globalPermsHeader = new HeaderItem("globalPermissions", MSG.view_adminRoles_globalPerms());
- globalPermsHeader.setValue(MSG.view_adminRoles_globalPerms());
- items.add(globalPermsHeader);
- for (Permission permission : Permission.GLOBAL_ALL) {
- CheckboxItem checkboxItem = new CheckboxItem(permission.name(), permission.name());
- items.add(checkboxItem);
- }
-
- HeaderItem resourcePermsHeader = new HeaderItem("resourcePermissions", MSG.view_adminRoles_resourcePerms());
- resourcePermsHeader.setValue(MSG.view_adminRoles_resourcePerms());
- items.add(resourcePermsHeader);
- for (Permission permission : Permission.RESOURCE_ALL) {
- CheckboxItem checkboxItem = new CheckboxItem(permission.name(), permission.name());
- if (permission == Permission.VIEW_RESOURCE) {
- checkboxItem.setDisabled(true);
- checkboxItem.setValue(Boolean.TRUE);
- }
- items.add(checkboxItem);
- }
-
- form.setItems(items.toArray(new FormItem[items.size()]));
-
- return form;
- }
-
- public void setPermissions(Set<Permission> permissions) {
- this.selectedPermissions = permissions;
- for (Permission p : Permission.values()) {
- form.setValue(p.name(), permissions.contains(p));
- }
-
- form.addItemChangedHandler(new ItemChangedHandler() {
- public void onItemChanged(ItemChangedEvent itemChangedEvent) {
- for (Permission p : Permission.values()) {
- if ((Boolean) form.getValue(p.name())) {
- selectedPermissions.add(p);
- } else {
- selectedPermissions.remove(p);
- }
- }
- roleEditView.onItemChanged();
- }
- });
-
- form.markForRedraw();
- }
-
- public Set<Permission> getPermissions() {
- return selectedPermissions;
- }
-
-}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java
new file mode 100644
index 0000000..3ac6adf
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsItem.java
@@ -0,0 +1,244 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.admin.roles;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.google.gwt.core.client.JavaScriptObject;
+import com.smartgwt.client.core.RefDataClass;
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.util.JSOHelper;
+import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.ChangeEvent;
+import com.smartgwt.client.widgets.grid.events.ChangeHandler;
+import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+
+import org.rhq.core.domain.authz.Permission;
+import org.rhq.core.domain.authz.Role;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.Messages;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+/**
+ * A complex form item for editing the set of RHQ {@link Permission permission}s associated with an RHQ
+ * {@link Role role}.
+ *
+ * @author Ian Springer
+ */
+// TODO: i18n
+public class PermissionsItem extends CanvasItem {
+
+ private static Messages MSG = CoreGUI.getMessages();
+
+ private Set<Permission> selectedPermissions;
+
+ private RoleEditView roleEditView;
+ private boolean isReadOnly;
+
+ public PermissionsItem(RoleEditView roleEditView) {
+ super(RolesDataSource.Field.PERMISSIONS, "Permissions");
+
+ this.selectedPermissions = new HashSet<Permission>();
+ this.roleEditView = roleEditView;
+ this.isReadOnly = this.roleEditView.isReadOnly();
+ }
+
+ @Override
+ protected PermissionsEditor createCanvas() {
+ return new PermissionsEditor();
+ }
+
+ @Override
+ public PermissionsEditor getCanvas() {
+ PermissionsEditor permissionsEditor = (PermissionsEditor)super.getCanvas();
+ if (permissionsEditor == null) {
+ permissionsEditor = createCanvas();
+ setCanvas(permissionsEditor);
+ }
+ return permissionsEditor;
+ }
+
+ @Override
+ public void redraw() {
+ this.selectedPermissions = getValueAsPermissionSet();
+
+ // Update the value of the authorized field for each row of the table.
+ ListGridRecord[] records = getCanvas().getGlobalPermissionsGrid().getRecords();
+ for (ListGridRecord record : records) {
+ String permissionName = record.getAttribute("name");
+ Permission permission = Permission.valueOf(permissionName);
+ record.setAttribute("authorized", this.selectedPermissions.contains(permission));
+ }
+
+ super.redraw();
+ }
+
+ private Set<Permission> getValueAsPermissionSet() {
+ Object nativeArray = getValue();
+ ListGridRecord[] permissionRecords = convertToListGridRecordArray((JavaScriptObject)nativeArray);
+ return RolesDataSource.toPermissionSet(permissionRecords);
+ }
+
+ private ListGrid buildGlobalPermissionsGrid() {
+ ListGrid globalPermissionsGrid = new ListGrid();
+ // TODO: Add table title.
+
+ ListGridField iconField = new ListGridField("icon", " ", 40);
+ iconField.setShowDefaultContextMenu(false);
+ iconField.setAlign(Alignment.CENTER);
+ iconField.setType(ListGridFieldType.IMAGE);
+ iconField.setImageURLSuffix("_16.png");
+ iconField.setImageWidth(16);
+ iconField.setImageHeight(16);
+
+ ListGridField nameField = new ListGridField("name");
+ nameField.setHidden(true);
+
+ ListGridField displayNameField = new ListGridField("displayName", "Name", 120);
+
+ ListGridField descriptionField = new ListGridField("description", "Description", 370);
+ descriptionField.setWrap(true);
+
+ final ListGridField authorizedField = new ListGridField("authorized", "Authorized?", 65);
+ authorizedField.setType(ListGridFieldType.BOOLEAN);
+ if (!this.isReadOnly) {
+ authorizedField.setCanEdit(true);
+ final Record[] recordBeingEdited = {null};
+ authorizedField.addRecordClickHandler(new RecordClickHandler() {
+ public void onRecordClick(RecordClickEvent event) {
+ recordBeingEdited[0] = event.getRecord();
+ }
+ });
+ authorizedField.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ Boolean authorized = (Boolean)event.getValue();
+ String permissionName = recordBeingEdited[0].getAttribute("name");
+ Permission permission = Permission.valueOf(permissionName);
+ updatePermissions(authorized, permission);
+
+ // Let our parent role editor know the permissions have been changed, so it can update the
+ // enablement of its Save and Reset buttons.
+ PermissionsItem.this.roleEditView.onItemChanged();
+ }
+ });
+ }
+
+ globalPermissionsGrid.setFields(iconField, nameField, displayNameField, descriptionField, authorizedField);
+
+ List<ListGridRecord> records = new ArrayList<ListGridRecord>();
+ ListGridRecord record = createSimplePermissionRecord("Manage Security", "global/Locked", Permission.MANAGE_SECURITY,
+ "can create, update, or delete users and roles (viewing is implied for everyone)");
+ records.add(record);
+ record = createSimplePermissionRecord("Manage Inventory", "subsystems/inventory/Inventory", Permission.MANAGE_INVENTORY,
+ "has all Resource permissions, as described below, for all Resources; can create, update, and delete groups; " +
+ "and can import auto-discovered or manually discovered Resources");
+ records.add(record);
+ record = createSimplePermissionRecord("Manage Settings", "subsystems/configure/Configure", Permission.MANAGE_SETTINGS,
+ "can modify the RHQ Server configuration and perform any Server-related functionality");
+ records.add(record);
+ record = createSimplePermissionRecord("Manage Bundles", "subsystems/bundle/Bundle", Permission.MANAGE_BUNDLE,
+ "can create, update, or delete provisioning bundles (viewing is implied for everyone)");
+ records.add(record);
+
+ globalPermissionsGrid.setData(records.toArray(new ListGridRecord[records.size()]));
+
+ return globalPermissionsGrid;
+ }
+
+ private void updatePermissions(Boolean authorized, Permission permission) {
+ if (authorized) {
+ this.selectedPermissions.add(permission);
+ } else {
+ this.selectedPermissions.remove(permission);
+ }
+
+ ListGridRecord[] permissionRecords = RolesDataSource.toRecordArray(this.selectedPermissions);
+ getForm().setValue(getName(), permissionRecords);
+ }
+
+ private ListGridRecord createSimplePermissionRecord(String displayName, String icon, Permission globalPermission,
+ String description) {
+ ListGridRecord record = new ListGridRecord();
+ record.setAttribute("displayName", displayName);
+ record.setAttribute("icon", icon);
+ record.setAttribute("name", globalPermission.name());
+ record.setAttribute("description", description);
+ record.setAttribute("authorized", this.selectedPermissions.contains(globalPermission));
+ return record;
+ }
+
+ private ListGridRecord createReadWritePermissionRecord(String displayName, Permission readPermission,
+ String readDescription, Permission writePermission,
+ String writeDescription) {
+ ListGridRecord record = new ListGridRecord();
+ record.setAttribute("displayName", displayName);
+ record.setAttribute("readName", readPermission.name());
+ record.setAttribute("readAuthorized", this.selectedPermissions.contains(readPermission));
+ record.setAttribute("readDescription", readDescription);
+ record.setAttribute("writeName", writePermission.name());
+ record.setAttribute("writeAuthorized", this.selectedPermissions.contains(writePermission));
+ record.setAttribute("writeDescription", writeDescription);
+ return record;
+ }
+
+ public Set<Permission> getPermissions() {
+ return this.selectedPermissions;
+ }
+
+ private static ListGridRecord[] convertToListGridRecordArray(JavaScriptObject nativeArray) {
+ if (nativeArray == null) {
+ return new ListGridRecord[]{};
+ }
+ JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray);
+ ListGridRecord[] objects = new ListGridRecord[componentsj.length];
+ for (int i = 0; i < componentsj.length; i++) {
+ JavaScriptObject componentJS = componentsj[i];
+ ListGridRecord obj = (ListGridRecord) RefDataClass.getRef(componentJS);
+ if (obj == null) obj = new ListGridRecord(componentJS);
+ objects[i] = obj;
+ }
+ return objects;
+ }
+
+ class PermissionsEditor extends LocatableVLayout {
+ private ListGrid globalPermissionsGrid;
+
+ PermissionsEditor() {
+ super(roleEditView.extendLocatorId("Permissions"));
+ setWidth100();
+ setHeight(350);
+ this.globalPermissionsGrid = buildGlobalPermissionsGrid();
+ addMember(globalPermissionsGrid);
+ }
+
+ public ListGrid getGlobalPermissionsGrid() {
+ return globalPermissionsGrid;
+ }
+ }
+
+}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java
index 6a8adab..9fce069 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java
@@ -59,7 +59,7 @@ public class RoleEditView extends AbstractRecordEditor<RolesDataSource> implemen
private static final String HEADER_ICON = "global/Role_16.png";
- private PermissionEditorView permissionEditorItem;
+ private PermissionsItem permissionsItem;
private CanvasItem resourceGroupsItem;
private ResourceGroupSelector groupSelector;
@@ -104,7 +104,9 @@ public class RoleEditView extends AbstractRecordEditor<RolesDataSource> implemen
}
private void fetchAvailableLdapGroups() {
- final boolean isReadOnly = (!this.hasManageSecurityPermission);
+ final boolean isReadOnly = (!this.hasManageSecurityPermission ||
+ (getRecordId() == RolesDataSource.ID_SUPERUSER) ||
+ (getRecordId() == RolesDataSource.ID_ALL_RESOURCES));
if (this.isLdapConfigured) {
final Set<LdapGroup> availableLdapGroups = null;
GWTServiceLookup.getLdapService().findAvailableGroups(new AsyncCallback<Set<Map<String, String>>>() {
@@ -183,14 +185,11 @@ public class RoleEditView extends AbstractRecordEditor<RolesDataSource> implemen
label.setWidth100();
label.setPadding(6);
this.ldapGroupsItem.setCanvas(label);
- }
-
- // TODO: Fix this.
- //Set<Permission> permissions = (Set<Permission>) record.getAttributeAsObject(RolesDataSource.Field.PERMISSIONS);
- Set<Permission> permissions = Collections.emptySet();
- this.permissionEditorItem.setPermissions(permissions);
+ }
}
+ this.permissionsItem.redraw();
+
super.editRecord(record);
}
@@ -206,11 +205,10 @@ public class RoleEditView extends AbstractRecordEditor<RolesDataSource> implemen
descriptionItem.setWidth("*");
items.add(descriptionItem);
- permissionEditorItem = new PermissionEditorView(this.getLocatorId(), "permissionsEditor", MSG
- .view_adminRoles_perms(), this);
- permissionEditorItem.setShowTitle(false);
- permissionEditorItem.setColSpan(getForm().getNumCols());
- items.add(permissionEditorItem);
+ permissionsItem = new PermissionsItem(this);
+ permissionsItem.setShowTitle(false);
+ permissionsItem.setColSpan(getForm().getNumCols());
+ items.add(permissionsItem);
resourceGroupsItem = new CanvasItem(RolesDataSource.Field.RESOURCE_GROUPS, MSG.view_adminRoles_assignedGroups());
resourceGroupsItem.setShowTitle(false);
@@ -251,6 +249,7 @@ public class RoleEditView extends AbstractRecordEditor<RolesDataSource> implemen
ListGridRecord[] ldapGroupRecords = this.ldapGroupSelector.getAssignedGrid().getRecords();
getForm().setValue(RolesDataSource.Field.LDAP_GROUPS, ldapGroupRecords);*/
+ //permissionsItem.getPermissions();
// Submit the form values to the datasource.
super.save();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java
index 2cc5520..7f67926 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java
@@ -60,8 +60,7 @@ public class RolesDataSource extends RPCDataSource<Role> {
public static final String NAME = "name";
public static final String DESCRIPTION = "description";
public static final String RESOURCE_GROUPS = "resourceGroups";
- public static final String GLOBAL_PERMISSIONS = "globalPermissions";
- public static final String RESOURCE_PERMISSIONS = "resourcePermissions";
+ public static final String PERMISSIONS = "permissions";
public static final String SUBJECTS = "subjects";
public static final String LDAP_GROUPS = "ldapGroups";
}
@@ -116,11 +115,8 @@ public class RolesDataSource extends RPCDataSource<Role> {
DataSourceField resourceGroupsField = new DataSourceField(Field.RESOURCE_GROUPS, FieldType.ANY, "Resource Groups");
fields.add(resourceGroupsField);
- DataSourceField globalPermissionsField = new DataSourceField(Field.GLOBAL_PERMISSIONS, FieldType.ANY, "Global Permissions");
- fields.add(globalPermissionsField);
-
- DataSourceField resourcePermissionsField = new DataSourceField(Field.RESOURCE_PERMISSIONS, FieldType.ANY, "Resource Permissions");
- fields.add(resourcePermissionsField);
+ DataSourceField permissionsField = new DataSourceField(Field.PERMISSIONS, FieldType.ANY, "Permissions");
+ //fields.add(permissionsField);
DataSourceField subjectsField = new DataSourceField(Field.SUBJECTS, FieldType.ANY, "Subjects");
fields.add(subjectsField);
@@ -208,9 +204,12 @@ public class RolesDataSource extends RPCDataSource<Role> {
to.setName(from.getAttributeAsString(Field.NAME));
to.setDescription(from.getAttributeAsString(Field.DESCRIPTION));
+ Record[] permissionRecords = from.getAttributeAsRecordArray(Field.PERMISSIONS);
+ Set<Permission> permissions = toPermissionSet(permissionRecords);
+ to.setPermissions(permissions);
+
// TODO
/*to.setResourceGroups((Set<ResourceGroup>) from.getAttributeAsObject(Field.RESOURCE_GROUPS));
- to.setPermissions((Set<Permission>) from.getAttributeAsObject(Field.GLOBAL_PERMISSIONS));
to.setSubjects((Set<Subject>) from.getAttributeAsObject(Field.SUBJECTS));
to.setSubjects((Set<Subject>) from.getAttributeAsObject(Field.LDAP_GROUPS));*/
@@ -228,23 +227,9 @@ public class RolesDataSource extends RPCDataSource<Role> {
sourceRole.getResourceGroups());
targetRecord.setAttribute(Field.RESOURCE_GROUPS, resourceGroupRecords);
- // First split the set of permissions into two subsets - one for global perms and one for resource perms.
Set<Permission> permissions = sourceRole.getPermissions();
- Set<Permission> globalPermissions = new HashSet<Permission>();
- Set<Permission> resourcePermissions = new HashSet<Permission>();
- for (Permission permission : permissions) {
- if (permission.getTarget() == Permission.Target.GLOBAL) {
- globalPermissions.add(permission);
- } else {
- resourcePermissions.add(permission);
- }
- }
-
- ListGridRecord[] globalPermissionRecords = toRecordArray(globalPermissions);
- targetRecord.setAttribute(Field.GLOBAL_PERMISSIONS, globalPermissionRecords);
-
- ListGridRecord[] resourcePermissionRecords = toRecordArray(resourcePermissions);
- targetRecord.setAttribute(Field.RESOURCE_PERMISSIONS, resourcePermissionRecords);
+ ListGridRecord[] permissionRecords = toRecordArray(permissions);
+ targetRecord.setAttribute(Field.PERMISSIONS, permissionRecords);
ListGridRecord[] subjectRecords = UsersDataSource.getInstance().buildRecords(sourceRole.getSubjects());
targetRecord.setAttribute(Field.SUBJECTS, subjectRecords);
@@ -252,15 +237,25 @@ public class RolesDataSource extends RPCDataSource<Role> {
return targetRecord;
}
- private static ListGridRecord[] toRecordArray(Set<Permission> globalPermissions) {
- ListGridRecord[] globalPermissionRecords = new ListGridRecord[globalPermissions.size()];
- for (Permission permission : globalPermissions) {
- ListGridRecord globalPermissionRecord = new ListGridRecord();
- globalPermissionRecord.setAttribute("name", permission.name());
- globalPermissionRecord.setAttribute("displayName", permission.name()); // TODO
- globalPermissionRecord.setAttribute("description", ""); // TODO
+ public static Set<Permission> toPermissionSet(Record[] permissionRecords) {
+ Set<Permission> permissions = new HashSet<Permission>();
+ for (Record permissionRecord : permissionRecords) {
+ String permissionName = permissionRecord.getAttribute("name");
+ Permission permission = Permission.valueOf(permissionName);
+ permissions.add(permission);
+ }
+ return permissions;
+ }
+
+ public static ListGridRecord[] toRecordArray(Set<Permission> permissions) {
+ ListGridRecord[] permissionRecords = new ListGridRecord[permissions.size()];
+ int index = 0;
+ for (Permission permission : permissions) {
+ ListGridRecord permissionRecord = new ListGridRecord();
+ permissionRecord.setAttribute("name", permission.name());
+ permissionRecords[index++] = permissionRecord;
}
- return globalPermissionRecords;
+ return permissionRecords;
}
private RoleCriteria getFetchCriteria(DSRequest request) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
index 2bf795c..4288a2e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
@@ -79,6 +79,7 @@ public abstract class AbstractRecordEditor<DS extends RPCDataSource> extends Loc
private VLayout bottomLayout;
private String dataTypeName;
private String listViewPath;
+ private boolean wasInvalid;
public AbstractRecordEditor(String locatorId, DS dataSource, int recordId, String dataTypeName,
String headerIcon) {
@@ -246,15 +247,19 @@ public abstract class AbstractRecordEditor<DS extends RPCDataSource> extends Loc
this.saveButton.setDisabled(!isValid);
this.resetButton.setDisabled(false);
if (!isValid) {
+ this.wasInvalid = true;
Message message = new Message("One or more fields have invalid values. This " + this.dataTypeName
+ " cannot be saved until these values are corrected.", Message.Severity.Warning, EnumSet.of(
Message.Option.Sticky, Message.Option.Transient));
CoreGUI.getMessageCenter().notify(message);
} else {
- Message message = new Message("All fields now have valid values. This " + this.dataTypeName
- + " can now be saved.", Message.Severity.Info, EnumSet.of(Message.Option.Sticky,
- Message.Option.Transient));
- CoreGUI.getMessageCenter().notify(message);
+ if (this.wasInvalid) {
+ Message message = new Message("All fields now have valid values. This " + this.dataTypeName
+ + " can now be saved.", Message.Severity.Info, EnumSet.of(Message.Option.Sticky,
+ Message.Option.Transient));
+ CoreGUI.getMessageCenter().notify(message);
+ this.wasInvalid = false;
+ }
}
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
index 496d896..7eaa761 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
@@ -30,6 +30,7 @@ import com.google.gwt.user.client.Timer;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.FormItemIfFunction;
import com.smartgwt.client.widgets.form.fields.BooleanItem;
+import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.HiddenItem;
@@ -109,7 +110,7 @@ public class EnhancedDynamicForm extends LocatableDynamicForm {
hasIdField = true;
}
if (this.isReadOnly) {
- if (item instanceof StaticTextItem) {
+ if ((item instanceof StaticTextItem) || (item instanceof CanvasItem)) {
itemsList.add(item);
} else {
StaticTextItem staticItem = new StaticTextItem(item.getName(), item.getTitle());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
index c2b1efd..7b5000d 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
@@ -506,8 +506,8 @@ public abstract class RPCDataSource<T> extends DataSource {
textField.setLength(Boolean.FALSE.toString().length());
textField.setRequired(required);
LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>();
- valueMap.put(Boolean.TRUE.toString(), MSG.dataSource_rpc_yes());
- valueMap.put(Boolean.FALSE.toString(), MSG.dataSource_rpc_no());
+ valueMap.put(Boolean.TRUE.toString(), MSG.common_val_yes_lower());
+ valueMap.put(Boolean.FALSE.toString(), MSG.common_val_no_lower());
textField.setValueMap(valueMap);
return textField;
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 7a6fea3..32a7792 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -283,7 +283,7 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
+ "]. Unable to inform agent of inventory removal (this may be ok): " + t);
}
- // since we delete the resource asychronously now, we need to make sure we remove things that would cause
+ // since we delete the resource asynchronously now, we need to make sure we remove things that would cause
// system side effects after markForDeletion completed but before the resource was actually removed from the DB
Subject overlord = subjectManager.getOverlord();
13 years, 6 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java | 2 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
New commits:
commit f644117c83aa104a0003ec48b714c7082607444a
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Nov 19 14:27:03 2010 -0500
Reports->Alert Definitions now brings up the Templates view.. but I don't think that's what we wanted. I think this was to show all definitions that exist. but at least this shows something
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
index a4dcde9..1b28a58 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
@@ -60,7 +60,7 @@ public class AdministrationView extends AbstractSectionedLeftNavigationView {
// TODO these iframe page view ids should go away in favor of the gwt view page view_id, when available
private static final ViewName PAGE_SYSTEM_SETTINGS_VIEW_ID = new ViewName("SystemSettings", MSG
.view_adminConfig_systemSettings());
- private static final ViewName PAGE_TEMPLATES_VIEW_ID = new ViewName("Templates", MSG.view_adminConfig_templates());
+ public static final ViewName PAGE_TEMPLATES_VIEW_ID = new ViewName("Templates", MSG.view_adminConfig_templates());
private static final ViewName PAGE_DOWNLOADS_VIEW_ID = new ViewName("Downloads", MSG.view_adminConfig_downloads());
private static final ViewName PAGE_LICENSE_VIEW_ID = new ViewName("License", MSG.view_adminConfig_license());
private static final ViewName PAGE_PLUGINS_VIEW_ID = new ViewName("Plugins", MSG.view_adminConfig_plugins());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
index a6c441b..fa63445 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
@@ -28,6 +28,8 @@ import java.util.List;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
+import org.rhq.enterprise.gui.coregui.client.admin.AdministrationView;
+import org.rhq.enterprise.gui.coregui.client.admin.templates.ResourceTypeTreeView;
import org.rhq.enterprise.gui.coregui.client.alert.AlertHistoryView;
import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane;
import org.rhq.enterprise.gui.coregui.client.components.view.AbstractSectionedLeftNavigationView;
@@ -117,7 +119,7 @@ public class ReportTopView extends AbstractSectionedLeftNavigationView {
NavigationItem alertDefinitionsItem = new NavigationItem(new ViewName("AlertDefinitions", MSG
.view_reports_alertDefinitions()), "subsystems/alert/Alerts_16.png", new ViewFactory() {
public Canvas createView() {
- return null; // TODO: mazz
+ return new ResourceTypeTreeView(extendLocatorId(AdministrationView.PAGE_TEMPLATES_VIEW_ID.getName()));
}
});
13 years, 6 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java | 2 -
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 11 +++++-----
2 files changed, 7 insertions(+), 6 deletions(-)
New commits:
commit cfb7d24d857e1337857fbcf5bcebae7ef4e33c9e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Nov 19 14:13:21 2010 -0500
put these back the way they were
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
index 1bbeccf..6b6c703 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
@@ -109,7 +109,7 @@ public class SearchBarPane extends LocatableHLayout {
ComboBoxItem resourceSearch = getResourceComboBox();
ComboBoxItem groupSearch = getGroupComboBox();
- ButtonItem search = new ButtonItem("Search", MSG.common_title_search());
+ ButtonItem search = new ButtonItem("Search", MSG.common_button_search());
search.setStartRow(false);
search.setEndRow(false);
search.setShowTitle(false);
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 9e2f54d..5d5ca3f 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -34,9 +34,10 @@ common_button_next = Next~
common_button_ok = OK~
common_button_previous = Previous~
common_button_purgeAll=Purge All~
-common_button_refresh = "Refresh"~
+common_button_refresh = Refresh~
common_button_reset = Reset~
common_button_save = Save~
+common_button_search = Search~
common_button_showDetails = Show Details...~
common_button_uninventory = Uninventory~
@@ -958,7 +959,7 @@ view_selector_available = Available {0}~
view_subTab_error_disabled = Cannot select disabled subTab [{0}].~
-view_table_totalRows = Total Rows: {0} Selected: {1}~
+view_table_totalRows = Total Rows: {0} (selected: {1})~
view_tableSection_backButton = Back to List~
view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute - please report this bug.~
view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id': [{1}]. Please report this bug~
@@ -1393,11 +1394,11 @@ view_summaryOverviewForm_label_plugin = Plugin:
view_summaryOverviewForm_label_type = Type:
view_summaryOverviewForm_header_summary = Summary~
view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_nameChangeSuccess = "Name of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_descriptionChangeSuccess = "Description of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_locationChangeSuccess = "Location of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0} was changed from [{1}] to [{2}].~
#==================== Reports ======================
13 years, 6 months
[rhq] 2 commits - modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 24 +++++++---
1 file changed, 17 insertions(+), 7 deletions(-)
New commits:
commit 3a1ad70124c7a4489ea20e831cdee3184adc548b
Merge: 481e29b... 5c7f29d...
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 14:01:44 2010 -0500
Merge branch 'master' of ssh://spinder@git.fedorahosted.org/git/rhq/rhq
commit 481e29bdb060854b4da1ca644224cbded8bea5b9
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 14:00:26 2010 -0500
update i18n message file with new titles/message. Synch messages.
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 6bf3135..cb8070d 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -34,10 +34,9 @@ common_button_next = Next~
common_button_ok = OK~
common_button_previous = Previous~
common_button_purgeAll=Purge All~
-common_button_refresh = Refresh~
+common_button_refresh = "Refresh"~
common_button_reset = Reset~
common_button_save = Save~
-common_button_search = Search~
common_button_showDetails = Show Details...~
common_button_uninventory = Uninventory~
@@ -68,6 +67,7 @@ common_label_weeks=weeks~
# Common Titles
#--------------
+common_title_address=Address~
common_title_add_column=Add Column~
common_title_add_portlet=Add Portlet~
common_title_alert_range=Alert Range~
@@ -80,6 +80,7 @@ common_title_columns=Columns~
common_title_configuration = Configuration~
common_title_compatibleGroups = Compatible Groups~
common_title_compatibleGroups_total=Compatible Group Total~
+common_title_component_errors=Component errors~
common_title_custom=Custom~
common_title_dashboard_name=Dashboard Name~
common_title_dateCreated=Date Created~
@@ -139,6 +140,7 @@ common_title_server_total=Server Total~
common_title_service_total=Service Total~
common_title_settings=Settings~
common_title_show=Show~
+common_title_show_more = Show more...~
common_title_start = Start~
common_title_status=Status~
common_title_summary=Summary~
@@ -956,7 +958,7 @@ view_selector_available = Available {0}~
view_subTab_error_disabled = Cannot select disabled subTab [{0}].~
-view_table_totalRows = Total Rows: {0} (selected: {1})~
+view_table_totalRows = Total Rows: {0} Selected: {1}~
view_tableSection_backButton = Back to List~
view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute - please report this bug.~
view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id': [{1}]. Please report this bug~
@@ -1092,6 +1094,13 @@ view_inventory_allResources = All Resources~
view_inventory_platforms = Platforms~
view_inventory_servers = Servers~
view_inventory_services = Services~
+view_inventory_summary_agent_error1=Failed to locate agent managing resource id~
+view_inventory_summary_agent_error2=Failed to ping agent managing resource id~
+view_inventory_summary_agent_fullEnpoint=Full Endpoint~
+view_inventory_summary_agent_fullEnpoint_err1=!No remote endpoint associated with this resource!~
+view_inventory_summary_agent_last_title=Last Received Availability Report~
+view_inventory_summary_agent_status_title=Agent Communications Status~
+view_inventory_summary_agent_title=Agent Managing this Resource~
view_inventory_dynagroupDefs = Dynagroup Definitions~
view_metric_traits=Traits~
view_metric_viewTraitHistory=Value History for Trait [{0}]~
@@ -1141,6 +1150,8 @@ view_resource_monitor_calltime_loadFailed=Could not load call time data~
view_resource_monitor_calltime_lookupFailed=Could not load resource for call time~
view_resource_monitor_calltime_editFailed=Call time data can not be edited~
view_resource_monitor_schedules_title=Resource Metric Collection Schedules~
+view_resource_title_tagUpdateFailed=Failed to update resource tags~
+view_resource_title_component_errors_tooltip=Shows managed component errors. Click for details~
view_tree_common_loadFailed_generic=Failed to load data for tree~
view_tree_common_loadFailed_root=Failed to load root for tree~
view_tree_common_loadFailed_descendants=Failed to load descendants for tree~
@@ -1382,11 +1393,11 @@ view_summaryOverviewForm_label_plugin = Plugin:
view_summaryOverviewForm_label_type = Type:
view_summaryOverviewForm_header_summary = Summary~
view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_nameChangeSuccess = "Name of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_descriptionChangeSuccess = "Description of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_locationChangeSuccess = "Location of Resource with id {0} was changed from [{1}] to [{2}].~
#==================== Reports ======================
@@ -1470,4 +1481,3 @@ view_messageCenter_messageTitle = Message Center~
view_messageCenter_messageSeverity = Severity~
view_messageCenter_messageTime = Time~
view_messageCenter_messageDetail = Detail~
-
13 years, 6 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java | 12 +++++-----
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 3 +-
2 files changed, 8 insertions(+), 7 deletions(-)
New commits:
commit 5c7f29de1e24d939345b6ab42a72ab97a15342e1
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Nov 19 13:44:05 2010 -0500
i18n
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
index 5e1e957..a6c441b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
@@ -114,12 +114,12 @@ public class ReportTopView extends AbstractSectionedLeftNavigationView {
}
});
- NavigationItem alertDefinitionsItem = new NavigationItem(new ViewName("AlertDefinitions"),
- "subsystems/alert/Alerts_16.png", new ViewFactory() {
- public Canvas createView() {
- return null; // TODO: mazz
- }
- });
+ NavigationItem alertDefinitionsItem = new NavigationItem(new ViewName("AlertDefinitions", MSG
+ .view_reports_alertDefinitions()), "subsystems/alert/Alerts_16.png", new ViewFactory() {
+ public Canvas createView() {
+ return null; // TODO: mazz
+ }
+ });
return new NavigationSection(SUBSYSTEMS_SECTION_VIEW_ID, tagItem, suspectMetricsItem,
recentConfigurationChangesItem, recentOperationsItem, recentAlertsItem, alertDefinitionsItem);
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 6bf3135..b1e86d2 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -961,7 +961,7 @@ view_tableSection_backButton = Back to List~
view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute - please report this bug.~
view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id': [{1}]. Please report this bug~
-view_tags_tags = Tags
+view_tags_tags = Tags~
view_tags_error_1 = Failed to load Tags~
view_tags_title = Tags:~
view_tags_tooltip_1 = Click to remove this Tag~
@@ -1395,6 +1395,7 @@ view_reportsTop_title = Reports~
view_reportsTop_description = This section provides access to global reports.~
view_reports_platforms = Cpu And Memory Utilization~
view_reports_subsystems = Subsystems~
+view_reports_alertDefinitions=Alert Definitions~
view_measurementOob_title = Suspect Metrics~
13 years, 6 months
[rhq] 7 commits - modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java | 8
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java | 34 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java | 17
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java | 193 +++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java | 148 +++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java | 191 ++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsDataSource.java | 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsView.java | 23
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java | 67 ++
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 1
modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml | 8
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/inventory/resource/PingAgentUIBean.java | 3
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/navigation/resource/ResourceTreeModelUIBean.java | 58 +-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 35 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java | 9
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerLocal.java | 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java | 40 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java | 15
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java | 84 +--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java | 18
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/support/SupportManagerBean.java | 2
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java | 246 ++++------
29 files changed, 839 insertions(+), 392 deletions(-)
New commits:
commit 53e4e07f5a2449e632bf22d35f9af9cd2ee56fb0
Merge: 44d5d22... b015b89...
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 13:36:53 2010 -0500
Merge branch 'master' of ssh://spinder@git.fedorahosted.org/git/rhq/rhq into track-master
commit 44d5d22cb1aac81123b10ccff25ff8a86f7b3e53
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 13:35:57 2010 -0500
refresh and i18n fix.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index cc93832..37ba5f3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -284,6 +284,8 @@ public class ResourceTitleBar extends LocatableVLayout {
//order the components
addMember(top);
addMember(details);
+ top.markForRedraw();
+ details.markForRedraw();
}
private void loadTags(final TagEditorView tagEditorView) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
index 3f45d55..f398136 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
@@ -74,7 +74,7 @@ public class OverviewView extends LocatableVLayout {
setWidth("80%");
final List<FormItem> formItems = new ArrayList<FormItem>();
HeaderItem headerItem = new HeaderItem("header", MSG.view_inventory_summary_agent_title());
- headerItem.setValue("Agent Managing this Resource");
+ headerItem.setValue(MSG.view_inventory_summary_agent_title());
formItems.add(headerItem);
//populate remaining details
GWTServiceLookup.getAgentService().getAgentForResource(id, new AsyncCallback<Agent>() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
index 6b6c703..1bbeccf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/SearchBarPane.java
@@ -109,7 +109,7 @@ public class SearchBarPane extends LocatableHLayout {
ComboBoxItem resourceSearch = getResourceComboBox();
ComboBoxItem groupSearch = getGroupComboBox();
- ButtonItem search = new ButtonItem("Search", MSG.common_button_search());
+ ButtonItem search = new ButtonItem("Search", MSG.common_title_search());
search.setStartRow(false);
search.setEndRow(false);
search.setShowTitle(false);
commit 3ca57ee53471e5aee41b60e46c22702ba38b5549
Merge: 943d060... bcfc55f...
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 12:06:57 2010 -0500
Merge branch 'master' of ssh://spinder@git.fedorahosted.org/git/rhq/rhq into track-master
Conflicts:
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
index 3372b61,4402029..52a7f7d
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
@@@ -184,22 -180,10 +183,24 @@@ public class ResourceSearchView extend
}
}
});*/
+
+
}
+ // /** Defines the double click handler action for ResourceSearch. This means that on double
+ // * click a (Resource-relative) url, specifically Summary/Overview is what will happen
+ // * with this action. Override in subclasses to define alternate behavior.
+ // */
+ // protected void configureDoubleClickHandler() {
+ // //adding cell double click handler
+ // getListGrid().addCellDoubleClickHandler(new CellDoubleClickHandler() {
+ // @Override
+ // public void onCellDoubleClick(CellDoubleClickEvent event) {
+ // CoreGUI.goToView("Resource/" + event.getRecord().getAttribute("id") + "/Summary/Overview");
+ // }
+ // });
+ // }
+
public int getMatches() {
return this.getListGrid().getTotalRows();
}
commit 943d06059cb871e137e78e71965ea8a172f4eaae
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Nov 19 11:59:56 2010 -0500
Numerous fixes:
i)added pingAgentForResource to agentManagerBean
ii)i18n of new titles/strings
iii)descriptive link for Resource/plugin errors.
iv)moved ResourceErrors table from Inv/Summary to element in Resource title
v)added missing agentDetails to Summary/View
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java
index fd08d80..7b55598 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java
@@ -29,4 +29,6 @@ public interface AgentGWTService extends RemoteService {
Agent getAgentForResource(int resourceId);
+ Boolean pingAgentForResource(int resourceId);
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index cfae5a7..cc93832 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -20,15 +20,20 @@ package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
import java.util.HashSet;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
+import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.events.CloseClickHandler;
+import com.smartgwt.client.widgets.events.CloseClientEvent;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.LinkItem;
@@ -40,6 +45,7 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceError;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.tagging.Tag;
import org.rhq.core.domain.util.PageList;
@@ -49,6 +55,8 @@ import org.rhq.enterprise.gui.coregui.client.components.tagging.TagEditorView;
import org.rhq.enterprise.gui.coregui.client.components.tagging.TagsChangedCallback;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.OverviewForm;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.ResourceErrorsDataSource;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.ResourceErrorsView;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
@@ -65,6 +73,7 @@ public class ResourceTitleBar extends LocatableVLayout {
private LocatableHLayout top;
//represents normally closed region of Resource details[to verbosely describe resource across all tabs]
private LocatableHLayout details;
+ private static String COMPONENT_ERROR_COUNT_MSG = MSG.common_title_component_errors();
private static final String FAV_ICON = "Favorite_24_Selected.png";
private static final String NOT_FAV_ICON = "Favorite_24.png";
@@ -128,7 +137,8 @@ public class ResourceTitleBar extends LocatableVLayout {
GWTServiceLookup.getTagService().updateResourceTags(resource.getId(), tags,
new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to update resource tags", caught);
+ CoreGUI.getErrorHandler()
+ .handleError(MSG.view_resource_title_tagUpdateFailed(), caught);
}
public void onSuccess(Void result) {
@@ -144,33 +154,93 @@ public class ResourceTitleBar extends LocatableVLayout {
loadTags(tagEditorView);
+ //creating link to put in resource title bar
pluginErrors = new LinkItem("plugin-errors");
pluginErrors.setTitle("");
- pluginErrors.setLinkTitle("Component errors (0)");
- pluginErrors.setPrompt("Managed component errors exist. Click for details");
- // pluginErrors.addClickHandler(new ClickHandler() {
- // public void onClick(ClickEvent event) {
- // SC.say("Hello World");
- // }
- // });
+ pluginErrors.setLinkTitle(COMPONENT_ERROR_COUNT_MSG + " (0)");
+ GWTServiceLookup.getResourceService().findResourceErrors(resourceComposite.getResource().getId(),
+ new AsyncCallback<List<ResourceError>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(
+ MSG.dataSource_resourceErrors_error_fetchFailure(String.valueOf(resourceComposite.getResource()
+ .getId())), caught);
+ }
+
+ public void onSuccess(List<ResourceError> result) {
+ if (result.isEmpty()) {
+ pluginErrors.setLinkTitle(COMPONENT_ERROR_COUNT_MSG + " (" + result.size() + ")");
+ } else {
+ pluginErrors.setLinkTitle("<font color='red'>" + COMPONENT_ERROR_COUNT_MSG + " ("
+ + result.size() + ")</font>");
+ }
+ markForRedraw();
+ }
+ });
+
+ //define tool tip
+ pluginErrors.setPrompt(MSG.view_resource_title_component_errors_tooltip());
+
+ //define click action to pop open detailed view of Component plugin errors
+ pluginErrors.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() {
+ @Override
+ public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event) {
+ final Window winModal = new Window();
+ winModal.setWidth("70%");
+ winModal.setHeight("70%");
+ winModal.setTitle(MSG.common_title_component_errors() + ":");
+ winModal.setShowMinimizeButton(false);
+ winModal.setIsModal(true);
+ winModal.setShowModalMask(true);
+ winModal.setShowCloseButton(true);
+ winModal.centerInPage();
+ winModal.addCloseClickHandler(new CloseClickHandler() {
+ @Override
+ public void onCloseClick(CloseClientEvent event) {
+ winModal.destroy();
+ }
+ });
+
+ LocatableVLayout form = new LocatableVLayout(extendLocatorId("_Modal_Form"));
+ form.setAlign(VerticalAlignment.CENTER);
+ form.setLayoutMargin(20);
+ form.setWidth100();
+ form.setHeight("40%");
+ ResourceErrorsView errorsGrid = new ResourceErrorsView(extendLocatorId("errors"), MSG
+ .view_summaryOverview_header_detectedErrors(), null, null,
+ new String[] { ResourceErrorsDataSource.Field.DETAIL });
+ errorsGrid.setWidth100();
+ errorsGrid.setHeight("400");
+
+ Resource resource = resourceComposite.getResource();
+ ResourceErrorsDataSource errors = new ResourceErrorsDataSource(resource.getId());
+
+ errorsGrid.setShowFooter(false);
+ errorsGrid.setDataSource(errors);
+ form.addMember(errorsGrid);
+ winModal.addChild(form);
+
+ winModal.show();
+ }
+ });
//top information
top.addMember(badge);
top.addMember(title);
top.addMember(tagEditorView);
- DynamicForm wrap = new DynamicForm();
- wrap.setFields(pluginErrors);
- top.addMember(wrap);
+ DynamicForm wrappedPluginErrors = new DynamicForm();
+ wrappedPluginErrors.setFields(pluginErrors);
+ top.addMember(wrappedPluginErrors);
top.addMember(availabilityImage);
top.addMember(favoriteButton);
//detail information
//checkbox
final CheckboxItem displayMore = new CheckboxItem();
- final String moreDetails = "Show more...";
+ final String moreDetails = MSG.common_title_show_more();
displayMore.setName("resourceDetails");
displayMore.setTitle(moreDetails);
displayMore.setWidth(120);
+ //conditionally expand more details section.
displayMore.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
Boolean displayMoreDetails = (Boolean) event.getValue();
@@ -183,6 +253,7 @@ public class ResourceTitleBar extends LocatableVLayout {
}
});
+ //wrap checkbox for inclusion in details form.
LocatableDynamicForm wrappedCheckbox = new LocatableDynamicForm(extendLocatorId("Title_Bar_Checkbox"));
wrappedCheckbox.setFields(displayMore);
detailsForm = new LocatableHLayout(extendLocatorId("_Resource_Details"));
@@ -190,16 +261,19 @@ public class ResourceTitleBar extends LocatableVLayout {
detailsForm.setHeight(10);
detailsForm.setAlign(Alignment.LEFT);
detailsForm.addMember(wrappedCheckbox);
+
detailsFormSummary = new OverviewForm(extendLocatorId("Title_Optional_Summary"), resourceComposite);
detailsFormSummary.setWidth100();
detailsFormSummary.setPadding(0);
detailsFormSummary.setMargin(0);
detailsFormSummary.setLayoutAlign(Alignment.LEFT);
+
//condense details for display
detailsFormSummary.setHeaderEnabled(false);
detailsFormSummary.setDisplayCondensed(true);
detailsFormSummary.hide();
detailsForm.addMember(detailsFormSummary);
+
SpacerItem widthSpace = new SpacerItem();
widthSpace.setWidth(40);
DynamicForm wrappedSpacer = new DynamicForm();
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
index 087e912..3f45d55 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
@@ -19,29 +19,19 @@
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.types.Alignment;
-import com.smartgwt.client.widgets.HTMLPane;
-import com.smartgwt.client.widgets.IButton;
-import com.smartgwt.client.widgets.Img;
-import com.smartgwt.client.widgets.Window;
-import com.smartgwt.client.widgets.events.ClickEvent;
-import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.HeaderItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.CellClickEvent;
-import com.smartgwt.client.widgets.grid.events.CellClickHandler;
import org.rhq.core.domain.resource.Agent;
-import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -53,79 +43,108 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class OverviewView extends LocatableVLayout {
- private Table errorsGrid;
- private Img availabilityImage;
+ private StaticTextItem nameValue;
+ private StaticTextItem addressValue;
+ private StaticTextItem portValue;
+ private StaticTextItem agentStatus;
+ private FormItemIcon agentStatusIcon;
+ private StaticTextItem lastAvailReportValue;
+ private StaticTextItem endpointValue;
public OverviewView(String locatorId, ResourceComposite resourceComposite) {
super(locatorId);
OverviewForm form = new OverviewForm(extendLocatorId("form"), resourceComposite);
LocatableDynamicForm currentAgentInfo = new LocatableDynamicForm(extendLocatorId("Agent_Info"));
populateAgentInfo(resourceComposite.getResource().getId(), currentAgentInfo);
- errorsGrid = new Table(extendLocatorId("errors"), MSG.view_summaryOverview_header_detectedErrors(), null, null,
- new String[] { ResourceErrorsDataSource.Field.DETAIL });
+ HTMLFlow separator = new HTMLFlow();
+ separator.setContents("<hr>");
- Resource resource = resourceComposite.getResource();
- ResourceErrorsDataSource errors = new ResourceErrorsDataSource(resource.getId());
-
- errorsGrid.setShowFooter(false);
- errorsGrid.setDataSource(errors);
-
- // form.setHeight("*");
form.setHeight("200");
- errorsGrid.setHeight(200); //this should be just enough to fit the maximum of 3 rows in this table (there's at most 1 error per type)
+ currentAgentInfo.setHeight(200);
+ setLeft("10%");
addMember(form);
+ addMember(separator);
addMember(currentAgentInfo);
- addMember(errorsGrid);
}
private void populateAgentInfo(final int id, final LocatableDynamicForm currentAgentInfo) {
if (currentAgentInfo != null) {
setLeft("10%");
setWidth("80%");
- // currentAgentInfo.setBorder("1px dashed black");
final List<FormItem> formItems = new ArrayList<FormItem>();
- HeaderItem headerItem = new HeaderItem("header", "Agent Managing this Resource");
+ HeaderItem headerItem = new HeaderItem("header", MSG.view_inventory_summary_agent_title());
headerItem.setValue("Agent Managing this Resource");
formItems.add(headerItem);
//populate remaining details
GWTServiceLookup.getAgentService().getAgentForResource(id, new AsyncCallback<Agent>() {
@Override
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to locate agent managing resource id " + id + ".",
- caught);
+ CoreGUI.getErrorHandler().handleError(MSG.view_inventory_summary_agent_error1() + id + ".", caught);
}
@Override
public void onSuccess(Agent agent) {
- Log.debug("############ Debug: agent:" + agent);
//name
String name = "name";
- StaticTextItem nameValue = new StaticTextItem(name, "Name");
+ nameValue = new StaticTextItem(name, MSG.common_title_name());
nameValue.setValue(agent.getName());
formItems.add(nameValue);
//address
String address = "address";
- StaticTextItem addressValue = new StaticTextItem(address, "Address");
+ addressValue = new StaticTextItem(address, MSG.common_title_address());
addressValue.setValue(agent.getAddress());
formItems.add(addressValue);
//port
String port = "port";
- StaticTextItem portValue = new StaticTextItem(port, "Port");
+ portValue = new StaticTextItem(port, MSG.common_title_port());
portValue.setValue(agent.getPort());
formItems.add(portValue);
- // AgentClient client = agentManager.getAgentClient(agent);
- // pingResults = client.ping(5000L);
- //
- // pingResults = agent.ping(5000L);
- // //Agent Communiation status
- // availabilityImage.setSrc("resources/availability_"
- // + (resource.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? "green" : "red")
- // + "_24.png");
+ //agent-comm-status
+ String agentComStatus = "agent-comm-status";
+ agentStatusIcon = new FormItemIcon();
+ agentStatusIcon.setSrc("resources/availability_grey_24.png");
+ agentStatus = new StaticTextItem(agentComStatus, MSG.view_inventory_summary_agent_status_title());
+ agentStatus.setIcons(agentStatusIcon);
+ agentStatus.setWrapTitle(false);
+ formItems.add(agentStatus);
+ GWTServiceLookup.getAgentService().pingAgentForResource(id, new AsyncCallback<Boolean>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(MSG.view_inventory_summary_agent_error2() + id + ".",
+ caught);
+ }
+
+ @Override
+ public void onSuccess(Boolean result) {
+ //update icon with correct status
+ agentStatusIcon.setSrc("resources/availability_" + (result ? "green" : "red") + "_24.png");
+ currentAgentInfo.markForRedraw();
+ }
+ });
//Last Received Avail report
+ String lastAvailReport = "last-avail-report";
+ lastAvailReportValue = new StaticTextItem(lastAvailReport, MSG
+ .view_inventory_summary_agent_last_title());
+ lastAvailReportValue.setWrapTitle(false);
+ lastAvailReportValue.setValue(new Date(agent.getLastAvailabilityReport()));
+ formItems.add(lastAvailReportValue);
+
//Full Endpoint
+ String fullEndpoint = "full-endpoint";
+ endpointValue = new StaticTextItem(fullEndpoint, MSG.view_inventory_summary_agent_fullEnpoint());
+ String remoteEndpoint = agent.getRemoteEndpoint();
+ if (remoteEndpoint != null) {
+ // some browsers (firefox in particular) won't wrap unless you put breaks in the string
+ remoteEndpoint = remoteEndpoint.replaceAll("&", " &");
+ } else {
+ remoteEndpoint = MSG.view_inventory_summary_agent_fullEnpoint_err1();
+ }
+ endpointValue.setValue(remoteEndpoint);
+ formItems.add(endpointValue);
+
currentAgentInfo.setItems(formItems.toArray(new FormItem[formItems.size()]));
currentAgentInfo.markForRedraw();
}
@@ -139,46 +158,5 @@ public class OverviewView extends LocatableVLayout {
@Override
public void onInit() {
super.onInit();
- initErrorsGrid();
}
-
- private void initErrorsGrid() {
- errorsGrid.setTooltip(MSG.view_summaryOverview_tooltip_detectedErrors());
- errorsGrid.getListGrid().addCellClickHandler(new CellClickHandler() {
- public void onCellClick(CellClickEvent event) {
- ListGridRecord record = event.getRecord();
- final Window w = new Window();
- w.setTitle(MSG.view_summaryOverview_title_errorDetailsWindow());
- w.setIsModal(true);
- w.setShowMinimizeButton(false);
- w.setShowModalMask(true);
- w.setWidth(640);
- w.setHeight(480);
- w.centerInPage();
- w.setCanDragResize(true);
-
- LocatableVLayout layout = new LocatableVLayout(errorsGrid.extendLocatorId("dialogLayout"), 10);
- layout.setDefaultLayoutAlign(Alignment.CENTER);
- layout.setLayoutMargin(10);
-
- w.addItem(layout);
-
- HTMLPane details = new HTMLPane();
- details.setContents("<pre>" + record.getAttribute(ResourceErrorsDataSource.Field.DETAIL) + "</pre>");
- layout.addMember(details);
-
- IButton ok = new IButton(MSG.common_button_ok());
- ok.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- w.destroy();
- }
- });
-
- layout.addMember(ok);
-
- w.show();
- }
- });
- }
-
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsDataSource.java
index 2943b8e..7b55f56 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsDataSource.java
@@ -66,10 +66,10 @@ public class ResourceErrorsDataSource extends RPCDataSource<ResourceError> {
protected List<DataSourceField> addDataSourceFields() {
List<DataSourceField> fields = super.addDataSourceFields();
- fields.add(new DataSourceTextField(Field.SUMMARY, MSG.dataSource_resourceErrors_field_summary()));
- fields.add(new DataSourceTextField(Field.DETAIL, MSG.dataSource_resourceErrors_field_detail()));
fields.add(new DataSourceEnumField(Field.ERROR_TYPE, MSG.dataSource_resourceErrors_field_errorType()));
fields.add(new DataSourceDateTimeField(Field.TIME_OCCURED, MSG.dataSource_resourceErrors_field_timeOccured()));
+ fields.add(new DataSourceTextField(Field.SUMMARY, MSG.dataSource_resourceErrors_field_summary()));
+ fields.add(new DataSourceTextField(Field.DETAIL, MSG.dataSource_resourceErrors_field_detail()));
return fields;
}
@@ -82,8 +82,7 @@ public class ResourceErrorsDataSource extends RPCDataSource<ResourceError> {
resourceService.findResourceErrors(resourceId, new AsyncCallback<List<ResourceError>>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(
- MSG.dataSource_resourceErrors_error_fetchFailure(String.valueOf(resourceId)),
- caught);
+ MSG.dataSource_resourceErrors_error_fetchFailure(String.valueOf(resourceId)), caught);
response.setStatus(RPCResponse.STATUS_FAILURE);
processResponse(request.getRequestId(), response);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsView.java
new file mode 100644
index 0000000..9bc40ff
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ResourceErrorsView.java
@@ -0,0 +1,23 @@
+package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary;
+
+import com.smartgwt.client.data.Criteria;
+
+import org.rhq.enterprise.gui.coregui.client.components.table.Table;
+
+public class ResourceErrorsView extends Table {
+ public ResourceErrorsView(String locatorId, String string, Criteria criteria, Object object, String[] strings) {
+ super(locatorId, MSG.view_bundle_bundles(), criteria);
+ }
+
+ /** Set order and width of table display
+ */
+ @Override
+ protected void configureTable() {
+ getListGrid().getField(ResourceErrorsDataSource.Field.ERROR_TYPE).setWidth("10%");
+ getListGrid().getField(ResourceErrorsDataSource.Field.TIME_OCCURED).setWidth("10%");
+ getListGrid().getField(ResourceErrorsDataSource.Field.SUMMARY).setWidth("20%");
+ getListGrid().getField(ResourceErrorsDataSource.Field.DETAIL).setWidth("60%");
+ getListGrid().setWrapCells(true);
+ getListGrid().setCellHeight(100);
+ }
+}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java
index 75a51a2..80bc779 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java
@@ -37,7 +37,7 @@ public class AgentGWTServiceImpl extends AbstractGWTServiceImpl implements Agent
@Override
public Agent getAgentForResource(int resourceId) {
try {
- //TODO: this needs security that was not handled before. No AgentManagerRemote... ??
+ //security handled in AgentManagerBean. requires View_Resource.
return SerialUtility.prepare(agentManager.getAgentByResourceId(getSessionSubject(), resourceId),
"AgentService.getAgentForResource");
} catch (Exception e) {
@@ -45,6 +45,17 @@ public class AgentGWTServiceImpl extends AbstractGWTServiceImpl implements Agent
}
}
+ @Override
+ public Boolean pingAgentForResource(int resourceId) {
+ try {
+ //security handled in AgentManagerBean. requires View_Resource.
+ return SerialUtility.prepare(agentManager.pingAgentByResourceId(getSessionSubject(), resourceId),
+ "AgentService.pingAgentForResource");
+ } catch (Exception e) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ }
+ }
+
// public PageList<Availability> findAvailabilityForResource(int resourceId, PageControl pc) {
// try {
// return SerialUtility.prepare(availabilityManager.findAvailabilityForResource(getSessionSubject(),
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
index 201fccf..79b7190 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
@@ -547,4 +547,26 @@ public class AgentManagerBean implements AgentManagerLocal {
Long backfilledCount = (Long) query.getSingleResult();
return backfilledCount != 0L;
}
+
+ @ExcludeDefaultInterceptors
+ public Boolean pingAgentByResourceId(Subject subject, int resourceId) {
+ Boolean pingResults = Boolean.FALSE;
+ Agent agent;
+
+ try {
+ //insert call to method doing logged in check and view resources perm check as method calld from GWT*Service
+ agent = getAgentByResourceId(subject, resourceId);
+
+ //now ping
+ AgentClient client = getAgentClient(agent);
+ pingResults = client.ping(5000L);
+
+ } catch (NoResultException e) {
+ log.debug("Failed to lookup agent for resource with ID of [" + resourceId + "] : " + e);
+ agent = null;
+ }
+
+ return pingResults;
+ }
+
}
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
index 4821b91..a5a0a3b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
@@ -278,4 +278,14 @@ public interface AgentManagerLocal {
*/
boolean isAgentBackfilled(int agentId);
+ /**
+ * Returns <code>true</code> indicating successful ping of agent. Exposed so server could
+ * initiate N requests so gwt clients wont face Single Origin Policy issues.
+ *
+ * @param agentId the id of the agent
+ *
+ * @return <code>true</code> if the agent was successfully pinged.
+ */
+ Boolean pingAgentByResourceId(Subject subject, int resourceId);
+
}
\ No newline at end of file
commit 492a3d71091b9affbda6c86566cf8b93697204d9
Merge: 2187b1d... 27cf8cf...
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Nov 18 13:09:18 2010 -0500
Merge branch 'master' of ssh://spinder@git.fedorahosted.org/git/rhq/rhq into track-master
-pulling in i18n changes from merge effort and a few additional i18n fixes.
Conflicts:
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index b894bb6,ae10b19..70165ba
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@@ -158,7 -159,7 +161,7 @@@ public class LoginView extends Locatabl
window = new Window();
window.setWidth(400);
window.setHeight(275);
-- window.setTitle("Welcome");
++ window.setTitle(MSG.common_title_welcome());
// forced focused, static size, can't close / dismiss
window.setIsModal(true);
@@@ -250,7 -249,7 +251,7 @@@
HStack row = new HStack();
row.setMembersMargin(5);
row.setAlign(VerticalAlignment.CENTER);
-- IButton okButton = new IButton("OK");
++ IButton okButton = new IButton(MSG.common_button_ok());
okButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
//F5 refresh check? If they've reloaded the form for some reason then bail.
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
index 0340675,d2596c9..a81c97f
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
@@@ -381,7 -385,7 +385,7 @@@ public class RecentAlertsPortlet extend
// build resource selection drop down
//------------- Build second combobox for timeframe for problem resources search.
final SelectItem alertResourcesComboBox = new SelectItem(ALERT_RANGE_RESOURCES_VALUE);
-- alertResourcesComboBox.setTitle("for");
++ alertResourcesComboBox.setTitle(MSG.common_val_for());
alertResourcesComboBox.setHint("");
alertResourcesComboBox.setType("selection");
String[] acceptableResourceDisplayValues = { RESOURCES_ALL, RESOURCES_SELECTED };
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
index 6ee4da6,078461f..3372b61
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
@@@ -137,32 -142,27 +142,30 @@@ public class ResourceSearchView extend
setListGridFields(iconField, nameField, descriptionField, typeNameField, pluginNameField, categoryField,
availabilityField);
- addTableAction(extendLocatorId("Uninventory"), "Uninventory",
- "Are you sure you want to uninventory # resources?", new AbstractTableAction(TableActionEnablement.ANY) {
- public void executeAction(ListGridRecord[] selection) {
- int[] resourceIds = TableUtility.getIds(selection);
- ResourceGWTServiceAsync resourceManager = GWTServiceLookup.getResourceService();
-
- resourceManager.uninventoryResources(resourceIds, new AsyncCallback<List<Integer>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to uninventory selected resources", caught);
- }
-
- public void onSuccess(List<Integer> result) {
- CoreGUI.getMessageCenter()
- .notify(
- new Message("Successfully uninventoried " + result.size() + " resources",
- Severity.Info));
-
- ResourceSearchView.this.refresh();
- }
- });
- }
- });
+ addTableAction(extendLocatorId("Uninventory"), MSG.common_button_uninventory(), MSG
+ .view_inventory_resources_deleteConfirm(), new AbstractTableAction(TableActionEnablement.ANY) {
+ public void executeAction(ListGridRecord[] selection, Object actionValue) {
+ int[] resourceIds = TableUtility.getIds(selection);
+ ResourceGWTServiceAsync resourceManager = GWTServiceLookup.getResourceService();
+
+ resourceManager.uninventoryResources(resourceIds, new AsyncCallback<List<Integer>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(), caught);
+ }
+
+ public void onSuccess(List<Integer> result) {
+ CoreGUI.getMessageCenter().notify(
+ new Message(MSG.view_inventory_resources_deleteSuccessful(), Severity.Info));
+
+ ResourceSearchView.this.refresh();
+ }
+ });
+ }
+ });
+ // //load double click handler for this table
+ // configureDoubleClickHandler();
+
/*searchBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if ((event.getCharacterValue() != null) && (event.getCharacterValue() == KeyCodes.KEY_ENTER)) {
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
index e5e65dc,9c5a1b8..3cd120d
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
@@@ -25,13 -25,6 +25,12 @@@ import java.util.Comparator
import java.util.EnumSet;
import java.util.List;
+import com.google.gwt.user.client.rpc.AsyncCallback;
- import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.HeaderItem;
+import com.smartgwt.client.widgets.form.fields.SpacerItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
@@@ -48,8 -41,14 +47,8 @@@ import org.rhq.enterprise.gui.coregui.c
import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.widgets.form.fields.FormItem;
-import com.smartgwt.client.widgets.form.fields.HeaderItem;
-import com.smartgwt.client.widgets.form.fields.SpacerItem;
-import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-
/**
- * The Resource Summary>Overview tab, the form with resource data.
+ * The Resource Summary>Overview tab - Resource general properties + summary traits.
*
* @author Greg Hinkle
* @author Ian Springer
@@@ -106,26 -93,30 +100,26 @@@ public class OverviewForm extends Enhan
private void loadTraitValues() {
final Resource resource = resourceComposite.getResource();
- GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(
- resource.getId(),
- DisplayType.SUMMARY,
- new AsyncCallback<List<MeasurementDataTrait>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(
- MSG.view_summaryOverviewForm_error_traitsLoadFailure(resource.toString()),
- caught);
- }
+ GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(resource.getId(),
+ DisplayType.SUMMARY, new AsyncCallback<List<MeasurementDataTrait>>() {
+ public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to load traits for " + resource + ".", caught);
++ CoreGUI.getErrorHandler().handleError(
++ MSG.view_summaryOverviewForm_error_traitsLoadFailure(resource.toString()), caught);
+ }
- public void onSuccess(List<MeasurementDataTrait> result) {
- // TODO: Implement this method.
- for (MeasurementDataTrait trait : result) {
- String formId = trait.getName().replaceAll("\\.", "_").replaceAll(" ", "__");
- FormItem item = getItem(formId);
+ public void onSuccess(List<MeasurementDataTrait> result) {
+ // TODO: Implement this method.
+ for (MeasurementDataTrait trait : result) {
+ String formId = trait.getName().replaceAll("\\.", "_").replaceAll(" ", "__");
+ FormItem item = getItem(formId);
- if (item != null) {
- setValue(formId, trait.getValue());
- }
+ if (item != null) {
+ setValue(formId, trait.getValue());
}
- markForRedraw();
}
+ markForRedraw();
}
- );
+ });
-
}
private void buildForm(ResourceType type) {
@@@ -145,14 -136,13 +139,15 @@@
List<FormItem> formItems = new ArrayList<FormItem>();
- HeaderItem headerItem = new HeaderItem("header", MSG.view_summaryOverviewForm_header_summary());
- headerItem.setValue(MSG.view_summaryOverviewForm_header_summary());
- formItems.add(headerItem);
+ if (isHeaderEnabled()) {//conditionally display header
- HeaderItem headerItem = new HeaderItem("header", "Summary");
- headerItem.setValue("Summary");
++ HeaderItem headerItem = new HeaderItem("header", MSG.view_summaryOverviewForm_header_summary());
++ headerItem.setValue(MSG.view_summaryOverviewForm_header_summary());
+ formItems.add(headerItem);
+ }
- StaticTextItem typeItem = new StaticTextItem("type", "Type");
- typeItem.setTooltip("Plugin: " + type.getPlugin() + "\n<br>" + "Type: " + type.getName());
+ StaticTextItem typeItem = new StaticTextItem("type", MSG.view_summaryOverviewForm_field_type());
+ typeItem.setTooltip(MSG.view_summaryOverviewForm_label_plugin() + type.getPlugin() + "\n<br>"
+ + MSG.view_summaryOverviewForm_label_type() + type.getName());
typeItem.setValue(type.getName() + " (" + type.getPlugin() + ")");
formItems.add(typeItem);
@@@ -174,9 -164,9 +169,9 @@@
resource.setName(newName);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(MSG.view_summaryOverviewForm_error_nameChangeFailure(
- String.valueOf(resource.getId()),
- oldName, newName), caught);
+ CoreGUI.getErrorHandler().handleError(
- "Failed to change name of Resource with id " + resource.getId() + " from \"" + oldName
- + "\" to \"" + newName + "\".", caught);
++ MSG.view_summaryOverviewForm_error_nameChangeFailure(String.valueOf(resource.getId()),
++ oldName, newName), caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setName(oldName);
@@@ -184,9 -174,10 +179,9 @@@
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(
- String.valueOf(resource.getId()),
- oldName, newName)
- , Message.Severity.Info));
+ CoreGUI.getMessageCenter().notify(
- new Message("Name of Resource with id " + resource.getId() + " was changed from \""
- + oldName + "\" to \"" + newName + "\".", Message.Severity.Info));
++ new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(String
++ .valueOf(resource.getId()), oldName, newName), Message.Severity.Info));
}
});
}
@@@ -209,9 -200,9 +204,9 @@@
resource.setDescription(newDescription);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(MSG.view_summaryOverviewForm_error_descriptionChangeFailure(
- String.valueOf(resource.getId()),
- oldDescription, newDescription), caught);
+ CoreGUI.getErrorHandler().handleError(
- "Failed to change description of Resource with id " + resource.getId() + " from \""
- + oldDescription + "\" to \"" + newDescription + "\".", caught);
++ MSG.view_summaryOverviewForm_error_descriptionChangeFailure(String.valueOf(resource
++ .getId()), oldDescription, newDescription), caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setDescription(oldDescription);
@@@ -219,10 -210,9 +214,11 @@@
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(
- new Message("Description of Resource with id " + resource.getId()
- + " was changed from \"" + oldDescription + "\" to \"" + newDescription + "\".",
- Message.Severity.Info));
- CoreGUI.getMessageCenter().notify(new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(
- String.valueOf(resource.getId()),
- oldDescription, newDescription), Message.Severity.Info));
++ CoreGUI.getMessageCenter()
++ .notify(
++ new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(String
++ .valueOf(resource.getId()), oldDescription, newDescription),
++ Message.Severity.Info));
}
});
}
@@@ -245,9 -235,9 +241,9 @@@
resource.setLocation(newLocation);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(MSG.view_summaryOverviewForm_error_locationChangeFailure(
- String.valueOf(resource.getId()),
- oldLocation, newLocation), caught);
+ CoreGUI.getErrorHandler().handleError(
- "Failed to change location of Resource with id " + resource.getId() + " from \""
- + oldLocation + "\" to \"" + newLocation + "\".", caught);
++ MSG.view_summaryOverviewForm_error_locationChangeFailure(String.valueOf(resource
++ .getId()), oldLocation, newLocation), caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setLocation(oldLocation);
@@@ -255,9 -245,9 +251,9 @@@
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(
- String.valueOf(resource.getId()),
- oldLocation, newLocation), Message.Severity.Info));
+ CoreGUI.getMessageCenter().notify(
- new Message("Location of Resource with id " + resource.getId() + " was changed from \""
- + oldLocation + "\" to \"" + newLocation + "\".", Message.Severity.Info));
++ new Message(MSG.view_summaryOverviewForm_message_nameChangeSuccess(String
++ .valueOf(resource.getId()), oldLocation, newLocation), Message.Severity.Info));
}
});
}
@@@ -265,10 -255,11 +261,10 @@@
}
formItems.add(locationItem);
- StaticTextItem versionItem = new StaticTextItem("version", "Version");
-
+ StaticTextItem versionItem = new StaticTextItem("version", MSG.view_summaryOverviewForm_field_version());
formItems.add(versionItem);
- StaticTextItem parentItem = new StaticTextItem("parent", "Parent");
+ StaticTextItem parentItem = new StaticTextItem("parent", MSG.view_summaryOverviewForm_field_parent());
formItems.add(parentItem);
for (MeasurementDefinition trait : traits) {
@@@ -296,25 -286,11 +292,27 @@@
setValue("name", resource.getName());
setValue("description", resource.getDescription());
setValue("location", resource.getLocation());
- setValue("version", (resource.getVersion() != null) ? resource.getVersion() : "<i>none</i>");
- setValue("version", (resource.getVersion() != null) ? resource.getVersion() : "<i>" + MSG.common_label_none() + "</i>");
++ setValue("version", (resource.getVersion() != null) ? resource.getVersion() : "<i>" + MSG.common_label_none()
++ + "</i>");
Resource parentResource = resource.getParentResource();
- setValue("parent", parentResource != null ?
- ("<a href=\"#Resource/" + parentResource.getId() + "\">" +
- parentResource.getName() + "</a>") : "<i>" + MSG.common_label_none() + "</i>");
+ setValue("parent", parentResource != null ? ("<a href=\"#Resource/" + parentResource.getId() + "\">"
+ + parentResource.getName() + "</a>") : "<i>none</i>");
+ }
+
+ public boolean isHeaderEnabled() {
+ return headerEnabled;
}
-
+
+ public void setHeaderEnabled(boolean headerEnabled) {
+ this.headerEnabled = headerEnabled;
+ }
+
+ public boolean isDisplayCondensed() {
+ return displayCondensed;
+ }
+
+ public void setDisplayCondensed(boolean displayCondensed) {
+ this.displayCondensed = displayCondensed;
+ }
++
}
diff --cc modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
index 71f3824,754ad0d..087e912
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
@@@ -53,100 -40,35 +53,97 @@@ import org.rhq.enterprise.gui.coregui.c
*/
public class OverviewView extends LocatableVLayout {
- private OverviewForm form;
private Table errorsGrid;
-
+ private Img availabilityImage;
+
public OverviewView(String locatorId, ResourceComposite resourceComposite) {
super(locatorId);
- form = new OverviewForm(extendLocatorId("form"), resourceComposite);
+ OverviewForm form = new OverviewForm(extendLocatorId("form"), resourceComposite);
- errorsGrid = new Table(extendLocatorId("errors"), MSG.view_summaryOverview_header_detectedErrors(), null, null, new String[]
- { ResourceErrorsDataSource.Field.DETAIL });
+ LocatableDynamicForm currentAgentInfo = new LocatableDynamicForm(extendLocatorId("Agent_Info"));
+ populateAgentInfo(resourceComposite.getResource().getId(), currentAgentInfo);
-
- errorsGrid = new Table(extendLocatorId("errors"), "Detected errors", null, null,
- new String[] { ResourceErrorsDataSource.DETAIL_ID });
++ errorsGrid = new Table(extendLocatorId("errors"), MSG.view_summaryOverview_header_detectedErrors(), null, null,
++ new String[] { ResourceErrorsDataSource.Field.DETAIL });
- Resource resource = resourceComposite.getResource();
+ Resource resource = resourceComposite.getResource();
ResourceErrorsDataSource errors = new ResourceErrorsDataSource(resource.getId());
-
+
errorsGrid.setShowFooter(false);
errorsGrid.setDataSource(errors);
-
- form.setHeight("*");
+
+ // form.setHeight("*");
+ form.setHeight("200");
errorsGrid.setHeight(200); //this should be just enough to fit the maximum of 3 rows in this table (there's at most 1 error per type)
-
+
addMember(form);
+ addMember(currentAgentInfo);
addMember(errorsGrid);
-
}
- @Override
+ private void populateAgentInfo(final int id, final LocatableDynamicForm currentAgentInfo) {
+ if (currentAgentInfo != null) {
+ setLeft("10%");
+ setWidth("80%");
+ // currentAgentInfo.setBorder("1px dashed black");
+ final List<FormItem> formItems = new ArrayList<FormItem>();
+ HeaderItem headerItem = new HeaderItem("header", "Agent Managing this Resource");
+ headerItem.setValue("Agent Managing this Resource");
+ formItems.add(headerItem);
+ //populate remaining details
+ GWTServiceLookup.getAgentService().getAgentForResource(id, new AsyncCallback<Agent>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to locate agent managing resource id " + id + ".",
+ caught);
+ }
+
+ @Override
+ public void onSuccess(Agent agent) {
+ Log.debug("############ Debug: agent:" + agent);
+ //name
+ String name = "name";
+ StaticTextItem nameValue = new StaticTextItem(name, "Name");
+ nameValue.setValue(agent.getName());
+ formItems.add(nameValue);
+ //address
+ String address = "address";
+ StaticTextItem addressValue = new StaticTextItem(address, "Address");
+ addressValue.setValue(agent.getAddress());
+ formItems.add(addressValue);
+ //port
+ String port = "port";
+ StaticTextItem portValue = new StaticTextItem(port, "Port");
+ portValue.setValue(agent.getPort());
+ formItems.add(portValue);
+
+ // AgentClient client = agentManager.getAgentClient(agent);
+ // pingResults = client.ping(5000L);
+ //
+ // pingResults = agent.ping(5000L);
+ // //Agent Communiation status
+ // availabilityImage.setSrc("resources/availability_"
+ // + (resource.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? "green" : "red")
+ // + "_24.png");
+
+ //Last Received Avail report
+ //Full Endpoint
+ currentAgentInfo.setItems(formItems.toArray(new FormItem[formItems.size()]));
+ currentAgentInfo.markForRedraw();
+ }
+ });
+
+ //final form population
+ currentAgentInfo.setItems(formItems.toArray(new FormItem[formItems.size()]));
+ }
+ }
+
+ @Override
public void onInit() {
super.onInit();
initErrorsGrid();
}
-
- private void initErrorsGrid() {
+
+ private void initErrorsGrid() {
- errorsGrid.setTooltip("Click on the rows to see the error details.");
+ errorsGrid.setTooltip(MSG.view_summaryOverview_tooltip_detectedErrors());
errorsGrid.getListGrid().addCellClickHandler(new CellClickHandler() {
public void onCellClick(CellClickEvent event) {
ListGridRecord record = event.getRecord();
@@@ -163,14 -85,14 +160,14 @@@
LocatableVLayout layout = new LocatableVLayout(errorsGrid.extendLocatorId("dialogLayout"), 10);
layout.setDefaultLayoutAlign(Alignment.CENTER);
layout.setLayoutMargin(10);
-
+
w.addItem(layout);
-
- HTMLPane details = new HTMLPane();
+
+ HTMLPane details = new HTMLPane();
- details.setContents("<pre>" + record.getAttribute(ResourceErrorsDataSource.DETAIL_ID) + "</pre>");
+ details.setContents("<pre>" + record.getAttribute(ResourceErrorsDataSource.Field.DETAIL) + "</pre>");
layout.addMember(details);
-
+
- IButton ok = new IButton("Ok");
+ IButton ok = new IButton(MSG.common_button_ok());
ok.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
w.destroy();
@@@ -183,4 -105,5 +180,5 @@@
}
});
}
-
++
}
diff --cc modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index 0d413a4,edc98dee..8bf33ca
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@@ -90,8 -95,6 +95,7 @@@
<entry-point class='org.rhq.enterprise.gui.coregui.client.CoreGUI'/>
<entry-point class='org.rhq.enterprise.gui.coregui.client.SearchGUI'/>
-
+ <servlet path="/AgentGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AgentGWTServiceImpl"/>
<servlet path="/AlertGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl"/>
<servlet path="/AlertDefinitionGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertDefinitionGWTServiceImpl"/>
<servlet path="/AlertTemplateGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertTemplateGWTServiceImpl"/>
commit 2187b1d51bfd8503236fecdadef8984e23aa9c7d
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Tue Nov 16 11:47:07 2010 -0500
Numerous fixes: not complete. Saving for i18n work
-ResourceTitleChanges i)conditional details ii)plugin conf errors
-AgentGWT* changes
-AgentManagerBean perm check for View_Resources
-moved AgentDetails to Summary Tab
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java
new file mode 100644
index 0000000..fd08d80
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AgentGWTService.java
@@ -0,0 +1,32 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.gwt;
+
+import com.google.gwt.user.client.rpc.RemoteService;
+
+import org.rhq.core.domain.resource.Agent;
+
+/**
+ * @author Simeon Pinder
+ */
+public interface AgentGWTService extends RemoteService {
+
+ Agent getAgentForResource(int resourceId);
+
+}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java
index 7d839eb..af662db 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java
@@ -145,6 +145,10 @@ public class GWTServiceLookup {
return secure(LdapGWTServiceAsync.Util.getInstance());
}
+ public static AgentGWTServiceAsync getAgentService() {
+ return secure(AgentGWTServiceAsync.Util.getInstance());
+ }
+
@SuppressWarnings("unchecked")
private static <T> T secure(Object sdt) {
return (T) secure(sdt, -1);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index 2e4e942..55a1cac 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -31,6 +31,7 @@ import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
+import com.smartgwt.client.widgets.form.fields.LinkItem;
import com.smartgwt.client.widgets.form.fields.SpacerItem;
import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
@@ -77,6 +78,7 @@ public class ResourceTitleBar extends LocatableVLayout {
private boolean favorite;
private LocatableHLayout detailsForm;
private OverviewForm detailsFormSummary;
+ private LinkItem pluginErrors;
public ResourceTitleBar(String locatorId) {
super(locatorId);
@@ -141,10 +143,23 @@ public class ResourceTitleBar extends LocatableVLayout {
loadTags(tagEditorView);
+ pluginErrors = new LinkItem("plugin-errors");
+ pluginErrors.setTitle("");
+ pluginErrors.setLinkTitle("Component errors (0)");
+ pluginErrors.setPrompt("Managed component errors exist. Click for details");
+ // pluginErrors.addClickHandler(new ClickHandler() {
+ // public void onClick(ClickEvent event) {
+ // SC.say("Hello World");
+ // }
+ // });
+
//top information
top.addMember(badge);
top.addMember(title);
top.addMember(tagEditorView);
+ DynamicForm wrap = new DynamicForm();
+ wrap.setFields(pluginErrors);
+ top.addMember(wrap);
top.addMember(availabilityImage);
top.addMember(favoriteButton);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
index b439d44..71f3824 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewView.java
@@ -18,21 +18,34 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.composite.ResourceComposite;
-import org.rhq.enterprise.gui.coregui.client.components.table.Table;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+import java.util.ArrayList;
+import java.util.List;
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.HTMLPane;
import com.smartgwt.client.widgets.IButton;
+import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.HeaderItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
+import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.components.table.Table;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
/**
* The Resource Summary>Overview tab.
*
@@ -42,33 +55,97 @@ public class OverviewView extends LocatableVLayout {
private OverviewForm form;
private Table errorsGrid;
-
+ private Img availabilityImage;
+
public OverviewView(String locatorId, ResourceComposite resourceComposite) {
super(locatorId);
form = new OverviewForm(extendLocatorId("form"), resourceComposite);
- errorsGrid = new Table(extendLocatorId("errors"), "Detected errors", null, null, new String[] { ResourceErrorsDataSource.DETAIL_ID });
+ LocatableDynamicForm currentAgentInfo = new LocatableDynamicForm(extendLocatorId("Agent_Info"));
+ populateAgentInfo(resourceComposite.getResource().getId(), currentAgentInfo);
+
+ errorsGrid = new Table(extendLocatorId("errors"), "Detected errors", null, null,
+ new String[] { ResourceErrorsDataSource.DETAIL_ID });
- Resource resource = resourceComposite.getResource();
+ Resource resource = resourceComposite.getResource();
ResourceErrorsDataSource errors = new ResourceErrorsDataSource(resource.getId());
-
+
errorsGrid.setShowFooter(false);
errorsGrid.setDataSource(errors);
-
- form.setHeight("*");
+
+ // form.setHeight("*");
+ form.setHeight("200");
errorsGrid.setHeight(200); //this should be just enough to fit the maximum of 3 rows in this table (there's at most 1 error per type)
-
+
addMember(form);
+ addMember(currentAgentInfo);
addMember(errorsGrid);
-
+
+ }
+
+ private void populateAgentInfo(final int id, final LocatableDynamicForm currentAgentInfo) {
+ if (currentAgentInfo != null) {
+ setLeft("10%");
+ setWidth("80%");
+ // currentAgentInfo.setBorder("1px dashed black");
+ final List<FormItem> formItems = new ArrayList<FormItem>();
+ HeaderItem headerItem = new HeaderItem("header", "Agent Managing this Resource");
+ headerItem.setValue("Agent Managing this Resource");
+ formItems.add(headerItem);
+ //populate remaining details
+ GWTServiceLookup.getAgentService().getAgentForResource(id, new AsyncCallback<Agent>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to locate agent managing resource id " + id + ".",
+ caught);
+ }
+
+ @Override
+ public void onSuccess(Agent agent) {
+ Log.debug("############ Debug: agent:" + agent);
+ //name
+ String name = "name";
+ StaticTextItem nameValue = new StaticTextItem(name, "Name");
+ nameValue.setValue(agent.getName());
+ formItems.add(nameValue);
+ //address
+ String address = "address";
+ StaticTextItem addressValue = new StaticTextItem(address, "Address");
+ addressValue.setValue(agent.getAddress());
+ formItems.add(addressValue);
+ //port
+ String port = "port";
+ StaticTextItem portValue = new StaticTextItem(port, "Port");
+ portValue.setValue(agent.getPort());
+ formItems.add(portValue);
+
+ // AgentClient client = agentManager.getAgentClient(agent);
+ // pingResults = client.ping(5000L);
+ //
+ // pingResults = agent.ping(5000L);
+ // //Agent Communiation status
+ // availabilityImage.setSrc("resources/availability_"
+ // + (resource.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? "green" : "red")
+ // + "_24.png");
+
+ //Last Received Avail report
+ //Full Endpoint
+ currentAgentInfo.setItems(formItems.toArray(new FormItem[formItems.size()]));
+ currentAgentInfo.markForRedraw();
+ }
+ });
+
+ //final form population
+ currentAgentInfo.setItems(formItems.toArray(new FormItem[formItems.size()]));
+ }
}
- @Override
+ @Override
public void onInit() {
super.onInit();
initErrorsGrid();
}
-
- private void initErrorsGrid() {
+
+ private void initErrorsGrid() {
errorsGrid.setTooltip("Click on the rows to see the error details.");
errorsGrid.getListGrid().addCellClickHandler(new CellClickHandler() {
public void onCellClick(CellClickEvent event) {
@@ -82,26 +159,26 @@ public class OverviewView extends LocatableVLayout {
w.setHeight(480);
w.centerInPage();
w.setCanDragResize(true);
-
+
LocatableVLayout layout = new LocatableVLayout(errorsGrid.extendLocatorId("dialogLayout"), 10);
layout.setDefaultLayoutAlign(Alignment.CENTER);
layout.setLayoutMargin(10);
-
+
w.addItem(layout);
-
- HTMLPane details = new HTMLPane();
+
+ HTMLPane details = new HTMLPane();
details.setContents("<pre>" + record.getAttribute(ResourceErrorsDataSource.DETAIL_ID) + "</pre>");
layout.addMember(details);
-
+
IButton ok = new IButton("Ok");
ok.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
w.destroy();
}
});
-
+
layout.addMember(ok);
-
+
w.show();
}
});
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java
new file mode 100644
index 0000000..75a51a2
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AgentGWTServiceImpl.java
@@ -0,0 +1,56 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.server.gwt;
+
+import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.util.exception.ThrowableUtil;
+import org.rhq.enterprise.gui.coregui.client.gwt.AgentGWTService;
+import org.rhq.enterprise.gui.coregui.server.util.SerialUtility;
+import org.rhq.enterprise.server.core.AgentManagerLocal;
+import org.rhq.enterprise.server.util.LookupUtil;
+
+/**
+ * @author Simeon Pinder
+ */
+public class AgentGWTServiceImpl extends AbstractGWTServiceImpl implements AgentGWTService {
+
+ private static final long serialVersionUID = 1L;
+
+ private AgentManagerLocal agentManager = LookupUtil.getAgentManager();
+
+ @Override
+ public Agent getAgentForResource(int resourceId) {
+ try {
+ //TODO: this needs security that was not handled before. No AgentManagerRemote... ??
+ return SerialUtility.prepare(agentManager.getAgentByResourceId(getSessionSubject(), resourceId),
+ "AgentService.getAgentForResource");
+ } catch (Exception e) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ }
+ }
+
+ // public PageList<Availability> findAvailabilityForResource(int resourceId, PageControl pc) {
+ // try {
+ // return SerialUtility.prepare(availabilityManager.findAvailabilityForResource(getSessionSubject(),
+ // resourceId, pc), "AvailabilityService.findAvailabilityForResource");
+ // } catch (Exception e) {
+ // throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ // }
+ // }
+}
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index 13f4660..0d413a4 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@ -91,6 +91,7 @@
<entry-point class='org.rhq.enterprise.gui.coregui.client.SearchGUI'/>
+ <servlet path="/AgentGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AgentGWTServiceImpl"/>
<servlet path="/AlertGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl"/>
<servlet path="/AlertDefinitionGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertDefinitionGWTServiceImpl"/>
<servlet path="/AlertTemplateGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.AlertTemplateGWTServiceImpl"/>
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
index 9337163..259ee73 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
+++ b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
@@ -128,6 +128,10 @@
<servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI LdapGWTService</servlet-name>
<servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.LdapGWTServiceImpl</servlet-class>
</servlet>
+ <servlet>
+ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AgentGWTService</servlet-name>
+ <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AgentGWTServiceImpl</servlet-class>
+ </servlet>
<servlet-mapping>
@@ -254,6 +258,10 @@
<servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI LdapGWTService</servlet-name>
<url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/LdapGWTService</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AgentGWTService</servlet-name>
+ <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/AgentGWTService</url-pattern>
+ </servlet-mapping>
<welcome-file-list>
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/inventory/resource/PingAgentUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/inventory/resource/PingAgentUIBean.java
index 4879d09..989d10d 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/inventory/resource/PingAgentUIBean.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/inventory/resource/PingAgentUIBean.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.inventory.resource;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.gui.util.FacesContextUtility;
import org.rhq.enterprise.gui.legacy.ParamConstants;
+import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility;
import org.rhq.enterprise.server.agentclient.AgentClient;
import org.rhq.enterprise.server.core.AgentManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -75,7 +76,7 @@ public class PingAgentUIBean {
try {
int resourceId = FacesContextUtility.getRequiredRequestParameter(ParamConstants.RESOURCE_ID_PARAM,
Integer.class);
- agent = agentManager.getAgentByResourceId(resourceId);
+ agent = agentManager.getAgentByResourceId(EnterpriseFacesContextUtility.getSubject(), resourceId);
if (agent == null) {
throw new IllegalStateException("No agent is associated with the resource with id " + resourceId + ".");
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/navigation/resource/ResourceTreeModelUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/navigation/resource/ResourceTreeModelUIBean.java
index 269360c..6b8af11 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/navigation/resource/ResourceTreeModelUIBean.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/navigation/resource/ResourceTreeModelUIBean.java
@@ -80,7 +80,8 @@ public class ResourceTreeModelUIBean {
HibernatePerformanceMonitor.get().stop(monitorId, "ResourceTree root resource");
log.debug("Found root resource in " + (end - start));
- Agent agent = agentManager.getAgentByResourceId(rootResource.getId());
+ Agent agent = agentManager.getAgentByResourceId(EnterpriseFacesContextUtility.getSubject(), rootResource
+ .getId());
start = System.currentTimeMillis();
monitorId = HibernatePerformanceMonitor.get().start();
@@ -120,7 +121,8 @@ public class ResourceTreeModelUIBean {
if (res.getResourceType().getSubCategory() != null) {
// These are children that have subcategories
// Split them by if they are a sub-sub category or just a category
- ResourceSubCategoryFlyweight categoryKey = res.getResourceType().getSubCategory().getParentSubCategory();
+ ResourceSubCategoryFlyweight categoryKey = res.getResourceType().getSubCategory()
+ .getParentSubCategory();
if (categoryKey == null) {
categoryKey = res.getResourceType().getSubCategory();
}
@@ -132,13 +134,13 @@ public class ResourceTreeModelUIBean {
}
}
-
+
Set<String> dupResourceTypeNames = getDuplicateResourceTypeNames(children);
- for(Map.Entry<Object, List<ResourceFlyweight>> entry : children.entrySet()) {
+ for (Map.Entry<Object, List<ResourceFlyweight>> entry : children.entrySet()) {
Object key = entry.getKey();
List<ResourceFlyweight> resources = entry.getValue();
-
+
double avail = 0;
for (ResourceFlyweight res : resources) {
avail += res.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? 1 : 0;
@@ -147,10 +149,11 @@ public class ResourceTreeModelUIBean {
Object nodeData = null;
if (key instanceof ResourceSubCategoryFlyweight) {
- nodeData = new AutoGroupCompositeFlyweight(avail, parentResource, (ResourceSubCategoryFlyweight) key, resources.size());
+ nodeData = new AutoGroupCompositeFlyweight(avail, parentResource,
+ (ResourceSubCategoryFlyweight) key, resources.size());
} else if (key instanceof ResourceTypeFlyweight) {
ResourceTypeFlyweight typeKey = (ResourceTypeFlyweight) key;
-
+
if (typeKey.isSingleton()) {
nodeData = resources.get(0);
} else {
@@ -174,10 +177,10 @@ public class ResourceTreeModelUIBean {
Map<Object, List<ResourceFlyweight>> children = new HashMap<Object, List<ResourceFlyweight>>();
log.debug("composite parent" + compositeParent);
if (compositeParent != null) {
-
+
MembersCategoryHint membersCategory = MembersCategoryHint.NONE;
MembersAvailabilityHint membersAvailabilityHint = MembersAvailabilityHint.UP;
-
+
for (ResourceFlyweight res : compositeParent.getParentResource().getChildResources()) {
boolean process = false;
if (compositeParent.getSubcategory() != null) {
@@ -199,17 +202,18 @@ public class ResourceTreeModelUIBean {
} else if (compositeParent.getResourceType() != null) {
if (compositeParent.getResourceType().equals(res.getResourceType())
&& compositeParent.getParentResource().getId() == res.getParentResource().getId()) {
-
+
addToList(children, res.getResourceType(), res);
process = true;
}
}
-
+
if (process) {
//amend the overall category of all the members of the auto group.
switch (membersCategory) {
case NONE: //this is the first child, so let's use its category as a starting point
- membersCategory = MembersCategoryHint.fromResourceCategory(res.getResourceType().getCategory());
+ membersCategory = MembersCategoryHint.fromResourceCategory(res.getResourceType()
+ .getCategory());
break;
case MIXED: //this is the "final" state. The children type is not going to change from this.
break;
@@ -218,34 +222,36 @@ public class ResourceTreeModelUIBean {
membersCategory = MembersCategoryHint.MIXED;
}
}
-
+
//amend the availability hint of the autogroup. If all resources are up, the hint is UP, if some of the resources
//are down, the hint is DOWN, if some of the resources' avail state is unknown, the hint is UNKNOWN.
//The down state has the highest priority.
switch (membersAvailabilityHint) {
case UP:
- membersAvailabilityHint = MembersAvailabilityHint.fromAvailabilityType(res.getCurrentAvailability().getAvailabilityType());
+ membersAvailabilityHint = MembersAvailabilityHint.fromAvailabilityType(res
+ .getCurrentAvailability().getAvailabilityType());
break;
case UNKNOWN:
if (res.getCurrentAvailability().getAvailabilityType() == AvailabilityType.DOWN) {
membersAvailabilityHint = MembersAvailabilityHint.DOWN;
}
break;
- case DOWN:; //a "terminal" state... if some resource is down, the overall state is going to be down as that is the most important information.
+ case DOWN:
+ ; //a "terminal" state... if some resource is down, the overall state is going to be down as that is the most important information.
}
}
}
-
+
compositeParent.setMembersCategoryHint(membersCategory);
compositeParent.setMembersAvailabilityHint(membersAvailabilityHint);
}
AutoGroupCompositeFlyweight compositeParentNode = (AutoGroupCompositeFlyweight) parentNode.getData();
-
+
for (Map.Entry<Object, List<ResourceFlyweight>> entry : children.entrySet()) {
Object key = entry.getKey();
List<ResourceFlyweight> resources = entry.getValue();
-
+
if (compositeParentNode.getSubcategory() != null) {
double avail = 0;
for (ResourceFlyweight res : resources) {
@@ -262,13 +268,13 @@ public class ResourceTreeModelUIBean {
if (typeKey.isSingleton()) {
nodeData = resources.get(0);
} else {
- nodeData = new AutoGroupCompositeFlyweight(avail, compositeParent.getParentResource(), typeKey,
- resources.size(), false);
+ nodeData = new AutoGroupCompositeFlyweight(avail, compositeParent.getParentResource(),
+ typeKey, resources.size(), false);
}
}
ResourceTreeNode node = new ResourceTreeNode(nodeData, parentNode);
load(node);
-
+
if (!recursivelyLocked(node)) {
parentNode.getChildren().add(node);
}
@@ -279,7 +285,7 @@ public class ResourceTreeModelUIBean {
if (!recursivelyLocked(node)) {
parentNode.getChildren().add(node);
}
- }
+ }
}
}
}
@@ -289,7 +295,7 @@ public class ResourceTreeModelUIBean {
if (node.getData() instanceof ResourceFlyweight && !((ResourceFlyweight) node.getData()).isLocked()) {
return false;
}
-
+
boolean allLocked = true;
for (ResourceTreeNode child : node.getChildren()) {
if (!recursivelyLocked(child))
@@ -337,15 +343,15 @@ public class ResourceTreeModelUIBean {
}
return dupResourceTypeNames;
}
-
+
private static <K, V> void addToList(Map<K, List<V>> mapOfLists, K key, V value) {
List<V> list = mapOfLists.get(key);
-
+
if (list == null) {
list = new ArrayList<V>();
mapOfLists.put(key, list);
}
-
+
list.add(value);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 2ceaa88..76c4d15 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -243,8 +243,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
if (alertDefinition.getRecoveryId() != 0) {
// only add to the cache if the to-be-recovered definition is disabled, and thus needs recovering
// use entityManager direct to bypass security checks, we already know this user is authorized
- AlertDefinition toBeRecoveredDefinition = entityManager.find(AlertDefinition.class,
- alertDefinition.getRecoveryId());
+ AlertDefinition toBeRecoveredDefinition = entityManager.find(AlertDefinition.class, alertDefinition
+ .getRecoveryId());
if (toBeRecoveredDefinition.getEnabled() == false) {
addToCache = true;
}
@@ -254,7 +254,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
}
if (addToCache) {
- notifyAlertConditionCacheManager("createAlertDefinition", alertDefinition, AlertDefinitionEvent.CREATED);
+ notifyAlertConditionCacheManager(subject, "createAlertDefinition", alertDefinition,
+ AlertDefinitionEvent.CREATED);
}
return alertDefinition.getId();
@@ -309,7 +310,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
// alertTemplates and groupAlertDefinitions do not need to update the cache
isResourceLevel = (null != alertDefinition.getResource());
if (isResourceLevel) {
- notifyAlertConditionCacheManager("removeAlertDefinitions", alertDefinition,
+ notifyAlertConditionCacheManager(subject, "removeAlertDefinitions", alertDefinition,
AlertDefinitionEvent.DELETED);
}
if (alertDefinition.getResourceGroup() != null) {
@@ -337,7 +338,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
// alertTemplates and groupAlertDefinitions do not need to update the cache
isResourceLevel = (null != alertDefinition.getResource());
if (isResourceLevel) {
- notifyAlertConditionCacheManager("enableAlertDefinitions", alertDefinition,
+ notifyAlertConditionCacheManager(subject, "enableAlertDefinitions", alertDefinition,
AlertDefinitionEvent.ENABLED);
}
}
@@ -395,7 +396,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
// alertTemplates and groupAlertDefinitions do not need to update the cache
isResourceLevel = (null != alertDefinition.getResource());
if (isResourceLevel) {
- notifyAlertConditionCacheManager("disableAlertDefinitions", alertDefinition,
+ notifyAlertConditionCacheManager(subject, "disableAlertDefinitions", alertDefinition,
AlertDefinitionEvent.DISABLED);
}
}
@@ -423,7 +424,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
entityManager.persist(newAlertDefinition);
- notifyAlertConditionCacheManager("copyAlertDefinitions", alertDefinition, AlertDefinitionEvent.CREATED);
+ notifyAlertConditionCacheManager(subject, "copyAlertDefinitions", alertDefinition,
+ AlertDefinitionEvent.CREATED);
}
}
}
@@ -499,7 +501,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
for (AlertCondition nextCondition : oldAlertDefinition.getConditions()) {
LOG.debug("OldAlertCondition[ id=" + nextCondition.getId() + " ]");
}
- notifyAlertConditionCacheManager("updateAlertDefinition", oldAlertDefinition, AlertDefinitionEvent.DELETED);
+ notifyAlertConditionCacheManager(subject, "updateAlertDefinition", oldAlertDefinition,
+ AlertDefinitionEvent.DELETED);
}
/*
@@ -540,8 +543,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
// if this was a recovery alert, or was recently turned into one
if (newAlertDefinition.getRecoveryId() != 0) {
// only add to the cache if the to-be-recovered definition is disabled, and thus needs recovering
- AlertDefinition toBeRecoveredDefinition = getAlertDefinitionById(subject,
- newAlertDefinition.getRecoveryId());
+ AlertDefinition toBeRecoveredDefinition = getAlertDefinitionById(subject, newAlertDefinition
+ .getRecoveryId());
if (toBeRecoveredDefinition.getEnabled() == false) {
addToCache = true;
}
@@ -555,7 +558,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
for (AlertCondition nextCondition : newAlertDefinition.getConditions()) {
LOG.debug("NewAlertCondition[ id=" + nextCondition.getId() + " ]");
}
- notifyAlertConditionCacheManager("updateAlertDefinition", newAlertDefinition,
+ notifyAlertConditionCacheManager(subject, "updateAlertDefinition", newAlertDefinition,
AlertDefinitionEvent.CREATED);
}
}
@@ -613,7 +616,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
return;
}
- private void notifyAlertConditionCacheManager(String methodName, AlertDefinition alertDefinition,
+ private void notifyAlertConditionCacheManager(Subject subject, String methodName, AlertDefinition alertDefinition,
AlertDefinitionEvent alertDefinitionEvent) {
if (LOG.isDebugEnabled()) {
LOG.debug("Invoking... " + methodName + " with AlertDefinitionEvent[" + alertDefinitionEvent + "]");
@@ -624,7 +627,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
if (LOG.isDebugEnabled()) {
LOG.debug("Invoking... agentStatusManager.updateByResource(" + resourceId + ")");
}
- agentStatusManager.updateByResource(resourceId);
+ agentStatusManager.updateByResource(subject, resourceId);
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("notifyAlertConditionCacheManager skipping alert template or group alert definition");
@@ -634,7 +637,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
if (LOG.isDebugEnabled()) {
LOG.debug("Invoking... agentStatusManager.updateByAlertDefinition(" + alertDefinition.getId() + ")");
}
- agentStatusManager.updateByAlertDefinition(alertDefinition.getId());
+ agentStatusManager.updateByAlertDefinition(subject, alertDefinition.getId());
}
}
@@ -696,8 +699,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
public PageList<AlertDefinition> findAlertDefinitionsByCriteria(Subject subject, AlertDefinitionCriteria criteria) {
CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject, criteria);
if (authorizationManager.isInventoryManager(subject) == false) {
- generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.RESOURCE,
- subject.getId());
+ generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.RESOURCE, subject
+ .getId());
}
CriteriaQueryRunner<AlertDefinition> queryRunner = new CriteriaQueryRunner(criteria, generator, entityManager);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index e6fc90c..00fe978 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -862,7 +862,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
Resource platform, boolean isCleanDeployment, boolean isRevert) throws Exception {
int platformId = platform.getId();
- AgentClient agentClient = agentManager.getAgentClient(platformId);
+ AgentClient agentClient = agentManager.getAgentClient(subject, platformId);
BundleAgentService bundleAgentService = agentClient.getBundleAgentService();
// The BundleResourceDeployment record must exist in the db before the agent request because the agent may try
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
index 61655c9..737e378 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
@@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.annotation.IgnoreDependency;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.measurement.MeasurementBaseline;
import org.rhq.core.domain.resource.Agent;
@@ -106,7 +107,7 @@ public class StatusManagerBean implements StatusManagerLocal {
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
- public void updateByResource(int resourceId) {
+ public void updateByResource(Subject subject, int resourceId) {
log.debug("About to mark status by resource");
/*
@@ -125,7 +126,7 @@ public class StatusManagerBean implements StatusManagerLocal {
* this is informational debugging only - do NOT change the status bits here
*/
if (log.isDebugEnabled()) {
- Agent agent = agentManager.getAgentByResourceId(resourceId);
+ Agent agent = agentManager.getAgentByResourceId(subject, resourceId);
log.debug("Marking status, agent[id=" + agent.getId() + ", status=" + agent.getStatus()
+ "] for resource[id=" + resourceId + "]");
@@ -134,7 +135,7 @@ public class StatusManagerBean implements StatusManagerLocal {
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
- public void updateByAlertDefinition(int alertDefinitionId) {
+ public void updateByAlertDefinition(Subject subject, int alertDefinitionId) {
log.debug("About to mark status by alert definition");
// alert templates and group alert definitions do not represent cache-ready entries
@@ -159,7 +160,7 @@ public class StatusManagerBean implements StatusManagerLocal {
*/
if (log.isDebugEnabled()) {
AlertDefinition definition = entityManager.find(AlertDefinition.class, alertDefinitionId);
- Agent agent = agentManager.getAgentByResourceId(definition.getResource().getId());
+ Agent agent = agentManager.getAgentByResourceId(subject, definition.getResource().getId());
log.debug("Marking status, agent[id=" + agent.getId() + ", status=" + agent.getStatus()
+ "] for alertDefinition[id=" + alertDefinitionId + "]");
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerLocal.java
index 26322d2..95f11b6 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerLocal.java
@@ -22,6 +22,8 @@ import java.util.List;
import javax.ejb.Local;
+import org.rhq.core.domain.auth.Subject;
+
/**
* @author Joseph Marques
*/
@@ -32,9 +34,9 @@ public interface StatusManagerLocal {
void markGlobalCache();
- void updateByResource(int resourceId);
+ void updateByResource(Subject subject, int resourceId);
- void updateByAlertDefinition(int alertDefinitionId);
+ void updateByAlertDefinition(Subject subject, int alertDefinitionId);
void updateByMeasurementBaseline(int baselineId);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
index 78a5aa4..201fccf 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
@@ -58,6 +58,8 @@ import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.stream.StreamUtil;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.agentclient.AgentClient;
+import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
+import org.rhq.enterprise.server.authz.PermissionException;
import org.rhq.enterprise.server.authz.RequiredPermission;
import org.rhq.enterprise.server.cloud.FailoverListManagerLocal;
import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceMBean;
@@ -96,6 +98,9 @@ public class AgentManagerBean implements AgentManagerLocal {
@EJB
private SystemManagerLocal systemManager;
+ @EJB
+ private AuthorizationManagerLocal authorizationManager;
+
// constants used for the agent update version file
private static final String RHQ_SERVER_VERSION = "rhq-server.version";
private static final String RHQ_SERVER_BUILD_NUMBER = "rhq-server.build-number";
@@ -153,8 +158,8 @@ public class AgentManagerBean implements AgentManagerLocal {
}
@ExcludeDefaultInterceptors
- public AgentClient getAgentClient(int resourceId) {
- Agent agent = getAgentByResourceId(resourceId);
+ public AgentClient getAgentClient(Subject subject, int resourceId) {
+ Agent agent = getAgentByResourceId(subject, resourceId);
if (agent == null) {
log.debug("Resource [" + resourceId + "] does not exist or has no agent assigned");
@@ -351,10 +356,17 @@ public class AgentManagerBean implements AgentManagerLocal {
}
@ExcludeDefaultInterceptors
- public Agent getAgentByResourceId(int resourceId) {
+ public Agent getAgentByResourceId(Subject subject, int resourceId) {
Agent agent;
try {
+ //insert logged in check and view resources perm check as method calld from GWT*Service
+ if ((subject != null)
+ && (!authorizationManager.hasResourcePermission(subject, Permission.VIEW_RESOURCE, resourceId))) {
+ throw new PermissionException("Can not get agent details - " + subject + " lacks "
+ + Permission.VIEW_RESOURCE + " for resource[id=" + resourceId + "]");
+ }
+
Query query = entityManager.createNamedQuery(Agent.QUERY_FIND_BY_RESOURCE_ID);
query.setParameter("resourceId", resourceId);
agent = (Agent) query.getSingleResult();
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
index bc744f1..4821b91 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
@@ -82,7 +82,7 @@ public interface AgentManagerLocal {
* @return an agent client that can be used to send commands to the JON agent that manages the resource
*/
@NotNull
- AgentClient getAgentClient(int resourceId);
+ AgentClient getAgentClient(Subject subject, int resourceId);
/**
* Returns a collection of all agents currently in inventory.
@@ -151,12 +151,13 @@ public interface AgentManagerLocal {
/**
* Given a resource ID, this will return the agent responsible for servicing that resource.
+ * @param subject
*
* @param resourceId
*
* @return the agent that services the resource, or <code>null</code> if the resource ID was invalid
*/
- Agent getAgentByResourceId(int resourceId);
+ Agent getAgentByResourceId(Subject subject, int resourceId);
/**
* Given a resource ID, this will return the agent id responsible for servicing that resource.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
index 6a8b6a4..d9b5a3d 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
@@ -303,7 +303,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
public void disableDefaultCollectionForMeasurementDefinitions(Subject subject, int[] measurementDefinitionIds,
boolean updateSchedules) {
- modifyDefaultCollectionIntervalForMeasurementDefinitions(measurementDefinitionIds, -1, updateSchedules);
+ modifyDefaultCollectionIntervalForMeasurementDefinitions(subject, measurementDefinitionIds, -1, updateSchedules);
return;
}
@@ -338,7 +338,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
public void updateDefaultCollectionIntervalForMeasurementDefinitions(Subject subject,
int[] measurementDefinitionIds, long collectionInterval, boolean updateExistingSchedules) {
collectionInterval = verifyMinimumCollectionInterval(collectionInterval);
- modifyDefaultCollectionIntervalForMeasurementDefinitions(measurementDefinitionIds, collectionInterval,
+ modifyDefaultCollectionIntervalForMeasurementDefinitions(subject, measurementDefinitionIds, collectionInterval,
updateExistingSchedules);
}
@@ -347,6 +347,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
* definitions. If updateExistingSchedules is true, the schedules for the corresponding metrics or all inventoried
* Resources are also updated. Otherwise, the updated templates will only affect Resources that added to
* inventory in the future.
+ * @param subject
*
* @param measurementDefinitionIds the IDs of the metric defs whose default schedules should be updated
* @param collectionInterval if > 0, enable the metric with this value as the the new collection
@@ -356,7 +357,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
* interval allowed
* @param updateExistingSchedules if true, existing Resource schedules for metrics of this type should also be updated
*/
- private void modifyDefaultCollectionIntervalForMeasurementDefinitions(
+ private void modifyDefaultCollectionIntervalForMeasurementDefinitions(Subject subject,
int[] measurementDefinitionIds, long collectionInterval, boolean updateExistingSchedules) {
if (measurementDefinitionIds == null || measurementDefinitionIds.length == 0) {
@@ -370,8 +371,8 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
for (int batchIndex = 0; (batchIndex < measurementDefinitionIds.length); batchIndex += 1000) {
int[] batchIdArray = ArrayUtils.copyOfRange(measurementDefinitionIds, batchIndex, batchIndex + 1000);
- modifyDefaultCollectionIntervalForMeasurementDefinitions(batchIdArray, enable,
- collectionInterval, updateExistingSchedules);
+ modifyDefaultCollectionIntervalForMeasurementDefinitions(subject, batchIdArray, enable, collectionInterval,
+ updateExistingSchedules);
}
}
@@ -384,6 +385,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
* <strong>Only the 3-param modifyDefaultCollectionIntervalForMeasurementDefinitions method should call this method,
* since it will batch the metric defs specified by the user to ensure no more than 1000 metric defs are passed to
* this method.</strong>
+ * @param subject
*
* @param measurementDefinitionIds the IDs of the metric defs whose default schedules should be updated; the size of
* this array must be <= 1000
@@ -396,7 +398,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
* @param updateExistingSchedules if true, existing Resource schedules for metrics of this type should also be updated
*/
@SuppressWarnings("unchecked")
- private void modifyDefaultCollectionIntervalForMeasurementDefinitions(
+ private void modifyDefaultCollectionIntervalForMeasurementDefinitions(Subject subject,
int[] measurementDefinitionIds, boolean enable, long collectionInterval, boolean updateExistingSchedules) {
// this method has been rewritten to ensure that the Hibernate cache is not utilized in an
@@ -494,7 +496,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
// The number of Agents is manageable, so we can work with entities here
for (Integer resourceId : reqMap.keySet()) {
- Agent agent = agentManager.getAgentByResourceId(resourceId);
+ Agent agent = agentManager.getAgentByResourceId(subject, resourceId);
Set<ResourceMeasurementScheduleRequest> agentUpdate = agentUpdates.get(agent);
if (agentUpdate == null) {
@@ -1156,7 +1158,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
}
public void enableMeasurementTemplates(Subject subject, int[] measurementDefinitionIds) {
- modifyDefaultCollectionIntervalForMeasurementDefinitions(measurementDefinitionIds, 0, true);
+ modifyDefaultCollectionIntervalForMeasurementDefinitions(subject, measurementDefinitionIds, 0, true);
}
/**
@@ -1181,7 +1183,7 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
updateSchedulesForContext(subject, EntityContext.forResource(resourceId), measurementDefinitionIds,
collectionInterval);
}
-
+
public void updateSchedulesForCompatibleGroup(Subject subject, int groupId, int[] measurementDefinitionIds,
long collectionInterval) {
// don't verify minimum collection interval here, it will be caught by updateMeasurementSchedules callee
@@ -1201,29 +1203,27 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
// check authorization up front, so that criteria-based queries can run without authz checks
switch (context.type) {
- case Resource:
- if (authorizationManager.canViewResource(subject, context.resourceId) == false) {
- throw new PermissionException("User [" + subject.getName()
- + "] does not have permission to view measurement schedules for resource[id=" +
- context.resourceId
- + "]");
- }
- break;
- case ResourceGroup:
- if (authorizationManager.canViewGroup(subject, context.groupId) == false) {
- throw new PermissionException("User [" + subject.getName()
- + "] does not have permission to view measurement schedules for resourceGroup[id="
- + context.groupId + "]");
- }
- break;
- case AutoGroup:
- if (authorizationManager.canViewAutoGroup(subject, context.parentResourceId, context.resourceTypeId) ==
- false) {
- throw new PermissionException("User [" + subject.getName()
- + "] does not have permission to view measurement schedules for autoGroup[parentResourceId="
- + context.parentResourceId + ", resourceTypeId=" + context.resourceTypeId + "]");
- }
- break;
+ case Resource:
+ if (authorizationManager.canViewResource(subject, context.resourceId) == false) {
+ throw new PermissionException("User [" + subject.getName()
+ + "] does not have permission to view measurement schedules for resource[id=" + context.resourceId
+ + "]");
+ }
+ break;
+ case ResourceGroup:
+ if (authorizationManager.canViewGroup(subject, context.groupId) == false) {
+ throw new PermissionException("User [" + subject.getName()
+ + "] does not have permission to view measurement schedules for resourceGroup[id="
+ + context.groupId + "]");
+ }
+ break;
+ case AutoGroup:
+ if (authorizationManager.canViewAutoGroup(subject, context.parentResourceId, context.resourceTypeId) == false) {
+ throw new PermissionException("User [" + subject.getName()
+ + "] does not have permission to view measurement schedules for autoGroup[parentResourceId="
+ + context.parentResourceId + ", resourceTypeId=" + context.resourceTypeId + "]");
+ }
+ break;
}
PageList<MeasurementDefinition> definitions;
@@ -1246,16 +1246,16 @@ public class MeasurementScheduleManagerBean implements MeasurementScheduleManage
MeasurementScheduleCriteria criteria = new MeasurementScheduleCriteria();
//criteria.addFilterDefinitionIds(measurementDefinitionIds);
switch (context.type) {
- case Resource:
- criteria.addFilterResourceId(context.resourceId);
- break;
- case ResourceGroup:
- criteria.addFilterResourceGroupId(context.groupId);
- break;
- case AutoGroup:
- criteria.addFilterAutoGroupParentResourceId(context.parentResourceId);
- criteria.addFilterAutoGroupResourceTypeId(context.resourceTypeId);
- break;
+ case Resource:
+ criteria.addFilterResourceId(context.resourceId);
+ break;
+ case ResourceGroup:
+ criteria.addFilterResourceGroupId(context.groupId);
+ break;
+ case AutoGroup:
+ criteria.addFilterAutoGroupParentResourceId(context.parentResourceId);
+ criteria.addFilterAutoGroupResourceTypeId(context.resourceTypeId);
+ break;
}
criteria.setPageControl(pc); // for primary return list, use passed PageControl
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
index 022811b..21d0770 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
@@ -855,7 +855,7 @@ public class OperationManagerBean implements OperationManagerLocal, OperationMan
boolean canceled = false;
try {
- agent = agentManager.getAgentClient(resourceId);
+ agent = agentManager.getAgentClient(subject, resourceId);
// since this method is usually called by the UI, we want to quickly determine if we can even talk to the agent
if (agent.ping(5000L)) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java
index 725e074..2139ac7 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java
@@ -18,6 +18,8 @@
*/
package org.rhq.enterprise.server.operation;
+import javax.ejb.EJBException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobDataMap;
@@ -37,8 +39,6 @@ import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.resource.ResourceNotFoundException;
import org.rhq.enterprise.server.util.LookupUtil;
-import javax.ejb.EJBException;
-
/**
* A job that invokes an operation on a single resource.
*
@@ -105,8 +105,8 @@ public class ResourceOperationJob extends OperationJob {
if (isResourceUncommitted(context.getJobDetail())) {
int resourceId = getResourceId(context.getJobDetail());
- String msg = "The resource with id " + resourceId + " is not committed in inventory. It may have " +
- "been deleted from inventory. Canceling job.";
+ String msg = "The resource with id " + resourceId + " is not committed in inventory. It may have "
+ + "been deleted from inventory. Canceling job.";
log.warn(msg);
throw new CancelJobException(msg, e);
}
@@ -132,8 +132,7 @@ public class ResourceOperationJob extends OperationJob {
try {
Resource resource = resourceMgr.getResource(getOverlord(), resourceId);
return isResourceUncommitted(resource);
- }
- catch (EJBException e) {
+ } catch (EJBException e) {
if (e.getCausedByException() instanceof ResourceNotFoundException) {
return true;
}
@@ -145,7 +144,6 @@ public class ResourceOperationJob extends OperationJob {
return resource == null || resource.getInventoryStatus() != InventoryStatus.COMMITTED;
}
-
/**
* Actually invokes the operation by sending the command to the agent. This is package-scoped so the group job can
* call this for each member resource in the group. If groupHistory is not <code>null</code>, it means this resource
@@ -171,14 +169,14 @@ public class ResourceOperationJob extends OperationJob {
Resource resource = schedule.getResource();
if (isResourceUncommitted(resource)) {
- String msg = "The resource with id " + resource.getId() + " is not committed in inventory. It may " +
- "have been deleted from inventory. Canceling job.";
+ String msg = "The resource with id " + resource.getId() + " is not committed in inventory. It may "
+ + "have been deleted from inventory. Canceling job.";
log.warn(msg);
throw new CancelJobException(msg);
}
AgentManagerLocal agentManager = LookupUtil.getAgentManager();
- AgentClient agentClient = agentManager.getAgentClient(resource.getId());
+ AgentClient agentClient = agentManager.getAgentClient(schedule.getSubject(), resource.getId());
agentClient.getOperationAgentService().invokeOperation(resourceHistory.getJobId().toString(),
resource.getId(), schedule.getOperationName(), schedule.getParameters());
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 0c7198a..7a6fea3 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -267,7 +267,7 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
if (resource.getParentResource() == null) {
try {
// note, this needs to be done before the marking because the agent reference is going to be set to null
- doomedAgent = agentManager.getAgentByResourceId(resourceId);
+ doomedAgent = agentManager.getAgentByResourceId(user, resourceId);
} catch (Exception e) {
doomedAgent = null;
log.warn("This warning should occur in TEST code only! " + e);
@@ -277,7 +277,7 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
AgentClient agentClient = null;
try {
// The test code does not always generate agents for the resources. Catch and log any problem but continue
- agentClient = agentManager.getAgentClient(resourceId);
+ agentClient = agentManager.getAgentClient(user, resourceId);
} catch (Throwable t) {
log.warn("No AgentClient found for resource [" + resource
+ "]. Unable to inform agent of inventory removal (this may be ok): " + t);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/support/SupportManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/support/SupportManagerBean.java
index 6cdb34a..b81b0a8 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/support/SupportManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/support/SupportManagerBean.java
@@ -64,7 +64,7 @@ public class SupportManagerBean implements SupportManagerLocal, SupportManagerRe
public InputStream getSnapshotReportStream(Subject subject, int resourceId, String name, String description)
throws Exception {
- AgentClient agentClient = this.agentManager.getAgentClient(resourceId);
+ AgentClient agentClient = this.agentManager.getAgentClient(subject, resourceId);
SupportAgentService supportService = agentClient.getSupportAgentService();
InputStream snapshotStream = supportService.getSnapshotReport(resourceId, name, description);
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
index eecf9a5..d6acd3b 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
@@ -25,6 +25,12 @@ import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
+import org.testng.ITestResult;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertDampening;
@@ -48,22 +54,16 @@ import org.rhq.helpers.perftest.support.testng.DatabaseSetupInterceptor;
import org.rhq.helpers.perftest.support.testng.DatabaseState;
import org.rhq.helpers.perftest.support.testng.PerformanceReporting;
-import org.testng.ITestResult;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Listeners;
-import org.testng.annotations.Test;
-
/**
* Performance test the availabilities subsystem
*
* @author Heiko W. Rupp
* @author Lukas Krejci
*/
-@Test(groups = "PERF" )
-@Listeners({ DatabaseSetupInterceptor.class })
-(a)PerformanceReporting(exporter=ExcelExporter.class)
-@DatabaseState(url = "perftest/AvailabilityInsertPurgeTest-testOne-data.xml.zip", dbVersion="2.101")
+@Test(groups = "PERF")
+@Listeners( { DatabaseSetupInterceptor.class })
+@PerformanceReporting(exporter = ExcelExporter.class)
+@DatabaseState(url = "perftest/AvailabilityInsertPurgeTest-testOne-data.xml.zip", dbVersion = "2.101")
public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
ResourceManagerLocal resourceManager;
@@ -74,8 +74,9 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
private static final int MILLIS_APART = 2000;
private static final String ROUND__FORMAT = "Round %6d";
private static final String PURGE__FORMAT = "Purge %6d";
- private static final int[] ROUNDS = new int[]{1000,2000,3000,5000,10000};
-// private static final int[] ROUNDS = new int[]{10,20};
+ private static final int[] ROUNDS = new int[] { 1000, 2000, 3000, 5000, 10000 };
+
+ // private static final int[] ROUNDS = new int[]{10,20};
@BeforeMethod
public void beforeMethod(Method method) {
@@ -103,10 +104,9 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
@AfterMethod
public void afterMethod(ITestResult result, Method meth) {
- super.reportTimings(result,meth);
+ super.reportTimings(result, meth);
}
-
/**
* Send availability reports to the server and measure timing.
* For each resource, availability alternates for each report.
@@ -123,15 +123,15 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
Query q = em.createQuery("SELECT r FROM Resource r");
List<Resource> resources = q.getResultList();
Resource res = resources.get(0);
- Agent agent = agentManager.getAgentByResourceId(res.getId());
+ Agent agent = agentManager.getAgentByResourceId(overlord, res.getId());
q = em.createQuery("SELECT COUNT(a) FROM Availability a ");
Object o = q.getSingleResult();
- Long l = (Long)o;
- if (l!=0) {
+ Long l = (Long) o;
+ if (l != 0) {
throw new IllegalStateException("Availabilities table is not empty");
}
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
for (int MULTI : ROUNDS) {
String round = String.format(ROUND__FORMAT, MULTI);
@@ -151,38 +151,37 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
}
// merge is over. Now lets purge in two steps
- startTiming(String.format(PURGE__FORMAT,MULTI));
- availabilityManager.purgeAvailabilities(t1 + (MULTI/2)*MILLIS_APART);
- endTiming(String.format(PURGE__FORMAT,MULTI));
- startTiming(String.format(PURGE__FORMAT,MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
+ availabilityManager.purgeAvailabilities(t1 + (MULTI / 2) * MILLIS_APART);
+ endTiming(String.format(PURGE__FORMAT, MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
availabilityManager.purgeAvailabilities(t1);
- endTiming(String.format(PURGE__FORMAT,MULTI));
+ endTiming(String.format(PURGE__FORMAT, MULTI));
// Vacuum the db
overlord = LookupUtil.getSubjectManager().getOverlord();
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
}
+ long timing1000 = getTiming(String.format(ROUND__FORMAT, 1000));
+ long timing2000 = getTiming(String.format(ROUND__FORMAT, 2000));
+ long timing3000 = getTiming(String.format(ROUND__FORMAT, 3000));
+ long timing5000 = getTiming(String.format(ROUND__FORMAT, 5000));
+ long timing10000 = getTiming(String.format(ROUND__FORMAT, 10000));
- long timing1000 = getTiming(String.format(ROUND__FORMAT,1000));
- long timing2000 = getTiming(String.format(ROUND__FORMAT,2000));
- long timing3000 = getTiming(String.format(ROUND__FORMAT,3000));
- long timing5000 = getTiming(String.format(ROUND__FORMAT,5000));
- long timing10000 = getTiming(String.format(ROUND__FORMAT,10000));
+ assertLinear(timing1000, timing2000, 2, "Merge2");
+ assertLinear(timing1000, timing3000, 3, "Merge3");
+ assertLinear(timing1000, timing5000, 5, "Merge5");
+ assertLinear(timing1000, timing10000, 10, "Merge10");
- assertLinear(timing1000,timing2000,2,"Merge2");
- assertLinear(timing1000,timing3000,3,"Merge3");
- assertLinear(timing1000,timing5000,5,"Merge5");
- assertLinear(timing1000,timing10000,10,"Merge10");
+ long purge1000 = getTiming(String.format(PURGE__FORMAT, 1000));
+ long purge2000 = getTiming(String.format(PURGE__FORMAT, 2000));
+ long purge3000 = getTiming(String.format(PURGE__FORMAT, 3000));
+ long purge5000 = getTiming(String.format(PURGE__FORMAT, 5000));
- long purge1000 = getTiming(String.format(PURGE__FORMAT,1000));
- long purge2000 = getTiming(String.format(PURGE__FORMAT,2000));
- long purge3000 = getTiming(String.format(PURGE__FORMAT,3000));
- long purge5000 = getTiming(String.format(PURGE__FORMAT,5000));
-
- assertLinear(purge1000,purge2000,2,"Purge2");
- assertLinear(purge1000,purge3000,3,"Purge3");
- assertLinear(purge1000,purge5000,5,"Purge3");
+ assertLinear(purge1000, purge2000, 2, "Purge2");
+ assertLinear(purge1000, purge3000, 3, "Purge3");
+ assertLinear(purge1000, purge5000, 5, "Purge3");
}
@@ -194,12 +193,11 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
public void testRandom() throws Exception {
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
-
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT r FROM Resource r");
List<Resource> resources = q.getResultList();
Resource res = resources.get(0);
- Agent agent = agentManager.getAgentByResourceId(res.getId());
+ Agent agent = agentManager.getAgentByResourceId(overlord, res.getId());
for (int MULTI : ROUNDS) {
String round = String.format(ROUND__FORMAT, MULTI);
@@ -209,7 +207,7 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
AvailabilityReport report = new AvailabilityReport(agent.getName());
for (Resource r : resources) {
- int rand = (int) (Math.random()*2);
+ int rand = (int) (Math.random() * 2);
AvailabilityType at = (rand == 1) ? AvailabilityType.UP : AvailabilityType.DOWN;
Availability a = new Availability(r, new Date(t1 + i * MILLIS_APART), at);
report.addAvailability(a);
@@ -220,39 +218,37 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
}
// merge is over. Now lets purge in two steps
- startTiming(String.format(PURGE__FORMAT,MULTI));
- availabilityManager.purgeAvailabilities(t1 + (MULTI/2)*MILLIS_APART);
- endTiming(String.format(PURGE__FORMAT,MULTI));
- startTiming(String.format(PURGE__FORMAT,MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
+ availabilityManager.purgeAvailabilities(t1 + (MULTI / 2) * MILLIS_APART);
+ endTiming(String.format(PURGE__FORMAT, MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
availabilityManager.purgeAvailabilities(t1);
- endTiming(String.format(PURGE__FORMAT,MULTI));
+ endTiming(String.format(PURGE__FORMAT, MULTI));
// Vacuum the db
overlord = LookupUtil.getSubjectManager().getOverlord();
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
}
- long timing1000 = getTiming(String.format(ROUND__FORMAT,1000));
- long timing2000 = getTiming(String.format(ROUND__FORMAT,2000));
- long timing3000 = getTiming(String.format(ROUND__FORMAT,3000));
- long timing5000 = getTiming(String.format(ROUND__FORMAT,5000));
- long timing10000 = getTiming(String.format(ROUND__FORMAT,10000));
-
-
- assertLinear(timing1000,timing2000,2,"Merge2");
- assertLinear(timing1000,timing3000,3,"Merge3");
- assertLinear(timing1000,timing5000,5,"Merge5");
- assertLinear(timing1000,timing10000,10,"Merge10");
+ long timing1000 = getTiming(String.format(ROUND__FORMAT, 1000));
+ long timing2000 = getTiming(String.format(ROUND__FORMAT, 2000));
+ long timing3000 = getTiming(String.format(ROUND__FORMAT, 3000));
+ long timing5000 = getTiming(String.format(ROUND__FORMAT, 5000));
+ long timing10000 = getTiming(String.format(ROUND__FORMAT, 10000));
+ assertLinear(timing1000, timing2000, 2, "Merge2");
+ assertLinear(timing1000, timing3000, 3, "Merge3");
+ assertLinear(timing1000, timing5000, 5, "Merge5");
+ assertLinear(timing1000, timing10000, 10, "Merge10");
- long purge1000 = getTiming(String.format(PURGE__FORMAT,1000));
- long purge2000 = getTiming(String.format(PURGE__FORMAT,2000));
- long purge3000 = getTiming(String.format(PURGE__FORMAT,3000));
- long purge5000 = getTiming(String.format(PURGE__FORMAT,5000));
+ long purge1000 = getTiming(String.format(PURGE__FORMAT, 1000));
+ long purge2000 = getTiming(String.format(PURGE__FORMAT, 2000));
+ long purge3000 = getTiming(String.format(PURGE__FORMAT, 3000));
+ long purge5000 = getTiming(String.format(PURGE__FORMAT, 5000));
- assertLinear(purge1000,purge2000,2,"Purge2");
- assertLinear(purge1000,purge3000,3,"Purge3");
- assertLinear(purge1000,purge5000,5,"Purge3");
+ assertLinear(purge1000, purge2000, 2, "Purge2");
+ assertLinear(purge1000, purge3000, 3, "Purge3");
+ assertLinear(purge1000, purge5000, 5, "Purge3");
}
@@ -264,12 +260,11 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
public void testAlwaysUp() throws Exception {
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
-
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT r FROM Resource r");
List<Resource> resources = q.getResultList();
Resource res = resources.get(0);
- Agent agent = agentManager.getAgentByResourceId(res.getId());
+ Agent agent = agentManager.getAgentByResourceId(overlord, res.getId());
for (int MULTI : ROUNDS) {
String round = String.format(ROUND__FORMAT, MULTI);
@@ -279,7 +274,7 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
AvailabilityReport report = new AvailabilityReport(agent.getName());
for (Resource r : resources) {
- AvailabilityType at = AvailabilityType.UP;
+ AvailabilityType at = AvailabilityType.UP;
Availability a = new Availability(r, new Date(t1 + i * MILLIS_APART), at);
report.addAvailability(a);
}
@@ -289,40 +284,37 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
}
// merge is over. Now lets purge in two steps
- startTiming(String.format(PURGE__FORMAT,MULTI));
- availabilityManager.purgeAvailabilities(t1 + (MULTI/2)*MILLIS_APART);
- endTiming(String.format(PURGE__FORMAT,MULTI));
- startTiming(String.format(PURGE__FORMAT,MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
+ availabilityManager.purgeAvailabilities(t1 + (MULTI / 2) * MILLIS_APART);
+ endTiming(String.format(PURGE__FORMAT, MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
availabilityManager.purgeAvailabilities(t1);
- endTiming(String.format(PURGE__FORMAT,MULTI));
+ endTiming(String.format(PURGE__FORMAT, MULTI));
// Vacuum the db
overlord = LookupUtil.getSubjectManager().getOverlord();
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
}
+ long timing1000 = getTiming(String.format(ROUND__FORMAT, 1000));
+ long timing2000 = getTiming(String.format(ROUND__FORMAT, 2000));
+ long timing3000 = getTiming(String.format(ROUND__FORMAT, 3000));
+ long timing5000 = getTiming(String.format(ROUND__FORMAT, 5000));
+ long timing10000 = getTiming(String.format(ROUND__FORMAT, 10000));
- long timing1000 = getTiming(String.format(ROUND__FORMAT,1000));
- long timing2000 = getTiming(String.format(ROUND__FORMAT,2000));
- long timing3000 = getTiming(String.format(ROUND__FORMAT,3000));
- long timing5000 = getTiming(String.format(ROUND__FORMAT,5000));
- long timing10000 = getTiming(String.format(ROUND__FORMAT,10000));
-
-
- assertLinear(timing1000,timing2000,2,"Merge2");
- assertLinear(timing1000,timing3000,3,"Merge3");
- assertLinear(timing1000,timing5000,5,"Merge5");
- assertLinear(timing1000,timing10000,10,"Merge10");
+ assertLinear(timing1000, timing2000, 2, "Merge2");
+ assertLinear(timing1000, timing3000, 3, "Merge3");
+ assertLinear(timing1000, timing5000, 5, "Merge5");
+ assertLinear(timing1000, timing10000, 10, "Merge10");
+ long purge1000 = getTiming(String.format(PURGE__FORMAT, 1000));
+ long purge2000 = getTiming(String.format(PURGE__FORMAT, 2000));
+ long purge3000 = getTiming(String.format(PURGE__FORMAT, 3000));
+ long purge5000 = getTiming(String.format(PURGE__FORMAT, 5000));
- long purge1000 = getTiming(String.format(PURGE__FORMAT,1000));
- long purge2000 = getTiming(String.format(PURGE__FORMAT,2000));
- long purge3000 = getTiming(String.format(PURGE__FORMAT,3000));
- long purge5000 = getTiming(String.format(PURGE__FORMAT,5000));
-
- assertLinear(purge1000,purge2000,2,"Purge2");
- assertLinear(purge1000,purge3000,3,"Purge3");
- assertLinear(purge1000,purge5000,5,"Purge3");
+ assertLinear(purge1000, purge2000, 2, "Purge2");
+ assertLinear(purge1000, purge3000, 3, "Purge3");
+ assertLinear(purge1000, purge5000, 5, "Purge3");
}
@@ -337,20 +329,19 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
public void testAlternatingWithAlert() throws Exception {
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
-
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT r FROM Resource r");
List<Resource> resources = q.getResultList();
Resource res = resources.get(0);
- Agent agent = agentManager.getAgentByResourceId(res.getId());
+ Agent agent = agentManager.getAgentByResourceId(overlord, res.getId());
q = em.createQuery("SELECT COUNT(a) FROM Availability a ");
Object o = q.getSingleResult();
- Long l = (Long)o;
- if (l!=0) {
+ Long l = (Long) o;
+ if (l != 0) {
throw new IllegalStateException("Availabilities table is not empty");
}
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
// Set up an alert definition on one resource
AlertCondition goingDown = new AlertCondition();
@@ -364,7 +355,7 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
def.setPriority(AlertPriority.MEDIUM);
def.setAlertDampening(new AlertDampening(AlertDampening.Category.NONE));
def.setRecoveryId(0);
- alertDefinitionManager.createAlertDefinition(overlord,def,res.getId());
+ alertDefinitionManager.createAlertDefinition(overlord, def, res.getId());
for (int MULTI : ROUNDS) {
String round = String.format(ROUND__FORMAT, MULTI);
@@ -384,38 +375,37 @@ public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
}
// merge is over. Now lets purge in two steps
- startTiming(String.format(PURGE__FORMAT,MULTI));
- availabilityManager.purgeAvailabilities(t1 + (MULTI/2)*MILLIS_APART);
- endTiming(String.format(PURGE__FORMAT,MULTI));
- startTiming(String.format(PURGE__FORMAT,MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
+ availabilityManager.purgeAvailabilities(t1 + (MULTI / 2) * MILLIS_APART);
+ endTiming(String.format(PURGE__FORMAT, MULTI));
+ startTiming(String.format(PURGE__FORMAT, MULTI));
availabilityManager.purgeAvailabilities(t1);
- endTiming(String.format(PURGE__FORMAT,MULTI));
+ endTiming(String.format(PURGE__FORMAT, MULTI));
// Vacuum the db
overlord = LookupUtil.getSubjectManager().getOverlord();
- systemManager.vacuum(overlord,new String[]{"rhq_availability"});
+ systemManager.vacuum(overlord, new String[] { "rhq_availability" });
}
-
- long timing1000 = getTiming(String.format(ROUND__FORMAT,1000));
- long timing2000 = getTiming(String.format(ROUND__FORMAT,2000));
- long timing3000 = getTiming(String.format(ROUND__FORMAT,3000));
- long timing5000 = getTiming(String.format(ROUND__FORMAT,5000));
- long timing10000 = getTiming(String.format(ROUND__FORMAT,10000));
-
- assertLinear(timing1000,timing2000,2,"Merge2");
- assertLinear(timing1000,timing3000,3,"Merge3");
- assertLinear(timing1000,timing5000,5,"Merge5");
- assertLinear(timing1000,timing10000,10,"Merge10");
-
- long purge1000 = getTiming(String.format(PURGE__FORMAT,1000));
- long purge2000 = getTiming(String.format(PURGE__FORMAT,2000));
- long purge3000 = getTiming(String.format(PURGE__FORMAT,3000));
- long purge5000 = getTiming(String.format(PURGE__FORMAT,5000));
-
- assertLinear(purge1000,purge2000,2,"Purge2");
- assertLinear(purge1000,purge3000,3,"Purge3");
- assertLinear(purge1000,purge5000,5,"Purge3");
+ long timing1000 = getTiming(String.format(ROUND__FORMAT, 1000));
+ long timing2000 = getTiming(String.format(ROUND__FORMAT, 2000));
+ long timing3000 = getTiming(String.format(ROUND__FORMAT, 3000));
+ long timing5000 = getTiming(String.format(ROUND__FORMAT, 5000));
+ long timing10000 = getTiming(String.format(ROUND__FORMAT, 10000));
+
+ assertLinear(timing1000, timing2000, 2, "Merge2");
+ assertLinear(timing1000, timing3000, 3, "Merge3");
+ assertLinear(timing1000, timing5000, 5, "Merge5");
+ assertLinear(timing1000, timing10000, 10, "Merge10");
+
+ long purge1000 = getTiming(String.format(PURGE__FORMAT, 1000));
+ long purge2000 = getTiming(String.format(PURGE__FORMAT, 2000));
+ long purge3000 = getTiming(String.format(PURGE__FORMAT, 3000));
+ long purge5000 = getTiming(String.format(PURGE__FORMAT, 5000));
+
+ assertLinear(purge1000, purge2000, 2, "Purge2");
+ assertLinear(purge1000, purge3000, 3, "Purge3");
+ assertLinear(purge1000, purge5000, 5, "Purge3");
}
}
commit 24a70403e58b7a4050b28887a8bbef662197a33e
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Sun Nov 14 21:11:57 2010 -0500
i)LoginView listen for tab ii)conditionally show details at resource level iii)commented impl of double click for Table
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index 841d8e0..b894bb6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -138,11 +138,13 @@ public class LoginView extends Canvas {
user.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
- if ((event.getCharacterValue() != null) && (event.getCharacterValue() == KeyCodes.KEY_ENTER)) {
+ if ((event.getCharacterValue() != null)
+ && (((event.getCharacterValue() == KeyCodes.KEY_ENTER)) || (event.getCharacterValue() == KeyCodes.KEY_TAB))) {
password.focusInItem(); // Work around the form not getting auto-fill values until the field is focused
}
}
});
+
password.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if ((event.getCharacterValue() != null) && (event.getCharacterValue() == KeyCodes.KEY_ENTER)) {
@@ -309,7 +311,8 @@ public class LoginView extends Canvas {
public void onFailure(Throwable caught) {
form.setFieldErrors(FIRST,
"Note: Optional retrieval of ldap details unsuccessful. Manual entry required.", true);
- Log.debug("Optional LDAP detail retrieval did not succeed. Registration prepopulation will not occur.");
+ Log
+ .debug("Optional LDAP detail retrieval did not succeed. Registration prepopulation will not occur.");
}
});
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
index 3f66a80..6ee4da6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
@@ -160,6 +160,9 @@ public class ResourceSearchView extends Table {
}
});
+ // //load double click handler for this table
+ // configureDoubleClickHandler();
+
/*searchBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if ((event.getCharacterValue() != null) && (event.getCharacterValue() == KeyCodes.KEY_ENTER)) {
@@ -180,6 +183,20 @@ public class ResourceSearchView extends Table {
});*/
}
+ // /** Defines the double click handler action for ResourceSearch. This means that on double
+ // * click a (Resource-relative) url, specifically Summary/Overview is what will happen
+ // * with this action. Override in subclasses to define alternate behavior.
+ // */
+ // protected void configureDoubleClickHandler() {
+ // //adding cell double click handler
+ // getListGrid().addCellDoubleClickHandler(new CellDoubleClickHandler() {
+ // @Override
+ // public void onCellDoubleClick(CellDoubleClickEvent event) {
+ // CoreGUI.goToView("Resource/" + event.getRecord().getAttribute("id") + "/Summary/Overview");
+ // }
+ // });
+ // }
+
public int getMatches() {
return this.getListGrid().getTotalRows();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
index 0e65cf3..28e152c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
@@ -200,7 +200,7 @@ public class ResourceDetailView extends AbstractTwoLevelTabSetView<ResourceCompo
this.resourceComposite = resourceComposite;
Resource resource = this.resourceComposite.getResource();
- getTitleBar().setResource(resource);
+ getTitleBar().setResource(this.resourceComposite);
for (Tab top : this.getTabSet().getTabs()) {
((TwoLevelTab) top).getLayout().destroyViews();
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index bc1e0b7..2e4e942 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -23,16 +23,23 @@ import java.util.LinkedHashSet;
import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
+import com.smartgwt.client.widgets.form.fields.SpacerItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.tagging.Tag;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -40,35 +47,59 @@ import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.components.tagging.TagEditorView;
import org.rhq.enterprise.gui.coregui.client.components.tagging.TagsChangedCallback;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.OverviewForm;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableImg;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Greg Hinkle
* @author Ian Springer
*/
-public class ResourceTitleBar extends LocatableHLayout {
+public class ResourceTitleBar extends LocatableVLayout {
+
+ //represents row of Resource title details[icon,title,show-details,tags,availability,favorites]
+ private LocatableHLayout top;
+ //represents normally closed region of Resource details[to verbosely describe resource across all tabs]
+ private LocatableHLayout details;
private static final String FAV_ICON = "Favorite_24_Selected.png";
private static final String NOT_FAV_ICON = "Favorite_24.png";
private Resource resource;
+ private ResourceComposite resourceComposite;
private Img badge;
private Img favoriteButton;
private HTMLFlow title;
private Img availabilityImage;
private boolean favorite;
+ private LocatableHLayout detailsForm;
+ private OverviewForm detailsFormSummary;
public ResourceTitleBar(String locatorId) {
super(locatorId);
+ //define two rows of content
+ top = new LocatableHLayout(locatorId + "_Top");
+ top.setPadding(5);
+ top.setMembersMargin(5);
+ top.setHeight(30);
+
+ details = new LocatableHLayout(locatorId + "_Details");
+ details.setWidth100();
+ details.setHeight(10);//initialize to small amount of pixels
+
+ //modify VLayout settings
setWidth100();
setHeight(30);
- setPadding(5);
- setMembersMargin(5);
+ setPadding(0);
+ setMembersMargin(0);
+ setLayoutMargin(0);
}
public void update() {
+ //clean up old widgets
for (Canvas child : getChildren()) {
child.destroy();
}
@@ -110,11 +141,59 @@ public class ResourceTitleBar extends LocatableHLayout {
loadTags(tagEditorView);
- addMember(badge);
- addMember(title);
- addMember(tagEditorView);
- addMember(availabilityImage);
- addMember(favoriteButton);
+ //top information
+ top.addMember(badge);
+ top.addMember(title);
+ top.addMember(tagEditorView);
+ top.addMember(availabilityImage);
+ top.addMember(favoriteButton);
+
+ //detail information
+ //checkbox
+ final CheckboxItem displayMore = new CheckboxItem();
+ final String moreDetails = "Show more...";
+ displayMore.setName("resourceDetails");
+ displayMore.setTitle(moreDetails);
+ displayMore.setWidth(120);
+ displayMore.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ Boolean displayMoreDetails = (Boolean) event.getValue();
+ if (displayMoreDetails) {
+ detailsFormSummary.show();
+ } else {
+ detailsFormSummary.hide();
+ }
+ markForRedraw();
+ }
+ });
+
+ LocatableDynamicForm wrappedCheckbox = new LocatableDynamicForm(extendLocatorId("Title_Bar_Checkbox"));
+ wrappedCheckbox.setFields(displayMore);
+ detailsForm = new LocatableHLayout(extendLocatorId("_Resource_Details"));
+ detailsForm.setWidth100();
+ detailsForm.setHeight(10);
+ detailsForm.setAlign(Alignment.LEFT);
+ detailsForm.addMember(wrappedCheckbox);
+ detailsFormSummary = new OverviewForm(extendLocatorId("Title_Optional_Summary"), resourceComposite);
+ detailsFormSummary.setWidth100();
+ detailsFormSummary.setPadding(0);
+ detailsFormSummary.setMargin(0);
+ detailsFormSummary.setLayoutAlign(Alignment.LEFT);
+ //condense details for display
+ detailsFormSummary.setHeaderEnabled(false);
+ detailsFormSummary.setDisplayCondensed(true);
+ detailsFormSummary.hide();
+ detailsForm.addMember(detailsFormSummary);
+ SpacerItem widthSpace = new SpacerItem();
+ widthSpace.setWidth(40);
+ DynamicForm wrappedSpacer = new DynamicForm();
+ wrappedSpacer.setFields(widthSpace);
+ detailsForm.addMember(wrappedSpacer);
+ details.addChild(detailsForm);
+
+ //order the components
+ addMember(top);
+ addMember(details);
}
private void loadTags(final TagEditorView tagEditorView) {
@@ -135,9 +214,10 @@ public class ResourceTitleBar extends LocatableHLayout {
});
}
- public void setResource(Resource resource) {
+ public void setResource(ResourceComposite resourceComposite) {
if (this.resource == null || this.resource.getId() != resource.getId()) {
- this.resource = resource;
+ this.resource = resourceComposite.getResource();
+ this.resourceComposite = resourceComposite;
update();
this.title.setContents("<span class=\"SectionHeader\">" + resource.getName()
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
index 2479c87..e5e65dc 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/OverviewForm.java
@@ -25,6 +25,13 @@ import java.util.Comparator;
import java.util.EnumSet;
import java.util.List;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.HeaderItem;
+import com.smartgwt.client.widgets.form.fields.SpacerItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
@@ -41,13 +48,6 @@ import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.util.SC;
-import com.smartgwt.client.widgets.form.fields.FormItem;
-import com.smartgwt.client.widgets.form.fields.HeaderItem;
-import com.smartgwt.client.widgets.form.fields.SpacerItem;
-import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-
/**
* The Resource Summary>Overview tab, the form with resource data.
*
@@ -58,6 +58,8 @@ public class OverviewForm extends EnhancedDynamicForm {
private ResourceGWTServiceAsync resourceService = GWTServiceLookup.getResourceService();
private ResourceComposite resourceComposite;
+ private boolean headerEnabled = true;
+ private boolean displayCondensed = false;
public OverviewForm(String locatorId, ResourceComposite resourceComposite) {
super(locatorId);
@@ -70,6 +72,11 @@ public class OverviewForm extends EnhancedDynamicForm {
setLeft("10%");
setWidth("80%");
+ if (isDisplayCondensed()) {
+ setPadding(5);
+ setColWidths(150, 220, 150, 220);
+ setWidth("45%");
+ }
if (this.resourceComposite != null) {
setResource(this.resourceComposite);
@@ -99,29 +106,25 @@ public class OverviewForm extends EnhancedDynamicForm {
private void loadTraitValues() {
final Resource resource = resourceComposite.getResource();
- GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(
- resource.getId(),
- DisplayType.SUMMARY,
- new AsyncCallback<List<MeasurementDataTrait>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to load traits for " + resource + ".",
- caught);
- }
+ GWTServiceLookup.getMeasurementDataService().findCurrentTraitsForResource(resource.getId(),
+ DisplayType.SUMMARY, new AsyncCallback<List<MeasurementDataTrait>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load traits for " + resource + ".", caught);
+ }
- public void onSuccess(List<MeasurementDataTrait> result) {
- // TODO: Implement this method.
- for (MeasurementDataTrait trait : result) {
- String formId = trait.getName().replaceAll("\\.", "_").replaceAll(" ", "__");
- FormItem item = getItem(formId);
+ public void onSuccess(List<MeasurementDataTrait> result) {
+ // TODO: Implement this method.
+ for (MeasurementDataTrait trait : result) {
+ String formId = trait.getName().replaceAll("\\.", "_").replaceAll(" ", "__");
+ FormItem item = getItem(formId);
- if (item != null) {
- setValue(formId, trait.getValue());
- }
+ if (item != null) {
+ setValue(formId, trait.getValue());
}
- markForRedraw();
}
+ markForRedraw();
}
- );
+ });
}
@@ -142,9 +145,11 @@ public class OverviewForm extends EnhancedDynamicForm {
List<FormItem> formItems = new ArrayList<FormItem>();
- HeaderItem headerItem = new HeaderItem("header", "Summary");
- headerItem.setValue("Summary");
- formItems.add(headerItem);
+ if (isHeaderEnabled()) {//conditionally display header
+ HeaderItem headerItem = new HeaderItem("header", "Summary");
+ headerItem.setValue("Summary");
+ formItems.add(headerItem);
+ }
StaticTextItem typeItem = new StaticTextItem("type", "Type");
typeItem.setTooltip("Plugin: " + type.getPlugin() + "\n<br>" + "Type: " + type.getName());
@@ -169,9 +174,9 @@ public class OverviewForm extends EnhancedDynamicForm {
resource.setName(newName);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to change name of Resource with id "
- + resource.getId()
- + " from \"" + oldName + "\" to \"" + newName + "\".", caught);
+ CoreGUI.getErrorHandler().handleError(
+ "Failed to change name of Resource with id " + resource.getId() + " from \"" + oldName
+ + "\" to \"" + newName + "\".", caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setName(oldName);
@@ -179,9 +184,9 @@ public class OverviewForm extends EnhancedDynamicForm {
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message("Name of Resource with id "
- + resource.getId() + " was changed from \""
- + oldName + "\" to \"" + newName + "\".", Message.Severity.Info));
+ CoreGUI.getMessageCenter().notify(
+ new Message("Name of Resource with id " + resource.getId() + " was changed from \""
+ + oldName + "\" to \"" + newName + "\".", Message.Severity.Info));
}
});
}
@@ -204,9 +209,9 @@ public class OverviewForm extends EnhancedDynamicForm {
resource.setDescription(newDescription);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to change description of Resource with id "
- + resource.getId()
- + " from \"" + oldDescription + "\" to \"" + newDescription + "\".", caught);
+ CoreGUI.getErrorHandler().handleError(
+ "Failed to change description of Resource with id " + resource.getId() + " from \""
+ + oldDescription + "\" to \"" + newDescription + "\".", caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setDescription(oldDescription);
@@ -214,9 +219,10 @@ public class OverviewForm extends EnhancedDynamicForm {
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message("Description of Resource with id "
- + resource.getId() + " was changed from \""
- + oldDescription + "\" to \"" + newDescription + "\".", Message.Severity.Info));
+ CoreGUI.getMessageCenter().notify(
+ new Message("Description of Resource with id " + resource.getId()
+ + " was changed from \"" + oldDescription + "\" to \"" + newDescription + "\".",
+ Message.Severity.Info));
}
});
}
@@ -239,9 +245,9 @@ public class OverviewForm extends EnhancedDynamicForm {
resource.setLocation(newLocation);
OverviewForm.this.resourceService.updateResource(resource, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to change location of Resource with id "
- + resource.getId()
- + " from \"" + oldLocation + "\" to \"" + newLocation + "\".", caught);
+ CoreGUI.getErrorHandler().handleError(
+ "Failed to change location of Resource with id " + resource.getId() + " from \""
+ + oldLocation + "\" to \"" + newLocation + "\".", caught);
// We failed to update it on the Server, so change back the Resource and the form item to
// the original value.
resource.setLocation(oldLocation);
@@ -249,9 +255,9 @@ public class OverviewForm extends EnhancedDynamicForm {
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message("Location of Resource with id "
- + resource.getId() + " was changed from \""
- + oldLocation + "\" to \"" + newLocation + "\".", Message.Severity.Info));
+ CoreGUI.getMessageCenter().notify(
+ new Message("Location of Resource with id " + resource.getId() + " was changed from \""
+ + oldLocation + "\" to \"" + newLocation + "\".", Message.Severity.Info));
}
});
}
@@ -259,7 +265,6 @@ public class OverviewForm extends EnhancedDynamicForm {
}
formItems.add(locationItem);
-
StaticTextItem versionItem = new StaticTextItem("version", "Version");
formItems.add(versionItem);
@@ -272,18 +277,19 @@ public class OverviewForm extends EnhancedDynamicForm {
StaticTextItem item = new StaticTextItem(id, trait.getDisplayName());
item.setTooltip(trait.getDescription());
formItems.add(item);
-// item.setValue("?");
+ // item.setValue("?");
}
-// SectionItem section = new SectionItem("Summary", "Summary");
-// section.setTitle("Summary");
-// section.setDefaultValue("Summary");
-// section.setCanCollapse(true);
-// section.setCellStyle("HidablePlainSectionHeader");
-// section.setItemIds(itemIds.toArray(new String[itemIds.size()]));
-// formItems.add(0, section);
-
- formItems.add(new SpacerItem());
+ // SectionItem section = new SectionItem("Summary", "Summary");
+ // section.setTitle("Summary");
+ // section.setDefaultValue("Summary");
+ // section.setCanCollapse(true);
+ // section.setCellStyle("HidablePlainSectionHeader");
+ // section.setItemIds(itemIds.toArray(new String[itemIds.size()]));
+ // formItems.add(0, section);
+ if (!isDisplayCondensed()) {
+ formItems.add(new SpacerItem());
+ }
setItems(formItems.toArray(new FormItem[formItems.size()]));
setValue("type", type.getName() + " (" + type.getPlugin() + ")");
@@ -292,8 +298,23 @@ public class OverviewForm extends EnhancedDynamicForm {
setValue("location", resource.getLocation());
setValue("version", (resource.getVersion() != null) ? resource.getVersion() : "<i>none</i>");
Resource parentResource = resource.getParentResource();
- setValue("parent", parentResource != null ?
- ("<a href=\"#Resource/" + parentResource.getId() + "\">" +
- parentResource.getName() + "</a>") : "<i>none</i>");
+ setValue("parent", parentResource != null ? ("<a href=\"#Resource/" + parentResource.getId() + "\">"
+ + parentResource.getName() + "</a>") : "<i>none</i>");
+ }
+
+ public boolean isHeaderEnabled() {
+ return headerEnabled;
+ }
+
+ public void setHeaderEnabled(boolean headerEnabled) {
+ this.headerEnabled = headerEnabled;
+ }
+
+ public boolean isDisplayCondensed() {
+ return displayCondensed;
+ }
+
+ public void setDisplayCondensed(boolean displayCondensed) {
+ this.displayCondensed = displayCondensed;
}
}
13 years, 6 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
New commits:
commit b015b896fc9ff04a1a1e0bdf36095e65f4443863
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Nov 19 13:12:09 2010 -0500
remove spurious double quotes
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index a581a4e..6bf3135 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -34,7 +34,7 @@ common_button_next = Next~
common_button_ok = OK~
common_button_previous = Previous~
common_button_purgeAll=Purge All~
-common_button_refresh = "Refresh"~
+common_button_refresh = Refresh~
common_button_reset = Reset~
common_button_save = Save~
common_button_search = Search~
@@ -301,7 +301,7 @@ dataSource_ContentRepoTree_field_parentId = Parent ID~
dataSource_users_field_id = ID~
dataSource_users_field_name = User Name~
dataSource_users_field_ldap = LDAP Login?~
-dataSource_users_field_password = Password`
+dataSource_users_field_password = Password~
dataSource_users_field_passwordVerify = Verify Password~
dataSource_users_field_firstName = First Name~
dataSource_users_field_lastName = Last Name~
@@ -1382,11 +1382,11 @@ view_summaryOverviewForm_label_plugin = Plugin:
view_summaryOverviewForm_label_type = Type:
view_summaryOverviewForm_header_summary = Summary~
view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_nameChangeSuccess = "Name of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_descriptionChangeSuccess = "Description of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with id {0} was changed from [{1}] to [{2}].~
view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_message_locationChangeSuccess = "Location of Resource with id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0} was changed from [{1}] to [{2}].~
#==================== Reports ======================
13 years, 6 months