/*
 * 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モード Flash 情報を提供します。
 * 
 * @author 杉澤 浩二
 */
public class ImodeFlash implements Serializable {

	private static final long serialVersionUID = 1L;

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

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

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

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

	/**
	 * Flash Lite バージョンを保持します。
	 */
	private Float version;

	/**
	 * Flash Lite バージョンを返します。
	 * 
	 * @return Flash Lite バージョン
	 */
	public Float getVersion() {
		return version;
	}

	/**
	 * Flash Lite バージョンを設定します。
	 * 
	 * @param version Flash Lite バージョン
	 */
	public void setVersion(final Float version) {
		this.version = version;
	}

	/**
	 * 待受け画面の高さを保持します。
	 */
	private Integer screenHeight;

	/**
	 * 待受け画面の高さを返します。
	 * 
	 * @return 待受け画面の高さ
	 */
	public Integer getScreenHeight() {
		return screenHeight;
	}

	/**
	 * 待受け画面の高さを設定します。
	 * 
	 * @param screenHeight 待受け画面の高さ
	 */
	public void setScreenHeight(final Integer screenHeight) {
		if (screenHeight == null || screenHeight <= 0)
			this.screenHeight = null;
		else
			this.screenHeight = screenHeight;
	}

	/**
	 * 背面画面対応状況を保持します。
	 */
	private boolean subscreen;

	/**
	 * 背面画面対応状況を返します。
	 * 
	 * @return 背面画面対応状況
	 */
	public boolean isSubscreen() {
		return subscreen;
	}

	/**
	 * 背面画面対応状況を設定します。
	 * 
	 * @param subscreen 背面画面対応状況
	 */
	public void setSubscreen(final boolean subscreen) {
		this.subscreen = subscreen;
	}

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

}
