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

package jp.sourceforge.livez.dao;

import java.io.Serializable;

import org.apache.commons.lang.StringUtils;
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;

/**
 * iアプリ情報を提供します。
 * 
 * @author 杉澤 浩二
 */
public class ImodeIappli implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * デフォルトコンストラクタです。
	 */
	public ImodeIappli() {}

	/**
	 * 機種名を保持します。
	 */
	private String name;

	/**
	 * 機種名を返します。
	 * 
	 * @return 機種名
	 */
	public String getName() {
		return name;
	}

	/**
	 * 機種名を設定します。
	 * 
	 * @param name 機種名
	 */
	public void setName(final String name) {
		this.name = StringUtils.defaultIfEmpty(name, null);
	}

	/**
	 * DoJa バージョンを保持します。
	 */
	private Float doja;

	/**
	 * DoJa バージョンを返します。
	 * 
	 * @return DoJa バージョン
	 */
	public Float getDoja() {
		return doja;
	}

	/**
	 * DoJa バージョンを設定します。
	 * 
	 * @param doJa DoJa バージョン
	 */
	public void setDoja(final Float doJa) {
		this.doja = doJa;
	}

	/**
	 * LEやOEなどの亜種かどうかを保持します。
	 */
	private boolean edition;

	public boolean isEdition() {
		return edition;
	}

	public void setEdition(final boolean edition) {
		this.edition = edition;
	}

	/**
	 * JAR 容量を保持します。
	 * 
	 */
	private Integer jar;

	/**
	 * JAR 容量を返します。
	 * 
	 * @return JAR 容量
	 */
	public Integer getJar() {
		return jar;
	}

	/**
	 * JAR 容量を設定します。
	 * 
	 * @param jar JAR 容量
	 */
	public void setJar(final Integer jar) {
		this.jar = (jar == null || jar <= 0) ? null : jar;
	}

	/**
	 * ScratchPad 容量を保持します。
	 */
	private Integer sp;

	/**
	 * ScratchPad 容量を返します。
	 * 
	 * @return ScratchPad 容量
	 */
	public Integer getSp() {
		return sp;
	}

	/**
	 * ScratchPad 容量を設定します。
	 * 
	 * @param sp ScratchPad 容量
	 */
	public void setSp(final Integer sp) {
		this.sp = (sp == null || sp <= 0) ? null : sp;
	}

	/**
	 * 描画領域の幅を保持します。
	 */
	private Integer width;

	/**
	 * 描画領域の幅を返します。
	 * 
	 * @return 描画領域の幅
	 */
	public Integer getWidth() {
		return width;
	}

	/**
	 * 描画領域の幅を設定します。
	 * 
	 * @param width 描画領域の幅
	 */
	public void setWidth(final Integer width) {
		this.width = (width == null || width <= 0) ? null : width;
	}

	/**
	 * 描画領域の高さを保持します。
	 */
	private Integer height;

	/**
	 * 描画領域の高さを返します。
	 * 
	 * @return 描画領域の高さ
	 */
	public Integer getHeight() {
		return height;
	}

	/**
	 * 描画領域の高さを設定します。
	 * 
	 * @param height 描画領域の高さ
	 */
	public void setHeight(final Integer height) {
		this.height = (height == null || height <= 0) ? null : height;
	}

	/**
	 * FeliCa対応状況を保持します。
	 */
	private Integer felica;

	public Integer getFelica() {
		return felica;
	}

	public void setFelica(final Integer felica) {
		this.felica = (felica == null || felica <= 0) ? null : felica;
	}

	@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);
	}

}
