package com.ordobill.webapp.action;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ordobill.webapp.beans.Report;
import com.ordobill.webapp.beans.Sampleform;
import com.ordobill.webapp.common.SqlMapClientManager;
import com.ordobill.webapp.report.FastScatterPlotDemo;
import com.ordobill.webapp.report.NormalDistribution;
import com.ordobill.webapp.report.PieChart;
public class ReportAction extends DispatchAction{
private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
private SqlMapClient sqlMap = SqlMapClientManager.getSqlMapClient();
/**
* report 초기 parameter 를 조합
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public ActionForward list(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
Report _Report = (Report)form;
Report report = (Report) sqlMap.queryForObject("Report.Select", _Report) ;
ArrayList result = this.computeReport(report);
request.setAttribute("data", result);
return mapping.findForward("list");
}
public ArrayList computeReport(Report reportBean) {
ArrayList result = new ArrayList();
StringTokenizer iterationT = new StringTokenizer(reportBean.getTempiterationArr() , "||");
float[] iterationArr = new float[iterationT.countTokens()];
StringTokenizer stepT = new StringTokenizer(reportBean.getTempstepFigName() , "||");
String[] stepFigName = new String[stepT.countTokens()];
int i = 0;
while(iterationT.hasMoreTokens()){
iterationArr[i] = Float.valueOf(iterationT.nextToken()).floatValue();
i++;
}
reportBean.setIterationArr(iterationArr);
i = 0;
while(stepT.hasMoreTokens()){
stepFigName[i] = stepT.nextToken();
i++;
}
reportBean.setStepFigName(stepFigName);
double[][] normaldata = NormalDistribution.createChart(reportBean);
float[][] Scatterdata = FastScatterPlotDemo.populateData(reportBean);
String[] piedata = PieChart.rangeData(reportBean.getStepFigName());
result.add(Scatterdata);
result.add(piedata);
result.add(normaldata);
return result;
}
}