/*
* #%L
* data-exporter
* %%
* Copyright (C) 2012 - 2013 http://www.brsanthu.com
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package com.brsanthu.dataexporter;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.Before;
import com.brsanthu.dataexporter.model.BooleanColumn;
import com.brsanthu.dataexporter.model.CellDetails;
import com.brsanthu.dataexporter.model.CellValueGenerator;
import com.brsanthu.dataexporter.model.CurrencyColumn;
import com.brsanthu.dataexporter.model.DateColumn;
import com.brsanthu.dataexporter.model.LineNumberColumn;
import com.brsanthu.dataexporter.model.NumberColumn;
import com.brsanthu.dataexporter.model.StringColumn;
import static org.junit.Assert.*;
import static org.apache.commons.lang3.StringUtils.*;
public class DataExporterTestBase {
protected DataExporter exporter = null;
protected StringWriter sw = new StringWriter();
protected long dateReference = 1303413278558l; //Thu Apr 21 12:14:38 PDT 2011
@Before
public void setup() {
if (exporter == null) {
return;
}
exporter.addColumns(
new LineNumberColumn("lineNo", "Line No", 5),
new DateColumn("datePurchased", "Date Purchased", 23, "yyyy/MM/dd hh:mm:ss a"),
new NumberColumn("itemNo", "Item No", 10, 0),
new StringColumn("itemName", "Item Name", 15),
new BooleanColumn("shipped", "Shipped?", 10),
new NumberColumn("quantity", "Quantity", 10, 0),
new CurrencyColumn("unitPrice", "Unit Price", 10, "$"),
new CurrencyColumn("price", "Price", 10, "$").setGeneratesOwnData(true).setCellValueGenerator(new CellValueGenerator() {
@Override
public Object generateCellValue(CellDetails cellDetails) {
return new Double(((Integer) cellDetails.getRow().getCellValue(5)) * ((Double) cellDetails.getRow().getCellValue(6)));
}
})
);
}
protected void addData() {
exporter.addRow(new Date(dateReference - 2397984), new Integer(1), "Laptop", new Boolean(false), new Integer(1), new Double(799.78));
exporter.addRow(new Date(dateReference - 232042098), new Integer(2), "Mouse", new Boolean(true), new Integer(2), new Double(49.30));
exporter.addRow(new Date(dateReference - 234084277), new Integer(3), "Keyboard", new Boolean(false), new Integer(5), new Double(75));
}
protected void addDataBeans() {
List<SampleBean> beans = new ArrayList<SampleBean>();
beans.add(new SampleBean(new Date(dateReference - 2397984), new Integer(1), "Laptop",
new Boolean(false), new Integer(1), new Double(799.78)));
beans.add(new SampleBean(new Date(dateReference - 232042098), new Integer(2), "Mouse",
new Boolean(true), new Integer(2), new Double(49.30)));
beans.add(new SampleBean(new Date(dateReference - 234084277), new Integer(3), "Keyboard",
new Boolean(false), new Integer(5), new Double(75)));
exporter.addBeanRows(beans);
}
protected void compareText(String file, String text) throws IOException {
compareText(null, file, text);
}
protected void compareText(String message, String file, String text) throws IOException {
InputStream inputStream = this.getClass().getResourceAsStream(file);
assertNotNull("Couldn't read the reference template", inputStream);
String expected = IOUtils.toString(inputStream);
System.out.println("---------------------------------------------------------------------------");
if (isNotEmpty(message)) {
System.out.println("\nExpected (" + message + "/" + file + ")\n"+ expected);
} else {
System.out.println("\nExpected (" + file + ")\n"+ expected);
}
System.out.println("\nProduced:\n"+ text);
expected = StringUtils.replace(expected, "\r\n", "\n");
text = StringUtils.replace(text, "\r\n", "\n");
assertEquals(expected.trim(), text.trim());
}
}