0N/A/*
2362N/A * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/Apackage javax.management;
0N/A
0N/A
0N/A/**
0N/A * This class is used by the query-building mechanism to represent binary
0N/A * operations.
0N/A * @serial include
0N/A *
0N/A * @since 1.5
0N/A */
0N/Aclass InQueryExp extends QueryEval implements QueryExp {
0N/A
0N/A /* Serial version */
0N/A private static final long serialVersionUID = -5801329450358952434L;
0N/A
0N/A /**
0N/A * @serial The {@link ValueExp} to be found
0N/A */
0N/A private ValueExp val;
0N/A
0N/A /**
0N/A * @serial The array of {@link ValueExp} to be searched
0N/A */
0N/A private ValueExp[] valueList;
0N/A
0N/A
0N/A /**
0N/A * Basic Constructor.
0N/A */
0N/A public InQueryExp() {
0N/A }
0N/A
0N/A /**
0N/A * Creates a new InQueryExp with the specified ValueExp to be found in
0N/A * a specified array of ValueExp.
0N/A */
0N/A public InQueryExp(ValueExp v1, ValueExp items[]) {
0N/A val = v1;
0N/A valueList = items;
0N/A }
0N/A
0N/A
0N/A /**
0N/A * Returns the checked value of the query.
0N/A */
0N/A public ValueExp getCheckedValue() {
0N/A return val;
0N/A }
0N/A
0N/A /**
0N/A * Returns the array of values of the query.
0N/A */
0N/A public ValueExp[] getExplicitValues() {
0N/A return valueList;
0N/A }
0N/A
0N/A /**
0N/A * Applies the InQueryExp on a MBean.
0N/A *
0N/A * @param name The name of the MBean on which the InQueryExp will be applied.
0N/A *
0N/A * @return True if the query was successfully applied to the MBean, false otherwise.
0N/A *
0N/A * @exception BadStringOperationException
0N/A * @exception BadBinaryOpValueExpException
0N/A * @exception BadAttributeValueExpException
0N/A * @exception InvalidApplicationException
0N/A */
11N/A public boolean apply(ObjectName name)
11N/A throws BadStringOperationException, BadBinaryOpValueExpException,
0N/A BadAttributeValueExpException, InvalidApplicationException {
0N/A if (valueList != null) {
0N/A ValueExp v = val.apply(name);
0N/A boolean numeric = v instanceof NumericValueExp;
0N/A
11N/A for (ValueExp element : valueList) {
11N/A element = element.apply(name);
0N/A if (numeric) {
11N/A if (((NumericValueExp) element).doubleValue() ==
11N/A ((NumericValueExp) v).doubleValue()) {
0N/A return true;
0N/A }
0N/A } else {
11N/A if (((StringValueExp) element).getValue().equals(
11N/A ((StringValueExp) v).getValue())) {
0N/A return true;
0N/A }
0N/A }
0N/A }
0N/A }
0N/A return false;
0N/A }
0N/A
0N/A /**
0N/A * Returns the string representing the object.
0N/A */
0N/A public String toString() {
0N/A return val + " in (" + generateValueList() + ")";
0N/A }
0N/A
0N/A
0N/A private String generateValueList() {
0N/A if (valueList == null || valueList.length == 0) {
0N/A return "";
0N/A }
0N/A
0N/A final StringBuilder result =
0N/A new StringBuilder(valueList[0].toString());
0N/A
0N/A for (int i = 1; i < valueList.length; i++) {
0N/A result.append(", ");
0N/A result.append(valueList[i]);
0N/A }
0N/A
0N/A return result.toString();
0N/A }
0N/A
0N/A }