//===========================================================================
// package
//===========================================================================
package jp.gr.java_conf.bugslife.bug;

//===========================================================================
// import
//===========================================================================
// Java core API
import java.util.*;
import java.text.*;
import org.apache.commons.logging.*;

// DB API
import jp.gr.java_conf.bugslife.db.*;

// Util API
import jp.gr.java_conf.bugslife.util.*;
import jp.gr.java_conf.bugslife.user.*;
import jp.gr.java_conf.bugslife.system.*;


/**
 *<PRE>
 * 
 * BugListStatistics僋儔僗
 * 
 * TAT摑寁梡偺儈僯僋儔僗
 * 
 *</PRE>
 * @version	0.0, 2001/09/10
 * @author	榢愳丂惓姲
 */
//===========================================================================
public class BugListStatistics
{
//===========================================================================
// attributes
//===========================================================================
	/**
	 *	扴摉幰柤
	 */
	private String m_name = null;
	/**
	 *	枹姰椆審悢
	 */
	private int m_count1 = 0;
	/**
	 *	姰椆審悢
	 */
	private int m_count2 = 0;
	/**
	 *	崌寁審悢
	 */
	private int m_total = 0;
	/**
	 *	僗僥乕僞僗暿僶僌攝楍
	 */
	private ArrayList[] m_bugs;
	
	/**
	 * Log
	 */
	private Log log = LogFactory.getLog(this.getClass().getName());
//===========================================================================
// methods
//===========================================================================
	/**
	 *	僨僼僅儖僩僐儞僗僩儔僋僞
	 *
	 */
	public BugListStatistics()
	{
		//僶僌攝楍偺弶婜壔
		m_bugs = new ArrayList[7];
		for (int i = 0; i < 7; i++) {
			m_bugs[i] = new ArrayList();
		}
	}
//======================================
// methods
//======================================
	/**
	 * 僶僌摑寁偺僙僢僩
	 * 
	 * @param 僶僌摑寁
	 */
	public void setMemberStatistics(MemberStatistics bug)
	{
		//扴摉幰柤僙僢僩
		if (m_name == null) {
			m_name = bug.getName();
		}
		
		switch(bug.getStatus()) {
		// 枹妋擣
		case Bug.STS_UNCONFIRMED :
			m_bugs[0].add(bug);
			m_count1++;
			m_total++;
			break;
		// 怴婯
		case Bug.STS_NEW :
			m_bugs[1].add(bug);
			m_count1++;
			m_total++;
			break;
		// 嵞奐
		case Bug.STS_REOPEN :
			m_bugs[2].add(bug);
			m_count1++;
			m_total++;
			break;
		// 夝愅拞
		case Bug.STS_INVESTIGATION :
			m_bugs[3].add(bug);
			m_count1++;
			m_total++;
			break;
		// 廋惓拞
		case Bug.STS_REPAIRED :
			m_bugs[4].add(bug);
			m_count1++;
			m_total++;
			break;
		// 妋擣拞
		case Bug.STS_RESOLVED :
			m_bugs[5].add(bug);
			m_count1++;
			m_total++;
			break;
		// 姰椆
		case Bug.STS_CLOSE :
			m_bugs[6].add(bug);
			m_count2++;			//姰椆審悢壛嶼
			m_total++;
			break;
		}
		
	}
	/**
	 * 扴摉偺庢摼
	 * 
	 * @return 扴摉
	 */
	public String getName()
	{
		return m_name;
	}
	/**
	 * 枹姰椆審悢偺庢摼
	 * 
	 * @return 審悢
	 */
	public int getCount1()
	{
		return m_count1;
	}
	/**
	 * 姰椆審悢偺庢摼
	 * 
	 * @return 審悢
	 */
	public int getCount2()
	{
		return m_count2;
	}
	/**
	 * 崌寁審悢偺庢摼
	 * 
	 * @return 審悢
	 */
	public int getTotal()
	{
		return m_total;
	}
	/**
	 * bno偺庢摼
	 * 
	 * @return bno
	 */
	public Collection getBugs(int i)
	{
		return m_bugs[i];
	}
//===========================================================================
// methods
//===========================================================================
	/**
	 *	僋儔僗忣曬
	 */
	public String toString()
	{
		StringBuffer sb = new StringBuffer();
		sb.append("--- [BugListStatistics] --- \n");
		sb.append("name  : " + m_name + "\n");
		sb.append("count1: " + m_count1 + "\n");
		sb.append("count2: " + m_count2 + "\n");
		sb.append("total: " + m_total + "\n");
		for (int i = 0; i < 7; i++) {
			sb.append("status[" + i + "] ");
			Iterator ite = ((Collection)m_bugs[i]).iterator();
			while(ite.hasNext()) {
				MemberStatistics bug = (MemberStatistics)ite.next();
				sb.append(bug.getBnoString() + " ");
			}
		}
		sb.append("--- [BugListStatistics] --- \n");
		return sb.toString();
	}
}