001: /*
002: ******************************************************************************
003: * Copyright (C) 2004, International Business Machines Corporation and *
004: * others. All Rights Reserved. *
005: ******************************************************************************
006: */
007:
008: package com.ibm.icu.impl;
009:
010: import java.util.NoSuchElementException;
011:
012: import com.ibm.icu.util.UResourceTypeMismatchException;
013:
014: /**
015: * <p>Class for enabling iteration over UResourceBundle objects.
016: * Example of use:<br>
017: * <pre>
018: * ICUResourceBundleIterator iterator = resB.getIterator();
019: * ICUResourceBundle temp;
020: * while (iterator.hasNext()) {
021: * temp = iterartor.next();
022: * int type = temp.getType();
023: * switch(type){
024: * case UResourceBundle.STRING:
025: * str = temp.getString();
026: * break;
027: * case UResourceBundle.INT:
028: * integer = temp.getInt();
029: * break;
030: * .....
031: * }
032: * // do something interesting with data collected
033: * }
034: * </pre>
035: * @author ram
036: * @draft ICU 3.0
037: */
038: public class ICUResourceBundleIterator {
039: private ICUResourceBundle bundle;
040: private int index = 0;
041: private int size = 0;
042:
043: /**
044: * Construct a resource bundle iterator for the
045: * given resource bundle
046: *
047: * @param bndl The resource bundle to iterate over
048: * @draft ICU 3.0
049: */
050: public ICUResourceBundleIterator(ICUResourceBundle bndl) {
051: bundle = bndl;
052: size = bundle.getSize();
053: }
054:
055: /**
056: * Returns the next element of this iterator if this iterator object has at least one more element to provide
057: * @return the UResourceBundle object
058: * @throws NoSuchElementException
059: * @draft ICU 3.0
060: */
061: public ICUResourceBundle next() throws NoSuchElementException {
062: if (index < size) {
063: return bundle.get(index++);
064: }
065: throw new NoSuchElementException();
066: }
067:
068: /**
069: * Returns the next String of this iterator if this iterator object has at least one more element to provide
070: * @return the UResourceBundle object
071: * @throws NoSuchElementException
072: * @throws UResourceTypeMismatchException
073: * @draft ICU 3.0
074: */
075: public String nextString() throws NoSuchElementException,
076: UResourceTypeMismatchException {
077: if (index < size) {
078: return bundle.getString(index++);
079: }
080: throw new NoSuchElementException();
081: }
082:
083: /**
084: * Resets the internal context of a resource so that iteration starts from the first element.
085: * @draft ICU 3.0
086: */
087: public void reset() {
088: //reset the internal context
089: index = 0;
090: }
091:
092: /**
093: * Checks whether the given resource has another element to iterate over.
094: * @return TRUE if there are more elements, FALSE if there is no more elements
095: * @draft ICU 3.0
096: */
097: public boolean hasNext() {
098: return index < size;
099: }
100: }
|