/*********************************************************************************************************
 * 프로그램명 : StaticReportUtil.java 프로그램설명 : 프로젝트와 관련된 정보를 얻을수 있는 class 작성자 : 강원중 작성일 : 2003.11.30 변경일 : 2003.12.13
 **********************************************************************************************************/

package kr.co.kihyun.moumi.report.stat;

import kr.co.kihyun.moumi.doc.table.item.MItem;
import kr.co.kihyun.moumi.report.MReport;
import kr.co.kihyun.text.html.Html;

public class StaticMReport extends MReport {

	// width= 에다가 100%를 넣으려고...하는 로직 과 <table과 <table사이에 <br>넣는 로직
	public String getReportInsertWidth(String form) {
		String result = null;
		result = form;
		int stTABLE = 0;
		int edTABLE = 0;
		int stWidth = 0;
		String endResult = "";
		StringBuffer insertedForm = new StringBuffer();
		stTABLE = result.indexOf("<table", stTABLE);
		while (true) {

			if (stTABLE == -1)
				break;
			stWidth = result.indexOf("width=", stTABLE);
			if (stWidth == -1)
				break;
			edTABLE = result.indexOf("</table>", edTABLE + 8);
			if (edTABLE == -1)
				break;
			endResult = endResult + result.substring(stTABLE, stWidth + 6);
			endResult = endResult + "100% " + Html.width + "=";
			endResult = endResult + result.substring(stWidth + 6, edTABLE + 8) + "<br>";
			stTABLE = result.indexOf("<table", stTABLE + 6);
		}

		int edTableResult = endResult.lastIndexOf("<br>");
		endResult = endResult.substring(0, edTableResult);

		if (stWidth == -1) {
			// result = endResult;
			endResult = result;
			// ban lower case result = result.toLowerCase();
			endResult = "";
			stTABLE = 0;
			edTABLE = 0;

			while (true) {
				stTABLE = result.indexOf("<table");
				if (stTABLE == -1)
					break;
				insertedForm.append(result.substring(0, stTABLE + 6));
				insertedForm.append(" width=100% ");
				result = result.substring(stTABLE + 6, result.length());
			}
			insertedForm.append(result);
			endResult = insertedForm.toString();
		}
		return endResult;
	}

	// 하나의 보고 자료에서 입력된 보고 자료중 숫자는 합해서 집계를 낸다.
	// 정적인 표에서 사용함
	public static String[] getTotalDataList(int rowCount, int inItemCount, int[] itemType, String[][] dataList,
			int strInItemNum) throws ArrayIndexOutOfBoundsException {
		int itemCount = itemType.length;
		String[] dataTotal = new String[inItemCount];

		double floatData = 0.0D;
		double colTotalData = 0.0D;
		int index = 0;

		for (int c = strInItemNum, r = 0; c < itemCount; c++) {
			if (itemType[c] == MItem.INT) {
				floatData = 0.0D;
				colTotalData = 0.0D;

				for (r = 0; r < rowCount; r++) {
					try {
						if (dataList[r][index] != null) {
							floatData = Double.parseDouble(dataList[r][index]);
						} else {
							floatData = Double.parseDouble("0");
						}
					} catch (NumberFormatException ex) {
						floatData = Double.parseDouble("0");
					}
					colTotalData = colTotalData + floatData;
				}
				dataTotal[index] = Double.toString(colTotalData);
				index++;
			} else if (itemType[c + strInItemNum] == MItem.CHAR) {
				dataTotal[index] = " ";
				index++;
			}
		}
		return dataTotal;
	}
}
