/*
 * $Id$ $Revision$
 * $Date$
 * 
 * ==================================================================== 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.
 */
package wicket.examples.displaytag.export;

import java.util.Iterator;

import org.apache.commons.collections.iterators.ArrayIterator;
import org.apache.commons.lang.builder.HashCodeBuilder;

/**
 * Enumeration for media types.
 * 
 * @author Fabrizio Giustina
 * @version $Revision$ ($Author$)
 */
public final class MediaTypeEnum
{
	/**
	 * Media type CSV = 1.
	 */
	public static final MediaTypeEnum CSV = new MediaTypeEnum(1, "csv");

	/**
	 * media type EXCEL = 2.
	 */
	public static final MediaTypeEnum EXCEL = new MediaTypeEnum(2, "excel");

	/**
	 * media type XML = 3.
	 */
	public static final MediaTypeEnum XML = new MediaTypeEnum(3, "xml");

	/**
	 * media type HTML = 4.
	 */
	public static final MediaTypeEnum HTML = new MediaTypeEnum(4, "html");

	/**
	 * array containing all the export types.
	 */
	public static final MediaTypeEnum[] ALL = { EXCEL, XML, CSV, HTML };

	/**
	 * Code; this is the primary key for these objects.
	 */
	private final int enumCode;

	/**
	 * description.
	 */
	private final String enumName;

	/**
	 * private constructor. Use only constants.
	 * 
	 * @param code
	 *            int code
	 * @param name
	 *            description of media type
	 */
	private MediaTypeEnum(int code, String name)
	{
		this.enumCode = code;
		this.enumName = name;
	}

	/**
	 * returns the int code.
	 * 
	 * @return int code
	 */
	public int getCode()
	{
		return this.enumCode;
	}

	/**
	 * returns the description.
	 * 
	 * @return String description of the media type ("excel", "xml", "csv",
	 *         "html")
	 */
	public String getName()
	{
		return this.enumName;
	}

	/**
	 * lookup a media type by key.
	 * 
	 * @param key
	 *            int code
	 * @return MediaTypeEnum or null if no mediaType is found with the given key
	 */
	public static MediaTypeEnum fromCode(int key)
	{
		for (int i = 0; i < ALL.length; i++)
		{
			if (key == ALL[i].getCode())
			{
				return ALL[i];
			}
		}
		// lookup failed
		return null;
	}

	/**
	 * lookup a media type by an Integer key.
	 * 
	 * @param key
	 *            Integer code - null safe: a null key returns a null Enum
	 * @return MediaTypeEnum or null if no mediaType is found with the given key
	 */
	public static MediaTypeEnum fromIntegerCode(Integer key)
	{
		if (key == null)
		{
			return null;
		}
		else
		{
			return fromCode(key.intValue());
		}
	}

	/**
	 * Lookup a media type by a String key.
	 * 
	 * @param code
	 *            String code - null safe: a null key returns a null Enum
	 * @return MediaTypeEnum or null if no mediaType is found with the given key
	 */
	public static MediaTypeEnum fromName(String code)
	{
		for (int i = 0; i < ALL.length; i++)
		{
			if (ALL[i].getName().equals(code))
			{
				return ALL[i];
			}
		}
		// lookup failed
		return null;
	}

	/**
	 * returns an iterator on all the media type.
	 * 
	 * @return iterator
	 */
	public static Iterator iterator()
	{
		return new ArrayIterator(ALL);
	}

	/**
	 * returns the media type description.
	 * 
	 * @see java.lang.Object#toString()
	 */
	public String toString()
	{
		return getName();
	}

	/**
	 * Only a single instance of a specific MediaTypeEnum can be created, so we
	 * can check using ==.
	 * 
	 * @param o
	 *            the object to compare to
	 * @return hashCode
	 */
	public boolean equals(Object o)
	{
		if (this == o)
		{
			return true;
		}

		return false;
	}

	/**
	 * @see java.lang.Object#hashCode()
	 */
	public int hashCode()
	{
		return new HashCodeBuilder(1188997057, -1289297553).append(this.enumCode).toHashCode();
	}
}
@@ -723,72 +723,33 @@
 til.
-Iterator;%0A%0Aimport org.apache.commons.collections.iterators.Array
+Arrays;%0Aimport java.util.
 Iter
@@ -754,16 +754,17 @@
 erator;%0A
+%0A
 import o
@@ -3529,26 +3529,36 @@
 urn 
-new 
 Array
-I
+s.asList(ALL).i
 terator(
 ALL)
@@ -3553,19 +3553,16 @@
 terator(
-ALL
 );%0A%09%7D%0A%0A%09

Remove dependency on commons-collections