A utility class for working with attribute and parameter collections used by Spring Web FLow : Collection « Collections Data Structure « Java






A utility class for working with attribute and parameter collections used by Spring Web FLow

    

/*
 * Copyright 2004-2008 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.Serializable;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

/**
 * A utility class for working with attribute and parameter collections used by Spring Web FLow.
 * 
 * @author Keith Donald
 * @author Erwin Vervaet
 */
public class CollectionUtils {

  /**
   * The shared, singleton empty iterator instance.
   */
  public static final Iterator EMPTY_ITERATOR = new EmptyIterator();

  /**
   * Private constructor to avoid instantiation.
   */
  private CollectionUtils() {
  }

  /**
   * Factory method that adapts an enumeration to an iterator.
   * @param enumeration the enumeration
   * @return the iterator
   */
  public static Iterator toIterator(Enumeration enumeration) {
    return new EnumerationIterator(enumeration);
  }


  /**
   * Add all given objects to given target list. No duplicates will be added. The contains() method of the given
   * target list will be used to determine whether or not an object is already in the list.
   * @param target the collection to which to objects will be added
   * @param objects the objects to add
   * @return whether or not the target collection changed
   */
  public static boolean addAllNoDuplicates(List target, Object[] objects) {
    if (objects == null || objects.length == 0) {
      return false;
    } else {
      boolean changed = false;
      for (int i = 0; i < objects.length; i++) {
        if (!target.contains(objects[i])) {
          target.add(objects[i]);
          changed = true;
        }
      }
      return changed;
    }
  }

  /**
   * Iterator iterating over no elements (hasNext() always returns false).
   */
  private static class EmptyIterator implements Iterator, Serializable {

    private EmptyIterator() {
    }

    public boolean hasNext() {
      return false;
    }

    public Object next() {
      throw new UnsupportedOperationException("There are no elements");
    }

    public void remove() {
      throw new UnsupportedOperationException("There are no elements");
    }
  }

  /**
   * Iterator wrapping an Enumeration.
   */
  private static class EnumerationIterator implements Iterator {

    private Enumeration enumeration;

    public EnumerationIterator(Enumeration enumeration) {
      this.enumeration = enumeration;
    }

    public boolean hasNext() {
      return enumeration.hasMoreElements();
    }

    public Object next() {
      return enumeration.nextElement();
    }

    public void remove() throws UnsupportedOperationException {
      throw new UnsupportedOperationException("Not supported");
    }
  }
}

   
    
    
    
  








Related examples in the same category

1.Disjoint two collections
2.Whether Collection only contains a single unique object
3.Simple implementation of a generic Bag
4.Find a value of the given type in the given Collection
5.Check whether the given Collection contains the given element instance.
6.Return the first element in 'candidates' that is contained in source
7.Return true if any element in 'candidates' is contained in source
8.Append, filter and get the size of collections
9.Is collection is empty, and all of its elements are empty
10.Deep clone collection: Returns a new collection containing clones of all the items in the specified collection.
11.Get the difference of two collections
12.The collection related utilities
13.A combination of two collections into a collection
14.Clone an array
15.Clones a map and prefixes the keys in the clone
16.Clones the lhs map and add all things from the rhs map.
17.Dump collection to String