001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package javax.management.openmbean;
023:
024: import java.util.Collection;
025: import java.util.Set;
026:
027: /**
028: * An Open Data Type for tabular data structures.<p>
029: *
030: * @see TabularDataSupport
031: *
032: * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
033: *
034: * @version $Revision: 57200 $
035: *
036: */
037: public interface TabularData {
038:
039: // Attributes ----------------------------------------------------
040:
041: // Public --------------------------------------------------------
042:
043: /**
044: * Retrieve the tabular type for this tabular data
045: *
046: * @return the tabular type
047: */
048: TabularType getTabularType();
049:
050: /**
051: * Calculate the index for the value passed if it were added to the
052: * tabular data. The validity of the passed value is checked. But the
053: * tabular data isn't checked to see whether the index is already used.
054: *
055: * @param value the value for which the index is calculated.
056: * @return the calculated index
057: * @exception NullPointerException for a null value
058: * @exception InvalidOpenTypeException when the passed value is not
059: * valid for the tabular data's row type.
060: */
061: Object[] calculateIndex(CompositeData value);
062:
063: /**
064: * Retrieve the number of rows in the tabular data.
065: *
066: * @return the number of rows.
067: */
068: int size();
069:
070: /**
071: * Determine whether the tabular data is empty.
072: *
073: * @return true when there are no rows, false otherwise
074: */
075: boolean isEmpty();
076:
077: /**
078: * Determine whether the tabular data contains the passed value as a row.
079: * If the passed value is null or invalid, false is returned.
080: *
081: * @param key the value to check
082: * @return true when the value is a row index, false otherwise
083: */
084: boolean containsKey(Object[] key);
085:
086: /**
087: * Determine whether the tabular data contains the passed value.
088: * If the passed value is null or invalid, false is returned.
089: *
090: * @param value the value to check
091: * @return true when the value is a row index, false otherwise
092: */
093: boolean containsValue(CompositeData value);
094:
095: /**
096: * Retrieve the composite data for the passed index.
097: *
098: * @param key the index to retrieve
099: * @exception NullPointerException when the passed key is null
100: * @exception InvalidKeyException when the passed key does match
101: * the row type of the tabular data.
102: */
103: CompositeData get(Object[] key);
104:
105: /**
106: * Add a value to the tabular data. The value must have the same
107: * CompositeType has the tabular data and there is no value already
108: * occupying the index for the value.
109: *
110: * @param value the value to add
111: * @exception NullPointerException when the passed value is null
112: * @exception InvalidOpenTypeException when the value is not valid for
113: * the row type of the tabular data
114: * @exception KeyAlreadyExistsException when the index for the value
115: * is already occupied.
116: */
117: void put(CompositeData value);
118:
119: /**
120: * Removes the value for the passed and returns the removed value, or
121: * null if the key was not present.
122: *
123: * @param key the index of the value to remove
124: * @exception NullPointerException when the passed key is null
125: * @exception InvalidKeyException when the key is not valid for the
126: * tabular data
127: */
128: CompositeData remove(Object[] key);
129:
130: /**
131: * Add all the passed values. All the values are checked before
132: * addition including any duplicates that might be added. Either all
133: * or no value is added.
134: *
135: * @param values the values to add
136: * @exception NullPointerException when the passed values is null or
137: * an element of the values is null
138: * @exception InvalidOpenTypeException when one of value is not valid for
139: * the row type of the tabular data
140: * @exception KeyAlreadyExistsException when the index for one of the values
141: * is already occupied.
142: */
143: void putAll(CompositeData[] values);
144:
145: /**
146: * Removes all CompositeData values from the Tabular Data
147: */
148: void clear();
149:
150: /**
151: * Returns a set view of the index values.
152: *
153: * @return the set of index values.
154: */
155: Set keySet();
156:
157: /**
158: * Returns a set view of the row values.
159: *
160: * @return the set of row values.
161: */
162: Collection values();
163:
164: /**
165: * Tests whether two tabular data objects are equal<p>
166: *
167: * The object is non-null<br>
168: * The object implements this interface<br>
169: * The row types are equal<br>
170: * The index to value mappings are equal
171: *
172: * @param obj the object to test
173: * @return true when the above conditions are satisfied, false otherwise.
174: */
175: boolean equals(Object obj);
176:
177: /**
178: * Generates a hashcode for the implementation.<p>
179: *
180: * The sum of the hashCodes for the elements mentioned in the equals
181: * method
182: *
183: * @return the calculated hashcode
184: */
185: int hashCode();
186:
187: /**
188: * A string representation of the open mbean operation info.<p>
189: *
190: * It is made up of implementation class and the values mentioned
191: * in the equals method
192: *
193: * @return the string
194: */
195: String toString();
196: }
|