package com.fitbank.web;

import java.io.FileInputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;

import com.fitbank.common.properties.PropertiesHandler;
import com.fitbank.dto.GeneralResponse;
import com.fitbank.dto.management.Detail;

public class BaseImage {
	private HttpServletRequest request;

	private int num;

	private int sec;

	private Detail detail;

	public BaseImage(HttpServletRequest pRequest) throws Exception {
		this.request = pRequest;
		num = Integer.parseInt(request.getParameter("num"));
		sec = 0;
		if (request.getParameter("sec") != null)
			sec = Integer.parseInt(request.getParameter("sec"));
		DataManage dm = (DataManage) request.getSession().getAttribute(DataManage.KEY);
		detail = new Detail();
		detail.setType(MessageTypes.IMG.name());
		detail.setSubsystem("01");
		detail.setTransaction("0001");
		detail.setVersion("01");
		dm.prepareHeaderData(detail, this.request);
		detail.findFieldByNameCreate("NUM").setValue(this.num);
		detail.findFieldByNameCreate("SEC").setValue(this.sec);
		BussinessDelegate bd = new BussinessDelegate();
		this.detail = bd.process(detail);
		if (this.detail.getResponse().getCode().compareTo(GeneralResponse.OK) != 0) {
			throw new Exception(this.detail.getResponse().getUserMessage());
		}
	}

	public void getImage(OutputStream pOut) throws Exception {
		PropertiesHandler ph=new PropertiesHandler("images");
		FileInputStream fin = new FileInputStream(ph.getStringValue("webapp.images.path") + "/IMG" + num + "_" + sec);
		try {
			byte b[] = new byte[999];
			int car = 0;
			do {
				car = fin.read(b);
				if (car > 0) {
					pOut.write(b);
				}
			} while (car > 0);
			pOut.close();
		} finally {
			fin.close();
		}
	}

}
