/*
 * @(#)FCheckString.java
 *
 * Copyright 2001 by Intelligent Technology Inc. All rights reserved.
 */

package jp.co.iti.fagot.fob;

/**
 * Enable check 付の String
 *
 * チェックのboolean値はnullにはならないため、Stringがnullの場合、全体を無効にする
 *
 * 形式：
 *	1			:True,文字列なし（通常ありえない）
 *	0			:False,文字列なし
 *	1文字列		:
 *	0文字列		:
 *
 * @author  千曳秀喜
 * @version 1.01 2001/01/07
 */
public class FCheckString extends FElement {

	/**
	 * コンストラクタ
	 */
	public FCheckString() {
	super();
	set("0");
	}

	/**
	 * コンストラクタ
	 */
	public FCheckString( String data ) {
	super();
	set(data);
	}

	/**
	 * コンストラクタ
	 */
	public FCheckString( boolean bool,String data ) {
	super();
	set( ((bool)?"True":"False"),data );
	}

	/**
	 * コンストラクタ
	 */
	public FCheckString( String bool,String data ) {
	super();
	set( bool,data );
	}

	/**
	 * 値の取得
	 */
	public String get() {
	return ( (String)getData() ) ;
	}

	/**
	 * 値の取得(そのままの形で取得)
	 */
	public String getString() {
	if ( isNull() ) {
		return null;
	}
	return new String((String)getData());
	}

	/**
	 * 値の取得(文字列)
	 */
	public String getValue() {
	if ( isNull() ) {
		return null;
	}
	String szData = new String((String)getData());
	if ( szData.length() <= 1 ) {
		return null;
	}
	return ( szData.substring(1) ) ;
	}

	/**
	 * 値の取得(boolean値)
	 */
	public boolean getCheck() {
	if ( isNull() ) {
		return false;
	}
	String szData = new String((String)getData());
	if ( szData.length() < 1 ) {
		return false;
	}
	if ( szData.startsWith("1") ) {
		return true;
	}
	return false ;
	}

	/**
	 * 値の取得(boolean値)
	 */
	public String getCheckString() {
	return ((getCheck())?"True":"False") ;
	}

	/**
	 * 値の設定
	 */
	public void set( String bool, String data ) {
	String szData = "0";
	if ( bool.toLowerCase().equals("true") ) {
		szData = "1" ;
	}
	if ( data != null ) {
		szData += data;
	}
	set( szData );
	}

	/**
	 * 値の設定
	 */
	public void set( String data ) {
	setData( data ) ;
	}

	//## CLONE ########################################################
	/**
	 * 複製インスタンスの作成
	 * 各実現クラスにおいてインスタンスを生成する
	 * 仮想クラス（およびインスタンス化されないクラス）ではnullを返す
	 */
	public Object createClone() {
	return new FCheckString();
	}
}
