/* * RHQ Management Platform * Copyright (C) 2005-2011 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, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * 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 and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.coregui.client; import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.coregui.client.admin.roles.RolesView; import org.rhq.coregui.client.admin.templates.DriftDefinitionTemplateTypeView; import org.rhq.coregui.client.admin.users.UsersView; import org.rhq.coregui.client.components.table.StringIDTableSection; import org.rhq.coregui.client.drift.DriftDefinitionsView; /** * @author Greg Hinkle */ public class LinkManager { private static boolean GWT = true; public static String getResourceLink(int resourceId) { if (GWT) { return "#Resource/" + resourceId; } else { return "/portal/rhq/resource/summary/overview.xhtml?id=" + resourceId; } } public static String getResourceTabLink(int resourceId, String tabName, String subTabName) { if (GWT) { return "#Resource/" + resourceId + "/" + tabName + ((null == subTabName) ? "" : ("/" + subTabName)); } else { return "/portal/rhq/resource/summary/overview.xhtml?id=" + resourceId; } } public static String getResourceGroupLink(int groupId) { if (GWT) { return "#ResourceGroup/" + groupId; } else { return "/portal/rhq/group/inventory/view.xhtml?groupId=" + groupId; } } public static String getResourceGroupLink(ResourceGroup group) { return getResourceOrGroupLink(EntityContext.forGroup(group)); } private static String getAutoGroupTabLink(int autoGroupId, String tabName, String subTabName) { if (GWT) { return "#Resource/AutoGroup/" + autoGroupId + "/" + tabName + ((null == subTabName) ? "" : ("/" + subTabName)); } else { return "/portal/rhq/group/inventory/view.xhtml?groupId=" + autoGroupId; } } public static String getAutoGroupLink(int autoGroupId) { return "#Resource/AutoGroup/" + autoGroupId; } private static String getAutoClusterTabLink(int autoClusterGroupId, String tabName, String subTabName) { if (GWT) { return "#ResourceGroup/AutoCluster/" + autoClusterGroupId + "/" + tabName + ((null == subTabName) ? "" : ("/" + subTabName)); } else { return "/portal/rhq/group/inventory/view.xhtml?groupId=" + autoClusterGroupId; } } private static String getAutoClusterLink(int autoClusterGroupId) { return "#ResourceGroup/AutoCluster/" + autoClusterGroupId; } private static String getResourceGroupTabLink(int resourceGroupId, String tabName, String subTabName) { if (GWT) { return "#ResourceGroup/" + resourceGroupId + "/" + tabName + ((null == subTabName) ? "" : ("/" + subTabName)); } else { return "/portal/rhq/group/inventory/view.xhtml?groupId=" + resourceGroupId; } } public static String getEntityTabLink(EntityContext entityContext, String tabName, String subTabName) { String link; switch (entityContext.getType()) { case Resource: link = getResourceTabLink(entityContext.getResourceId(), tabName, subTabName); break; case ResourceGroup: if (entityContext.isAutoGroup()) { link = getAutoGroupTabLink(entityContext.getGroupId(), tabName, subTabName); } else if (entityContext.isAutoCluster()) { link = getAutoClusterTabLink(entityContext.getGroupId(), tabName, subTabName); } else { link = getResourceGroupTabLink(entityContext.getGroupId(), tabName, subTabName); } break; case SubsystemView: if (tabName.equals("Alerts") && subTabName.equals("Definitions")) { link = "#Reports/Subsystems/AlertDefinitions"; } else if (tabName.equals("Alerts") && subTabName.equals("History")) { link = "#Reports/Subsystems/RecentAlerts"; } else if (tabName.equals("Operations") && subTabName.equals("History")) { link = "#Reports/Subsystems/RecentOperations"; } else if (tabName.equals("Configuration") && subTabName.equals("History")) { link = "#Reports/Subsystems/ConfigurationHistoryView"; } else { throw new IllegalArgumentException("Subsystem link not supported for tab " + tabName + ">" + subTabName + "."); } break; default: throw new IllegalArgumentException("Unsupported entity context type: " + entityContext.getType()); } return link; } private static String getResourceOrGroupLink(EntityContext entityContext) { switch (entityContext.getType()) { case Resource: return getResourceLink(entityContext.getResourceId()); case ResourceGroup: if (entityContext.isAutoGroup()) { return getAutoGroupLink(entityContext.getGroupId()); } else if (entityContext.isAutoCluster()) { return getAutoClusterLink(entityContext.getGroupId()); } else { return getResourceGroupLink(entityContext.getGroupId()); } case SubsystemView: throw new IllegalArgumentException("Subsystems are not supported for simple entity context links."); default: throw new IllegalArgumentException("Unsupported entity context type: " + entityContext); } } public static String getGroupPluginConfigurationUpdateHistoryLink(EntityContext group, Integer groupUpdateHistoryId) { if (groupUpdateHistoryId != null) { return getEntityTabLink(group, "Inventory", "ConnectionSettingsHistory") + "/" + groupUpdateHistoryId; } else { return getEntityTabLink(group, "Inventory", "ConnectionSettingsHistory"); } } public static String getGroupResourceConfigurationUpdateHistoryLink(EntityContext group, Integer groupUpdateHistoryId) { if (groupUpdateHistoryId != null) { return getEntityTabLink(group, "Configuration", "History") + "/" + groupUpdateHistoryId; } else { return getEntityTabLink(group, "Configuration", "History"); } } public static String getGroupOperationHistoryLink(ResourceGroup group, int groupOperationHistoryId) { return getEntityTabLink(EntityContext.forGroup(group), "Operations", "History") + "/" + groupOperationHistoryId; } public static String getResourceEventHistoryListLink(int resourceId) { return "#Resource/" + resourceId + "/Events/History/"; } public static String getGroupEventHistoryListLink(EntityContext group) { return getEntityTabLink(group, "Events", "History"); } public static String getResourceMonitoringGraphsLink(int resourceId) { return "#Resource/" + resourceId + "/Monitoring/Graphs/"; } public static String getGroupMonitoringGraphsLink(EntityContext group) { return getEntityTabLink(group, "Monitoring", "Graphs"); } public static String getAllResourcesLink() { return "#Inventory/Resources/AllResources"; } public static String getGroupDefinitionLink(int groupDefinitionId) { if (GWT) { return "#Inventory/Groups/DynagroupDefinitions/" + groupDefinitionId; } else { return "/portal/rhq/definition/group/view.xhtml?groupDefinitionId=" + groupDefinitionId; } } public static String getUserLink(int subjectId) { if (GWT) { return "#" + UsersView.VIEW_PATH + "/" + subjectId; } else { return "/portal/admin/user/UserAdmin.do?mode=view&u=" + subjectId; } } public static String getRoleLink(int roleId) { if (GWT) { return "#" + RolesView.VIEW_PATH + "/" + roleId; } else { return "/portal/admin/role/RoleAdmin.do?mode=view&r=" + roleId; } } public static String getSubsystemConfigurationLink() { return "/portal/rhq/subsystem/configurationUpdate.xhtml"; } public static String getSubsystemSuspectMetricsLink() { return "/portal/rhq/subsystem/oobHistory.xhtml"; } public static String getSubsystemResourceOperationHistoryLink(int resourceId, int opHistoryId) { String link; if (GWT) { link = "#Resource/" + resourceId + "/Operations/History/" + opHistoryId; } else { link = "/portal/rhq/resource/operation/resourceOperationHistoryDetails-plain.xhtml?id=" + resourceId + "&opId=" + opHistoryId; } return link; } public static String getSubsystemResourceOperationScheduleLink(int resourceId, int opScheduleId) { String link; if (GWT) { link = "#Resource/" + resourceId + "/Operations/Schedules/" + opScheduleId; } else { link = "/portal/rhq/resource/operation/resourceOperationScheduleDetails-plain.xhtml?id=" + resourceId + "&opId=" + opScheduleId; } return link; } public static String getSubsystemGroupOperationScheduleLink(int groupId, int opScheduleId) { return "#ResourceGroup/" + groupId + "/Operations/Schedules/" + opScheduleId; } public static String getAutoGroupOperationScheduleLink(int groupId, int opScheduleId) { return getAutoGroupLink(groupId) + "/Operations/Schedules/" + opScheduleId; } public static String getAlertDetailLink(EntityContext entityContext, int alertId) { String link; String baseLink = getEntityTabLink(entityContext, "Alerts", "History"); link = baseLink + "/" + alertId; return link; } public static String getEventDetailLink(int resourceId, int eventId) { String link = "#Resource/" + resourceId + "/Events/History/" + eventId; return link; } public static String getSubsystemAlertDefinitionLink(int resourceId, int alertDefinitionId) { String link; if (GWT) { link = "#Resource/" + resourceId + "/Alerts/Definitions/" + alertDefinitionId; } else { link = "/portal/rhq/subsystem/alertDefinitions.xhtml"; } return link; } public static String getStorageNodeLink(int storageNodeId) { return "#Administration/Topology/StorageNodes/" + storageNodeId; } public static String getAutodiscoveryQueueLink() { if (GWT) { return "#Inventory/Resources/AutodiscoveryQueue"; } else { return "/portal/rhq/discovery/queue.xhtml"; } } public static String getDashboardsLink() { if (GWT) { return "#Dashboards"; } else { return "/portal/Dashboard.do"; } } public static String getDashboardLink(int dashboardId) { if (GWT) { return "#Dashboards/" + dashboardId; } else { return "/portal/Dashboard.do"; } } public static String getHubAllResourcesLink() { if (GWT) { return "#Inventory"; } else { return "/portal/rhq/inventory/browseResources.xhtml?subtab=all"; } } public static String getHubPlatformsLink() { if (GWT) { return "#Inventory/Resources/Platforms"; } else { return "/portal/rhq/inventory/browseResources.xhtml?subtab=platform"; } } public static String getHubServersLink() { if (GWT) { return "#Inventory/Resources/Servers"; } else { return "/portal/rhq/inventory/browseResources.xhtml?subtab=server"; } } public static String getHubServicesLink() { if (GWT) { return "#Inventory/Resources/Services"; } else { return "/portal/rhq/inventory/browseResources.xhtml?subtab=service"; } } public static String getSavedSearchLink(int searchId) { return "/portal/rhq/inventory/browseResources.xhtml?subtab=all&searchId=" + searchId; } public static String getHubAllGroupsLink() { return "/portal/rhq/inventory/browseGroups.xhtml?subtab=all"; } public static String getHubCompatibleGroupsLink() { return "#Inventory/Groups/CompatibleGroups"; } public static String getHubMixedGroupsLink() { return "#Inventory/Groups/MixedGroups"; } public static String getHubGroupDefinitionsLink() { if (GWT) { return "#Inventory/Groups/DynagroupDefinitions"; } else { return "/portal/rhq/definition/group/list.xhtml"; } } public static String getHubNewGroupLink() { return "/portal/resource/group/Inventory.do?mode=new"; } public static String getHubNewGroupDefLink() { return "/portal/rhq/definition/group/new.xhtml"; } public static String getAdminUsersLink() { if (GWT) { return "#Administration/Security/Users"; } else { return "/portal/admin/user/UserAdmin.do?mode=list"; } } public static String getAdminRolesLink() { if (GWT) { return "#Administration/Security/Roles"; } else { return "/portal/admin/role/RoleAdmin.do?mode=list"; } } public static String getAdminSysConfigLink() { if (GWT) { return "#Administration/Configuration/SystemSettings"; } else { return "/portal/admin/config/Config.do?mode=edit"; } } public static String getAdminPluginsLink() { if (GWT) { return "#Administration/Configuration/Plugins"; } else { return "/portal/rhq/admin/plugin/plugin-list.xhtml"; } } public static String getAdminTemplatesLink(String viewName) { if (GWT) { return "#Administration/Configuration/" + viewName; } else { return "/portal/admin/config/EditDefaults.do?mode=monitor&viewMode=all"; } } public static String getAdminTemplatesEditLink(String viewName, int typeId) { if (GWT) { return "#Administration/Configuration/" + viewName + "/" + typeId; } else { return "/portal/admin/config/EditDefaults.do?mode=monitor&viewMode=all"; } } public static String getAdminAlertNotifTemplatesLink() { return "/portal/rhq/admin/alert/template/notification/list.xhtml"; } public static String getAdminContentProvidersLink() { return "/portal/rhq/content/listContentProviders.xhtml"; } public static String getAdminContentReposLink() { return "/portal/rhq/content/listRepos.xhtml"; } public static String getHAServersLink() { if (GWT) { return "#Administration/Cluster/Servers"; } else { return "/portal/rhq/ha/listServers.xhtml"; } } public static String getHAAgentsLink() { if (GWT) { return "#Administration/Cluster/Agents"; } else { return "/portal/rhq/ha/listAgents.xhtml"; } } public static String getHAAffinityGroupsLink() { if (GWT) { return "#Administration/Cluster/Affinity Groups"; } else { return "/portal/rhq/ha/listAffinityGroups.xhtml"; } } public static String getHAEventsLink() { if (GWT) { return "#Administration/Cluster/Partition Events"; } else { return "/portal/rhq/ha/listPartitionEvents.xhtml"; } } public static String getReportsInventoryLink() { if (GWT) { return "#Administration/Reports/Inventory Summary"; } else { return "/portal/rhq/admin/report/resourceInstallReport.xhtml"; } } public static String getAdminDownloadsLink() { if (GWT) { return "#Administration/Configuration/Downloads"; } else { return "/portal/rhq/admin/downloads.xhtml"; } } public static String getDebugSqlLink() { return "/portal/admin/test/sql.jsp"; } public static String getDebugHibernateLink() { return "/portal/admin/test/hibernate.jsp"; } public static String getDebugBrowserLink() { return "/portal/admin/test/browser.jsp"; } public static String getUserPrefsLink(int subjectId) { return "/portal/admin/user/UserAdmin.do?mode=edit&u=" + subjectId; } public static String getUserPasswordLink(int subjectId) { return "/portal/admin/user/UserAdmin.do?mode=editPass&u=" + subjectId; } public static String getTagLink(String tag) { if (tag == null) { return "#Reports/Subsystems/Tags"; } else { return "#Reports/Subsystems/Tags/" + tag; } } public static String getBundleLink(int bundleId) { return "#Bundles/Bundle/" + bundleId; } public static String getBundleGroupLink(int bundleGroupId) { return "#Bundles/BundleGroup/" + bundleGroupId; } public static String getBundleVersionLink(int bundleId, int bundleVersionId) { return "#Bundles/Bundle/" + bundleId + "/versions" + (bundleVersionId == 0 ? "" : ("/" + bundleVersionId)); } public static String getBundleDestinationLink(int bundleId, int bundleDestinationId) { return "#Bundles/Bundle/" + bundleId + "/destinations" + (bundleDestinationId == 0 ? "" : ("/" + bundleDestinationId)); } public static String getBundleDeploymentLink(int bundleId, int bundleDeploymentId) { return "#Bundles/Bundle/" + bundleId + "/deployments/" + bundleDeploymentId; } public static String getDriftDefinitionsLink(int resourceId) { return "#Resource/" + resourceId + "/Drift/Definitions"; } public static String getDriftDefinitionCarouselLink(int resourceId, int driftDefId) { return "#Resource/" + resourceId + "/Drift/Definitions/" + driftDefId + "/" + DriftDefinitionsView.DetailView.Carousel.name(); } public static String getDriftDefinitionEditLink(int resourceId, int driftDefId) { return "#Resource/" + resourceId + "/Drift/Definitions/" + driftDefId + "/" + DriftDefinitionsView.DetailView.Edit.name(); } public static String getDriftDefinitionInitialSnapshotLink(int resourceId, int driftDefId) { return "#Resource/" + resourceId + "/Drift/Definitions/" + driftDefId + "/" + DriftDefinitionsView.DetailView.InitialSnapshot.name(); } public static String getDriftCarouselDriftLink(int resourceId, int driftDefId, String driftId) { if (!driftId.startsWith(StringIDTableSection.ID_PREFIX)) { driftId = StringIDTableSection.ID_PREFIX + driftId; } return "#Resource/" + resourceId + "/Drift/Definitions/" + driftDefId + "/Drift/" + driftId; } public static String getDriftCarouselSnapshotLink(int resourceId, int driftDefId, int version) { return "#Resource/" + resourceId + "/Drift/Definitions/" + driftDefId + "/Snapshot/" + version; } public static String getDriftTemplateLink(int typeId, int templateId) { String result = getAdminTemplatesEditLink(DriftDefinitionTemplateTypeView.VIEW_ID.getName(), typeId); return result + "/" + templateId; } public static String getDriftTemplateSnapshotLink(int typeId, int templateId) { String result = getDriftTemplateLink(typeId, templateId); return result + "/Snapshot"; } public static String getHelpLink() { return "#Help"; } /** * Return an href element for links * * @param url the target url * @param value the display value for the link * @return */ static public String getHref(String url, String value) { String result = "<a href=\"" + url + "\">" + value + "</a>"; return result; } }