/* * 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.server.plugins.alertOperations; import java.util.EnumSet; import java.util.HashSet; import java.util.Set; /** * Tokens that can be replaced in operation parameters * @author Heiko W. Rupp */ public enum Token { // Alert related tokens ALERT_ID(TokenClass.ALERT, "id","The id of this particular alert"), ALERT_URL(TokenClass.ALERT, "url","Url to the alert details page"), ALERT_FIRE_TIME(TokenClass.ALERT, "firedAt","Time the alert fired"), ALERT_WILL_RECOVER(TokenClass.ALERT,"willRecover","?? TODO"), ALERT_CONDITIONS(TokenClass.ALERT,"conditions","A text representation of the conditions that led to this alert"), ALERT_DEF_NAME(TokenClass.ALERT,"name","Name from the defining alert definition"), ALERT_DEF_DESC(TokenClass.ALERT,"description","Description of this alert"), ALERT_DEF_PRIO(TokenClass.ALERT,"priority", "Priority of this alert"), ALERT_WILL_DISABLE(TokenClass.ALERT,"willBeDisabled","Will the alert definition be disabled after firing?"), // resource that triggered the alert related tokens RESOURCE_ID(TokenClass.RESOURCE, "id", "Id of the resource"), RESOURCE_NAME(TokenClass.RESOURCE, "name", "Name of the resource"), RESOURCE_PARENT_ID(TokenClass.RESOURCE, "parentId", "Id of the parent resource"), RESOURCE_PARENT_NAME(TokenClass.RESOURCE, "parentName", "Name of the parent resource"), RESOURCE_TYPE_ID(TokenClass.RESOURCE,"typeId","Resource type id"), RESOURCE_TYPE_NAME(TokenClass.RESOURCE,"typeName","Resource type name"), RESOURCE_PLATFORM_ID(TokenClass.RESOURCE,"platformId", "Id of the platform the resource is on"), RESOURCE_PLATFORM_NAME(TokenClass.RESOURCE,"platformName", "Name of the platform the resource is on"), RESOURCE_PLATFORM_TYPE(TokenClass.RESOURCE,"platformType", "Type of the platform the resource is on"), // resource the operation is run on related tokens TRESOURCE_ID(TokenClass.TARGET_RESOURCE, "id","Id of the target resource"), TRESOURCE_NAME(TokenClass.TARGET_RESOURCE, "name", "Name of the target resource"), TRESOURCE_PARENT_ID(TokenClass.TARGET_RESOURCE, "parentId", "Id of the target's parent resource"), TRESOURCE_PARENT_NAME(TokenClass.TARGET_RESOURCE, "parentName", "Name of the target's parent resource"), TRESOURCE_TYPE_ID(TokenClass.TARGET_RESOURCE,"typeId","Resource type of the target resource id"), TRESOURCE_TYPE_NAME(TokenClass.TARGET_RESOURCE,"typeName","Resource type name of the target resource"), TRESOURCE_PLATFORM_ID(TokenClass.TARGET_RESOURCE,"platformId", "Id of the platform the target resource is on"), TRESOURCE_PLATFORM_NAME(TokenClass.TARGET_RESOURCE,"platformName", "Name of the platform the target resource is on"), TRESOURCE_PLATFORM_TYPE(TokenClass.TARGET_RESOURCE,"platformType", "Type of the platform the target resource is on"), // Information about the fired operation OPERATION_ID(TokenClass.OPERATION,"id","Id of the operation fired"), OPERATION_NAME(TokenClass.OPERATION,"name","Name of the operation fired"), // only for testing TEST_ECHO(TokenClass.TEST,"echo", "Echo the input"), TEST_FIX(TokenClass.TEST,"fix", "Return a fixed string"), TEST_CAMEL(TokenClass.TEST,"camelCase","Test matching of camels") ; private TokenClass tc; private String name; private String text; private String description; private Token(TokenClass tc, String name, String description) { this.tc = tc; this.name = name; this.text = tc.getText() + "." + name; this.description = description; } /** * Return the token that matches the input text or null if not found. * The token delimiters need to be already stripped from the input * @param input a token text like <i>alert.id</i>, which would return the * <i>ALERT_ID</i> token. * @return The matching token or null if not found */ public static Token getByText(String input) { EnumSet<Token> es = EnumSet.allOf(Token.class); for (Token t : es) { if (t.text.equals(input)) return t; } return null; } public static Set<Token> getByTokenClass(TokenClass tokenClass) { Set<Token> tokens = new HashSet<Token>(); EnumSet<Token> es = EnumSet.allOf(Token.class); for (Token t : es) { if (t.tc == tokenClass) tokens.add(t); } return tokens; } public String getName() { return name; } public String getText() { return text; } public String getDescription() { return description; } }