1 /*******************************************************************************
2 * Copyright (c) 2015 hangum.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser Public License v2.1
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 * hangum - initial API and implementation
10 ******************************************************************************/
11 package com
.hangum
.tadpole
.engine
.sql
.util
.export
;
14 import java
.util
.ArrayList
;
15 import java
.util
.List
;
18 import org
.apache
.commons
.io
.FileUtils
;
19 import org
.apache
.log4j
.Logger
;
21 import com
.hangum
.tadpole
.commons
.util
.CSVUtils
;
22 import com
.hangum
.tadpole
.engine
.sql
.util
.SQLUtil
;
23 import com
.hangum
.tadpole
.engine
.sql
.util
.resultset
.QueryExecuteResultDTO
;
31 public class CSVExpoter
extends AbstractTDBExporter
{
32 private static final Logger logger
= Logger
.getLogger(CSVExpoter
.class);
34 public static String
makeContent(boolean isAddHead
, QueryExecuteResultDTO queryExecuteResultDTO
, char seprator
, String strDefaultNullValue
) throws Exception
{
35 return makeContent(isAddHead
, queryExecuteResultDTO
, seprator
, -1, strDefaultNullValue
);
49 public static void makeListFile(String strFullPath
, boolean isAddHead
, List
<String
[]> listCsvData
, char seprator
, String encoding
) throws Exception
{
51 FileUtils
.writeByteArrayToFile(new File(strFullPath
), CSVUtils
.makeData(listCsvData
, seprator
), true);
65 public static byte[] makeListFileStream( List
<String
[]> listCsvData
, char seprator
, String encoding
) throws Exception
{
66 return CSVUtils
.makeData(listCsvData
, seprator
);
79 public static void makeHeaderFile(String strFullPath
, boolean isAddHead
, QueryExecuteResultDTO rsDAO
, char seprator
, String encoding
) throws Exception
{
80 FileUtils
.writeByteArrayToFile(new File(strFullPath
), makeHeader(isAddHead
, rsDAO
, seprator
), true);
92 public static byte[] makeHeader(boolean isAddHead
, QueryExecuteResultDTO rsDAO
, char seprator
) throws Exception
{
93 List
<String
[]> listCsvData
= new ArrayList
<String
[]>();
97 Map
<Integer
, String
> mapLabelName
= rsDAO
.getColumnLabelName();
98 List
<String
> listLabel
= new ArrayList
<String
>();
100 for(int i
=0; i
<mapLabelName
.size(); i
++) {
101 String strLabelName
= mapLabelName
.get(i
);
102 if(!SQLUtil
.isTDBSpecialColumn(strLabelName
)) {
103 listLabel
.add(strLabelName
);
106 listCsvData
.add(listLabel
.toArray(new String
[listLabel
.size()]));
109 return CSVUtils
.makeData(listCsvData
, seprator
);
120 public static String
makeContent(boolean isAddHead
, QueryExecuteResultDTO rsDAO
, char seprator
, int intLimitCnt
, String strDefaultNullValue
) throws Exception
{
123 StringBuffer sbReturn
= new StringBuffer();
124 sbReturn
.append(makeHeader(isAddHead
, rsDAO
, seprator
));
127 List
<Map
<Integer
, Object
>> dataList
= rsDAO
.getDataList().getData();
128 List
<String
[]> listCsvData
= new ArrayList
<String
[]>();
129 List
<String
> listLabel
= new ArrayList
<String
>();
132 Map
<Integer
, String
> mapLabelName
= rsDAO
.getColumnLabelName();
134 for(int i
=0; i
<dataList
.size(); i
++) {
135 Map
<Integer
, Object
> mapColumns
= dataList
.get(i
);
138 for(int j
=0; j
<mapColumns
.size(); j
++) {
139 // tdb 내부적으로 사용하는 컬럼을 보이지 않도록 합니다.
140 if(!SQLUtil
.isTDBSpecialColumn(mapLabelName
.get(j
))) {
141 listLabel
.add(mapColumns
.get(j
) == null?strDefaultNullValue
:""+mapColumns
.get(j
));
144 listCsvData
.add(listLabel
.toArray(new String
[listLabel
.size()]));
146 sbReturn
.append(CSVUtils
.makeData(listCsvData
, seprator
));
148 if (intLimitCnt
== i
) break;
151 return sbReturn
.toString();
155 * csv 파일을 생성하여 파일 위치를 넘겨줍니다.
162 * @return strDefaultNullValue
166 public static void makeContentFile(String strFullPath
, boolean isAddHead
, QueryExecuteResultDTO rsDAO
, char seprator
, String encoding
, String strDefaultNullValue
) throws Exception
{
168 List
<Map
<Integer
, Object
>> dataList
= rsDAO
.getDataList().getData();
169 List
<String
[]> listCsvData
= new ArrayList
<String
[]>();
170 List
<String
> listValues
= new ArrayList
<String
>();
173 Map
<Integer
, String
> mapLabelName
= rsDAO
.getColumnLabelName();
175 for(int i
=0; i
<dataList
.size(); i
++) {
176 Map
<Integer
, Object
> mapColumns
= dataList
.get(i
);
179 for(int j
=0; j
<mapColumns
.size(); j
++) {
181 // tdb 내부적으로 사용하는 컬럼을 보이지 않도록 합니다.
182 if(!SQLUtil
.isTDBSpecialColumn(mapLabelName
.get(j
))) {
183 listValues
.add(mapColumns
.get(j
) == null?strDefaultNullValue
:""+mapColumns
.get(j
));
186 listCsvData
.add(listValues
.toArray(new String
[listValues
.size()]));
189 FileUtils
.writeByteArrayToFile(new File(strFullPath
), CSVUtils
.makeData(listCsvData
, seprator
), true);