%@ page
contentType="text/html;charset=utf-8"
%><%@page import="java.util.*, java.io.*, java.lang.String, java.text.*" %><%
request.setCharacterEncoding("utf-8");
//------------------------------------
// 0. ÆÄ¶ó¸ÞÅÍ ¹ÞÀ½
//------------------------------------
String pOOF = (request.getParameter("oof") == null ? "" : request.getParameter("oof"));
String pFileName = (request.getParameter("filename") == null ? "" : request.getParameter("filename"));
String pFileType = (request.getParameter("filetype") == null ? "" : request.getParameter("filetype"));
//pOOF = "http://localhost:8080/RexServer30/rebfiles/samples/sqlserver_customers_orders.xml{%dataset.xml.root%}1name";
//------------------------------------
// 1. »ó¼ö Á¤ÀÇ
//------------------------------------
String sBasePath = "D:\\rexpert30\\RexServer30\\export\\";
String sExporter = "D:\\rexpert30\\RexServer30\\bin\\export.dos.exe";
String sessionid = session.getId();
Date date = new Date();
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String sDateTime = sdf.format( date);
String sOOFFileName = sDateTime + "_" + pFileName + "_" + sessionid + ".xml";
String sExportFileNameSource = sDateTime + "_" + pFileName + "_" + sessionid + "." + pFileType;
String sExportFileNameTarget = pFileName + "." + pFileType;
//System.out.println(sExportFileNameSource);
//System.out.println(sExportFileNameTarget);
//deleteFile(sBasePath + "" + sOOFFileName);
deleteFile(sBasePath + "" + sExportFileNameSource);
//------------------------------------
// 2. OOF, xml data, img µ¥ÀÌÅÍ ÆÄÀÏ·Î ÀúÀå
//------------------------------------
saveFile(sBasePath + sOOFFileName, pOOF);
//System.out.println(sBasePath + sXmlDataFile);
//saveFile(sBasePath + sXmlDataFile, pData);
//------------------------------------
// 3. pdfÆÄÀÏ export ÀúÀå
//------------------------------------
Runtime rt = Runtime.getRuntime();
//System.out.println(pOOF);
//System.out.println(sBasePath + sExportFileNameSource);
try {
Process proc;
//proc = rt.exec(new String[]{sExporter, "load", pOOF, pFileType, sBasePath + sExportFileNameSource});
proc = rt.exec(new String[]{sExporter, "path", sBasePath + sOOFFileName, pFileType, sBasePath + sExportFileNameSource});
proc.waitFor();
} catch(Exception e) {
throw new Exception(e.getMessage());
}
//------------------------------------
// 4. export ÆÄÀÏ ÀÐ¾î¼ Àü¼Û
//------------------------------------
File file = new File(sBasePath + "" + sExportFileNameSource); // Àý´ë°æ·Î
byte b[] = new byte[4062];
response.reset();
String strClient=request.getHeader("User-Agent");
if(strClient.indexOf("MSIE 5.5")>-1)
{
response.setContentType("Content-type: application/x-msdownload; charset=euc-kr");
response.setHeader("Content-Disposition", "attachment;filename="+new String(sExportFileNameTarget.getBytes("utf-8"),"8859_1"));
} else {
response.setContentType("Content-type: application/x-msdownload; charset=euc-kr");
response.setHeader("Content-Disposition", "attachment;filename="+new String(sExportFileNameTarget.getBytes("utf-8"),"8859_1"));
}
response.setHeader("Content-Transfer-Encoding", "binary;");
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "0;");
response.setContentLength((int)file.length()); //ÆÄÀÏÅ©±â¸¦ ºê¶ó¿ìÀú¿¡ ¾Ë·ÁÁØ´Ù.
// IE 5.5´Â Çü½ÄÀÌ ´Ù¸£¹Ç·Î Çì´õ¸¦ °¢°¢ ´Ù¸£°Ô ó¸®ÇØ ÁØ´Ù.
if (file.isFile())
{
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
int read = 0;
while ((read = fin.read(b)) != -1){
outs.write(b,0,read);
outs.flush();
}
outs.close();
fin.close();
}
file = null;
//------------------------------------
// 5. pdf, xml, img ÆÄÀÏ »èÁ¦
//------------------------------------
deleteFile(sBasePath + "" + sOOFFileName);
deleteFile(sBasePath + "" + sExportFileNameSource);
%><%!
//******************************************************************//
// °øÅë ÇÔ¼ö
//******************************************************************//
public void deleteFile(String sFile) {
File file = null;
try {
file = new File(sFile);
if(file.exists()) {
if (!file.delete()) {
System.gc();
Thread.sleep(200);
file.delete();
}
}
} catch(Exception e) {
//
System.out.println(e);
}
}
// ¹®ÀÚ¿ replace
public String replaceStr(String content, String old_str, String new_str) {
StringBuffer rtn = new StringBuffer();
int from_idx = 0;
int to_idx = 0;
while ((to_idx = content.indexOf(old_str, from_idx)) >= 0) {
rtn.append(content.substring(from_idx, to_idx));
rtn.append(new_str);
from_idx = to_idx + old_str.length();
}
if (from_idx == 0) {
rtn.append(content);
} else if (from_idx < content.length()) {
rtn.append(content.substring(from_idx));
}
return rtn.toString();
} // replaceStr
// ¹®ÀÚ¿ split
public String[] fnSplit(String sDelimiter, String sValue) {
int index = sValue.indexOf(sDelimiter);
List list = new ArrayList();
int currPos = 0;
int len = sDelimiter.length();
while (index != -1)
{
list.add(sValue.substring(currPos, index));
currPos = index + len;
index = sValue.indexOf(sDelimiter, currPos);
} // end while
list.add(sValue.substring(currPos));
String[] vAddString = (String[]) list.toArray(new String[list.size()]);
return vAddString;
} // fnSplit
// ÆÄÀÏ ÀúÀå
boolean saveFile(String fileName, String inputString) {
File f = new File(fileName);
ByteArrayInputStream is = null;
FileOutputStream fos= null;
BufferedOutputStream bos = null;
try{
f.createNewFile();
is = new ByteArrayInputStream(inputString.getBytes("UTF-8"));
fos = new FileOutputStream(f);
bos = new BufferedOutputStream(fos);
// ÆÄÀÏ¿¡ ÀúÀå
int su=0;
byte b[] = new byte[512];
while((su=is.read(b)) != -1){
fos.write(b,0,su);
}
}catch(IOException ie){
ie.printStackTrace();
return false; // ¿¹¿Ü°¡ ¹ß»ýÇÏ¸é ½ÇÆÐ
}finally{
try {
bos.close();
fos.close();
} catch (IOException e) {}
}
return true;
}
%>