/*
 * Copyright (C) 2005-2006 Kouji Sugisawa. All rights reserved.
 */

package jp.sourceforge.livez.vodafone;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
 * Vappli を実装したクラスです。
 * 
 * @author 杉澤 浩二
 */
final class VappliImpl implements Vappli {

	private static final long serialVersionUID = 1L;

	/**
	 * MIDP バージョンと CLDC バージョンを指定してこのクラスを構築します。
	 * 
	 * @param midp MIDP バージョン情報
	 * @param cldc CLDC バージョン情報
	 */
	public VappliImpl(final float midp, final float cldc) {
		this.midpVersion = midp;
		this.cldcVersion = cldc;
	}

	/**
	 * MIDP バージョンと CLDC バージョンを指定してこのクラスを構築します。
	 * 
	 * @param midp MIDP バージョン情報
	 * @param cldc CLDC バージョン情報
	 * @param jscl JSCL バージョン情報
	 * @param vscl VSCL バージョン情報
	 */
	public VappliImpl(final float midp, final float cldc, final String jscl, final String vscl) {
		this.midpVersion = midp;
		this.cldcVersion = cldc;
		this.jsclVersion = jscl;
		this.vsclVersion = vscl;
	}

	/**
	 * MIDP 対応バージョンを保持します。
	 */
	private float midpVersion;

	/*
	 * @see jp.sourceforge.livez.vodafone.Vappli#getMidpVersion()
	 */
	public float getMidpVersion() {
		return midpVersion;
	}

	/**
	 * CLDC 対応バージョンを保持します。
	 */
	private float cldcVersion;

	/*
	 * @see jp.sourceforge.livez.vodafone.Vappli#getCldcVersion()
	 */
	public float getCldcVersion() {
		return cldcVersion;
	}

	/**
	 * JSCL 対応バージョンを保持します。
	 */
	private String jsclVersion = null;

	/*
	 * @see jp.sourceforge.livez.vodafone.Vappli#getJsclVersion()
	 */
	public String getJsclVersion() {
		return jsclVersion;
	}

	/**
	 * VSCL 対応バージョンを保持します。
	 */
	private String vsclVersion = null;

	/*
	 * @see jp.sourceforge.livez.vodafone.Vappli#getVsclVersion()
	 */
	public String getVsclVersion() {
		return vsclVersion;
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}

	@Override
	public boolean equals(final Object obj) {
		return EqualsBuilder.reflectionEquals(this, obj);
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
	}

}
