/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKOpSvKeiCourseInfDel
*	ソースファイル名	：JBSbatKKOpSvKeiCourseInfDel.java
*	作成者				：富士通　
*	作成日				：2013年06月01日
*＜機能概要＞
*　コース変解約オプションサービス契約情報削除
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/06/01	FJ)			新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JBSbatKKPrcIfCommon;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKbatSaiInfChtCommon;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM023;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_TEL;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_TV;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKOpSvKeiCourseInfDel extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 抽出期間_開始年月日 **/
	String stYmd = "";
	
	/** 抽出期間_終了年月日 **/
	String edYmd = "";
	
	/** 料金プラン（固定グローバルＩＰ） **/
	private static final String PPLAN_PB0401 = "PB0401";

	/** 料金プラン（マルチセッション） **/
	private static final String PPLAN_PB1501 = "PB1501";
	
	private String keySvcKeiNo = "";
	
	// サービス契約番号リスト
	private ArrayList<JBSbatServiceInterfaceMap> svcKeiArrayList;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// ブレークするサービス契約番号
		keySvcKeiNo = "";
		// 出力用サービス契約番号のリスト
		svcKeiArrayList = new ArrayList<JBSbatServiceInterfaceMap>();
		
		// フリー項目[処理月区分]
		String targetMonthDiv = commonItem.getFreeItem();
		
		// 抽出対象期間を算出
		// システム日付から当月の月初と月末を算出
		String strDate = commonItem.getOpeDate();
		String ym = strDate.substring(0, 6);
		stYmd = ym + "01";
		edYmd = ym + JBSbatDateUtil.getEndOfMonth(ym);
		
		// 処理対象が[前月]の場合、前月の月初と月末を算出
		if(JBSbatKKConst.TRAN_TRGT_MON_BF.equals(targetMonthDiv))
		{
			stYmd = JBSbatDateUtil.adjustMonth(stYmd, -1);
			edYmd = JBSbatDateUtil.adjustMonth(edYmd, -1);
		}
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		String svcKeiNo = inMap.getString(JBSbatKKIFM019.SVC_KEI_NO);
		
		if(!"".equals(keySvcKeiNo) && !keySvcKeiNo.equals(svcKeiNo)) {
			// サービス契約分のデータを出力する。
			outputOpSvcKei(outputItem);
			
			svcKeiArrayList.add(inMap);
		}
		else
		{
			svcKeiArrayList.add(inMap);
		}
		//最終行かつ出力未のデータがある場合は、出力を行う。
		if(commonItem.isEndRecordFlg())
		{
			if(svcKeiArrayList.size() != 0)
			{
				outputOpSvcKei(outputItem);
			}
		}
		keySvcKeiNo = svcKeiNo;

		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * サービス契約単位の出力処理
	 * 
	 * @param outputItem 出力データ格納クラス
	 * @throws Exception アプリケーション実行例外
	 */
	private void outputOpSvcKei(JBSbatOutputItem outputItem) throws Exception{

		// 料金プランコードのキー
		String keyPplan = "";
		
		ArrayList<JBSbatServiceInterfaceMap> opMap = new ArrayList<JBSbatServiceInterfaceMap>();
		
		// サービス契約の件数分処理を繰り返す
		for(int i = 0 ; i < svcKeiArrayList.size() ; i++)
		{
			JBSbatServiceInterfaceMap inMap = svcKeiArrayList.get(i);
			
			String pplan = inMap.getString(JBSbatKKIFM019.PPLAN_CD);
				
			// オプションサービスコードが切り替わった段階で、出力処理を行う。
			if(!"".equals(keyPplan)  && !keyPplan.equals(pplan))
			{
				setOpInterfaceMap(opMap , outputItem);
			}
			
			// 固定グローバル、マルチセッションの場合はリストに溜め込みまとめて処理を行う。
			if(PPLAN_PB0401.equals(pplan) || PPLAN_PB1501.equals(pplan)) 
			{
				opMap.add(inMap);
			}
			// それ以外のデータは即座に出力処理を行う、
			else
			{
				JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
				outmap.setOutFlg(true);
				outputItem.addOutMapList(outmap);
			}
			
			// 最終行の場合は固定グローバル、マルチセッションの出力処理を行う。
			if(i == svcKeiArrayList.size() -1 && opMap.size() != 0)
			{
				setOpInterfaceMap(opMap , outputItem);
			}
			
			keyPplan = pplan;
		}
		
		// 出力したサービス契約リストをクリアーする。
		svcKeiArrayList.clear();
	}
	
	/**
	 * 固定グローバルＩＰ、マルチセッション出力データ検出処理
	 * 
	 * @oaram ouMap 出力対象の出力データ
	 * @param outputItem 出力データ格納クラス
	 */
	private void setOpInterfaceMap(ArrayList<JBSbatServiceInterfaceMap> opMap , JBSbatOutputItem outputItem)
	throws Exception
	{
		// 退避用
		String tmpOpSvcKeiNo = "";
		String tmpSvcUcwkNo = "";
		String tmpPlnStaYmd = "";
		String tmpPlnEndYmd = "";
		
		// 課金期間中で最も古いレコードのサービス契約内訳番号
		String minsvcUcwkNo = "";
		String minsvcUcwkStaYmd = "";
		
		// 課金対象外オプションサービス契約
		ArrayList<String> kakinGaiOpSvcKeiNoList = new ArrayList<String>();
		
		// オプションサービスコード単位に出力する場合、関係ないものが出力される場合は、すぐリターンする。
		if(opMap != null && opMap.size() == 0)
		{
			return;
		}
		
		for(int j = 0 ; j < opMap.size() ; j ++)
		{
			JBSbatServiceInterfaceMap inMap = opMap.get(j);
			String opSvcKeiNo = inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO);
			String plnStaYmd = inMap.getString(JBSbatKKIFM019.PLAN_STAYMD);
			String plnEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
			String svcUcwkNo = inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO);
			
			// オプションサービス契約番号がブレイクした場合、
			// オプションサービス契約単位に出力可否を判定する。
			if (tmpOpSvcKeiNo != null && !"".equals(tmpOpSvcKeiNo) && !tmpOpSvcKeiNo.equals(opSvcKeiNo)) 
			{

				if(isKakinPrd(tmpPlnStaYmd, tmpPlnEndYmd))
				{
					// 課金期間の場合、もっとも開始が古い内訳のみ出力
					if ("".equals(minsvcUcwkStaYmd) || minsvcUcwkStaYmd.compareTo(tmpPlnStaYmd) > 0) 
					{
						minsvcUcwkNo = tmpSvcUcwkNo;
						minsvcUcwkStaYmd = tmpPlnStaYmd;
					}

				} 
				else 
				{
					// 課金期間に存在しない場合、出力対象
					kakinGaiOpSvcKeiNoList.add(tmpOpSvcKeiNo);
				}
			}
			
			// ブレイクキーとなるオプションサービス契約番号を退避
			tmpOpSvcKeiNo = opSvcKeiNo;
			tmpPlnStaYmd = plnStaYmd;
			tmpPlnEndYmd = plnEndYmd;
			tmpSvcUcwkNo = svcUcwkNo;

			if (j == opMap.size() - 1) 
			{
				// 最終レコードの場合
				// オプションサービス契約単位の出力可否を判定する。
				if(isKakinPrd(tmpPlnStaYmd, tmpPlnEndYmd)) 
				{
					// 課金期間の場合、もっとも開始が古い内訳のみ出力
					if ("".equals(minsvcUcwkStaYmd) || minsvcUcwkStaYmd.compareTo(tmpPlnStaYmd) > 0) 
					{
						minsvcUcwkNo = tmpSvcUcwkNo;
						minsvcUcwkStaYmd = tmpPlnStaYmd;
					}

				}
				else 
				{
					// 課金期間に存在しない場合、出力対象
					kakinGaiOpSvcKeiNoList.add(tmpOpSvcKeiNo);
				}
			}
		}

		
		// 出力対象のレコードを出力する。
		for(int k = 0 ; k < opMap.size() ; k ++)
		{
			JBSbatServiceInterfaceMap inMap = opMap.get(k);
			String svcUcwkNo = inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO);
			String opSvcKeiNo = inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO);
			
			// 課金期間中のレコードで最古の内訳番号を持つ場合、出力
			boolean outFlg = false;
			if(svcUcwkNo != null && svcUcwkNo.equals(minsvcUcwkNo)) {
				outFlg = true;
			}
			
			// 課金期間外の場合、出力
			for (int m = 0; m < kakinGaiOpSvcKeiNoList.size(); m++) 
			{
				if (opSvcKeiNo != null && opSvcKeiNo.equals(kakinGaiOpSvcKeiNoList.get(m)))
				{
					outFlg = true;
				}
			}
			
			// 出力判定で出力対象となったレコードを出力
			if (outFlg)
			{
				JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
				outmap.setOutFlg(true);
				outputItem.addOutMapList(outmap);
			}
		}

//		// 最小で見つかった課金開始〜終了が課金期間に存在しない場合、課金期間のレコードを出力する。
//		if(stYmd.compareTo(minStaYmd) > 0 && stYmd.compareTo(minEndYmd) > 0 )
//		{
//			// 変数を初期化する。
//			String kknStaYmd = "";
//			String kknsvcUcwkNo = "";
//			
//			// 課金期間中の最小のプラン課金開始年月日を特定する。
//			for(int l = 0 ; l < opMap.size() ; l ++)
//			{
//				JBSbatServiceInterfaceMap inMap = opMap.get(l);
//				String plnStaYmd = inMap.getString(JBSbatKKIFM019.PLAN_STAYMD);
//				String plnEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
//				String svcUcwkNo = inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO);
//				
//				// 最小で見つかったサービス契約内訳番号は対象外。
//				if(!minsvcUcwkNo.equals(svcUcwkNo))
//				{
//				
//					if("".equals(kknStaYmd))
//					{
//						kknStaYmd = plnStaYmd;
//						kknsvcUcwkNo = svcUcwkNo;
//					}
//					else
//					{
//						if(kknsvcUcwkNo.equals(svcUcwkNo) && stYmd.compareTo(plnEndYmd) > 0 )
//						{
//							kknStaYmd = "";
//							kknsvcUcwkNo = "";
//						}
//						else
//						{
//							// プラン課金開始日が入っているレコードかつ、最小のプラン課金開始日が見つかった場合は、
//							// 最小の日付とサービス契約内訳番号を特定する。
//							if(!"".equals(plnStaYmd) && kknStaYmd.compareTo(plnStaYmd) > 0 )
//							{
//								kknStaYmd = plnStaYmd;
//								kknsvcUcwkNo = svcUcwkNo;
//							}
//						}
//					}
//				}
//			}
//			
//			// 課金期間中のレコードが存在しない場合、スキップ
//			if(!"".equals(kknStaYmd))
//			{
//				// 最小で見つかったサービス契約内訳番号と一致するデータを全件出力する。
//				for(int m = 0 ; m < opMap.size() ; m ++)
//				{
//					JBSbatServiceInterfaceMap inMap = opMap.get(m);
//					String svcUcwkNo = inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO);
//					
//					if(kknsvcUcwkNo.equals(svcUcwkNo))
//					{
//						JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
//						outmap.setOutFlg(true);
//						outputItem.addOutMapList(outmap);
//					}
//				}
//			}
//		}			
		opMap.clear();
	}
	
	/**
	 * 出力用インターフェイスマップ設定処理
	 * 
	 * @oaram ouMap 出力対象の出力データ
	 * @param outputItem 出力データ格納クラス
	 */
	private JBSbatServiceInterfaceMap setOutputData(JBSbatServiceInterfaceMap inMap)
	throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		outmap.setString(JBSbatKKIFM019.CHSHT_KEI_DIV, inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV));
		outmap.setString(JBSbatKKIFM019.SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.SVC_CD, inMap.getString(JBSbatKKIFM019.SVC_CD));
		outmap.setString(JBSbatKKIFM019.PRC_GRP_CD, inMap.getString(JBSbatKKIFM019.PRC_GRP_CD));
		outmap.setString(JBSbatKKIFM019.PCRS_CD, inMap.getString(JBSbatKKIFM019.PCRS_CD));
		outmap.setString(JBSbatKKIFM019.PPLAN_CD, inMap.getString(JBSbatKKIFM019.PPLAN_CD));
		outmap.setString(JBSbatKKIFM019.TRGT_KEI_SVC_CD, inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD));
		outmap.setString(JBSbatKKIFM019.SVC_KEI_UCWK_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO));
		outmap.setString(JBSbatKKIFM019.KKTK_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.OP_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.SEIOPSVC_KEI_NO, inMap.getString(JBSbatKKIFM019.SEIOPSVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.SBOP_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.SBOP_SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.WRIB_SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_TRGT_KEI_NO, inMap.getString(JBSbatKKIFM019.WRIB_SVC_TRGT_KEI_NO));
		outmap.setString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO, inMap.getString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO));
		outmap.setString(JBSbatKKIFM019.OWNR_KEI_NO, inMap.getString(JBSbatKKIFM019.OWNR_KEI_NO));
		outmap.setString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO));
		outmap.setString(JBSbatKKIFM019.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM019.SEIKY_KEI_NO));
		outmap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_STAYMD));
		outmap.setString(JBSbatKKIFM019.SVC_CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD));
		outmap.setString(JBSbatKKIFM019.PLAN_STAYMD, inMap.getString(JBSbatKKIFM019.PLAN_STAYMD));
		outmap.setString(JBSbatKKIFM019.PLAN_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		outmap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD));
		outmap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD));
		outmap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKKIFM019.PNLTY_HASSEI_CD));
		outmap.setString(JBSbatKKIFM019.PLAN_END_SBT_CD, inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD));
		outmap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKKIFM019.KAIHK_YMD));
		outmap.setString(JBSbatKKIFM019.PAUSE_STP_CD, inMap.getString(JBSbatKKIFM019.PAUSE_STP_CD));
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_YMD));
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD));
		outmap.setString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD));
		outmap.setString(JBSbatKKIFM019.SVC_CANCEL_YMD, inMap.getString(JBSbatKKIFM019.SVC_CANCEL_YMD));
		outmap.setString(JBSbatKKIFM019.SVC_ENDYMD, inMap.getString(JBSbatKKIFM019.SVC_ENDYMD));
		outmap.setString(JBSbatKKIFM019.SVC_CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.SVC_CHRG_ENDYMD));
		outmap.setString(JBSbatKKIFM019.IDO_DIV, inMap.getString(JBSbatKKIFM019.IDO_DIV));
		outmap.setString(JBSbatKKIFM019.TELNO, inMap.getString(JBSbatKKIFM019.TELNO));
		outmap.setString(JBSbatKKIFM019.JIGYOSHA_KEI_ID, inMap.getString(JBSbatKKIFM019.JIGYOSHA_KEI_ID));
		if(inMap.get(JBSbatKKIFM019.KEI_CNT) != null && !"".equals(inMap.get(JBSbatKKIFM019.KEI_CNT)))
		{
			outmap.set(JBSbatKKIFM019.KEI_CNT, inMap.get(JBSbatKKIFM019.KEI_CNT));
		}
		else
		{
			outmap.set(JBSbatKKIFM019.KEI_CNT, "");
		}
		outmap.setString(JBSbatKKIFM019.CAPA, inMap.getString(JBSbatKKIFM019.CAPA));
		outmap.setString(JBSbatKKIFM019.TEIZO_KMK_DIV, inMap.getString(JBSbatKKIFM019.TEIZO_KMK_DIV));
		outmap.setString(JBSbatKKIFM019.GUN_CD, inMap.getString(JBSbatKKIFM019.GUN_CD));
		outmap.setString(JBSbatKKIFM019.USE_FAIL_STAYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_STAYMD));
		outmap.setString(JBSbatKKIFM019.USE_FAIL_ENDYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_ENDYMD));
		outmap.setString(JBSbatKKIFM019.SEIRI_NO, inMap.getString(JBSbatKKIFM019.SEIRI_NO));
		outmap.setString(JBSbatKKIFM019.UPD_UNYO_YMD, inMap.getString(JBSbatKKIFM019.UPD_UNYO_YMD));
		outmap.setString(JBSbatKKIFM019.GENE_ADD_DTM, inMap.getString(JBSbatKKIFM019.GENE_ADD_DTM));
		outmap.setString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_STAYMD));
		outmap.setString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.SVCKEI_SVC_CHRG_ENDYMD));
		outmap.setString(JBSbatKKIFM019.OYA_KEI_SKBT_CD, inMap.getString(JBSbatKKIFM019.OYA_KEI_SKBT_CD));
		

		
		return outmap;
	}
	
	/**
	 * 指定した課金開始年月日、課金終了年月日から対象月が課金期間中かどうかを判定します。
	 * @param staYmd 課金開始年月日
	 * @param endYmd 課金終了年月日
	 * @return true：課金期間中、false：課金期間外
	 */
	private boolean isKakinPrd(String staYmd, String endYmd)
	{
		// 開始年月日が未設定の場合、課金期間外と判定
		if (staYmd == null || "".equals(staYmd)) 
		{
			return false;
		}
		
		// 終了年月日が未設定の場合、課金期間外と判定
		if (endYmd == null || "".equals(endYmd)) 
		{
			return false;
		}
		
		// 開始年月日＞終了年月日の場合、課金期間外と判定
		if (staYmd.compareTo(endYmd) > 0) 
		{
			return false;
		}
		
		// 対象月末日＞開始年月日、かつ対象月初日＜終了年月日の場合、課金期間と判定
		if (edYmd.compareTo(staYmd) > 0 && stYmd.compareTo(endYmd) < 0) 
		{
			return true;
		}
		else 
		{
			return false;
		}
	}
}
