content: /*
   * CDDL HEADER START
   *
   * The contents of this file are subject to the terms of the Common Development
   * and Distribution License (the "License").
   * You may not use this file except in compliance with the License.
   *
   * You can obtain a copy of the license at
   * src/com/vodafone360/people/VODAFONE.LICENSE.txt or
   * http://github.com/360/360-Engine-for-Android
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   * When distributing Covered Code, include this CDDL HEADER in each file and
   * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
   * If applicable, add the following below this CDDL HEADER, with the fields
   * enclosed by brackets "[]" replaced with your own identifying information:
   * Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   *
   * Copyright 2010 Vodafone Sales & Services Ltd.  All rights reserved.
   * Use is subject to license terms.
   */
  
  package com.vodafone360.people.datatypes;
  
  import java.util.Enumeration;
  import java.util.Hashtable;
  
  import android.os.Parcel;
  import android.os.Parcelable;
  
  /**
   * BaseDataType representing Identity deletion information retrieved from server.
   */
  public class IdentityDeletion extends BaseDataType implements Parcelable {
  
  	/**
  	 * Enumeration of Tags for StatusMsg item.
  	 */
  	private enum Tags {
  		STATUS("status"),
  		DRYRUN("dryrun");
  
  		private final String tag;
  
  		/**
  		 * Constructor creating Tags item for specified String.
  		 *
  		 * @param s
  		 *            String value for Tags item.
  		 */
  		private Tags(final String s) {
  			tag = s;
  		}
  
  		/**
  		 * String value associated with Tags item.
  		 *
  		 * @return String value for Tags item.
  		 */
  		private String tag() {
  			return tag;
  		}
  
  		/**
  		 * Find Tags item for specified String.
  		 *
  		 * @param tag
  		 *            String value to find Tags item for
  		 * @return Tags item for specified String, null otherwise
  		 */
  		private static Tags findTag(final String tag) {
  			for (Tags tags : Tags.values()) {
  				if (tag.compareTo(tags.tag()) == 0) {
  					return tags;
  				}
  			}
  			return null;
  		}
  	}
  
  	private Boolean mStatus = null;
  
  	private Boolean mDryRun = null;
  
  	/** {@inheritDoc} */
  	@Override
  	public int getType() {
  		return IDENTITY_DELETION_DATA_TYPE;
  	}
  
  	/**
  	 * Populate Identity from supplied Hashtable.
  	 *
  	 * @param hash
  	 * Hashtable containing identity details.
  	 * @return Identity instance
  	 */
  	public final IdentityDeletion createFromHashtable(final Hashtable<String, Object> hash) {
  		Enumeration<String> e = hash.keys();
  		while (e.hasMoreElements()) {
  			String key = e.nextElement();
  			Tags tag = Tags.findTag(key);
  			if (tag != null) {
  				setValue(tag, hash.get(key));
  			}
  		}
  		return this;
  	}
  
  	/**
  	 * Sets the value of the member data item associated with the specified tag.
  	 *
  	 * @param tag
  	 *            Current tag
  	 * @param val
  	 *            Value associated with the tag
  	 */
  	private void setValue(final Tags tag, final Object val) {
  		switch (tag) {
  		case STATUS:
  			mStatus = (Boolean) val;
  			break;
  
  		case DRYRUN:
  			mDryRun = (Boolean) val;
  			break;
  
  		default:
  			// Do nothing.
  			break;
  		}
  	}
  
  	/** {@inheritDoc} */
  	@Override
  	public final int describeContents() {
  		return 1;
  	}
  
  	/** {@inheritDoc} */
  	@Override
  	public final void writeToParcel(final Parcel dest, final int flags) {
  		Object[] ba = new Object[2];
  		ba[0] = mStatus;
  		ba[1] = mDryRun;
  		dest.writeArray(ba);
  
  	}
  }
  