001: /**
002: * ===========================================
003: * JFreeReport : a free Java reporting library
004: * ===========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
009: *
010: * This library is free software; you can redistribute it and/or modify it under the terms
011: * of the GNU Lesser General Public License as published by the Free Software Foundation;
012: * either version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: * See the GNU Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public License along with this
019: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020: * Boston, MA 02111-1307, USA.
021: *
022: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023: * in the United States and other countries.]
024: *
025: * ------------
026: * PropertiesIterator.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report.util;
030:
031: import java.util.Iterator;
032: import java.util.Properties;
033:
034: /**
035: * The properties iterator iterates over a set of enumerated properties. The properties
036: * are named by an optional prefix plus a number, which is counted up on each iteration:
037: * <p/>
038: * <ul><li>prefix_0 </li><li>prefix_1 </li><li>prefix_2 </li><li>... </li></ul>
039: * <p/>
040: * The iterator iterates over all subsequent numbered proprties until the number-sequence
041: * is finished.
042: *
043: * @author Thomas Morgner
044: * @deprecated This class is no longer used.
045: */
046: public class PropertiesIterator implements Iterator {
047: /**
048: * The underlying properties collection.
049: */
050: private Properties properties;
051:
052: /**
053: * The property name prefix.
054: */
055: private String prefix;
056:
057: /**
058: * An incremental counter.
059: */
060: private int count;
061:
062: /**
063: * Creates a new properties iterator without an prefix.
064: *
065: * @param properties the underlying properties collection.
066: */
067: public PropertiesIterator(final Properties properties) {
068: this (properties, null);
069: }
070:
071: /**
072: * Creates a new properties iterator with the given prefix.
073: *
074: * @param properties the underlying properties collection.
075: * @param prefix a prefix for generating property names (null permitted).
076: */
077: public PropertiesIterator(final Properties properties,
078: final String prefix) {
079: if (properties == null) {
080: throw new NullPointerException();
081: }
082: this .properties = properties;
083: this .prefix = prefix;
084: this .count = 0;
085: }
086:
087: /**
088: * Returns true if there is a property in the underlying collection with a name that
089: * matches the name returned by the getNextKey() method.
090: *
091: * @return true if there is another property with a name in the correct form.
092: */
093: public boolean hasNext() {
094: return properties.containsKey(getNextKey());
095: }
096:
097: /**
098: * Generates a property name in the form <prefix><count>. <P> The <count> begins at 0,
099: * and is automatically incremented with each call to the next() method.
100: *
101: * @return the next key in the sequence
102: */
103: private String getNextKey() {
104: if (prefix == null) {
105: return String.valueOf(count);
106: }
107: return prefix + String.valueOf(count);
108: }
109:
110: /**
111: * Returns the property with a name the same as the name generated by the getNextKey()
112: * method, or null if there is no such property (that is, then end of the sequence has
113: * been reached).
114: *
115: * @return the property or null.
116: */
117: public Object next() {
118: final String value = properties.getProperty(getNextKey());
119: count++;
120: return value;
121: }
122:
123: /**
124: * Always throws UnsupportedOperationException as remove is not implemented for this
125: * iterator.
126: *
127: * @throws UnsupportedOperationException as remove is not supported.
128: */
129: public void remove() {
130: throw new UnsupportedOperationException();
131: }
132:
133: }
|