Changeset 16254
- Timestamp:
- 17/07/08 17:34:40 (1 month ago)
- Files:
-
- trunk/bio/webapp/src/org/intermine/bio/web/export/GFF3Exporter.java (modified) (7 diffs)
- trunk/bio/webapp/src/org/intermine/bio/web/export/GFF3HttpExporter.java (modified) (2 diffs)
- trunk/bio/webapp/src/org/intermine/bio/web/export/SequenceExporter.java (modified) (12 diffs)
- trunk/bio/webapp/src/org/intermine/bio/web/export/SequenceHttpExporter.java (modified) (3 diffs)
- trunk/intermine/web/main/src/org/intermine/web/logic/export/ExcelExporter.java (modified) (3 diffs)
- trunk/intermine/web/main/src/org/intermine/web/logic/export/Exporter.java (modified) (3 diffs)
- trunk/intermine/web/main/src/org/intermine/web/logic/export/ExporterImpl.java (modified) (4 diffs)
- trunk/intermine/web/main/src/org/intermine/web/logic/export/http/HttpExporterBase.java (modified) (6 diffs)
- trunk/intermine/web/main/src/org/intermine/web/logic/results/PagedTable.java (modified) (1 diff)
- trunk/intermine/web/test/src/org/intermine/web/logic/export/ExcelExporterTest.java (modified) (4 diffs)
- trunk/intermine/web/test/src/org/intermine/web/logic/export/ExportTestUtil.java (modified) (1 diff)
- trunk/intermine/web/test/src/org/intermine/web/logic/export/ExporterImplTest.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bio/webapp/src/org/intermine/bio/web/export/GFF3Exporter.java
r15326 r16254 28 28 import org.intermine.web.logic.export.ExportHelper; 29 29 import org.intermine.web.logic.export.Exporter; 30 import org.intermine.web.logic.results.Column; 30 31 import org.intermine.web.logic.results.ResultElement; 31 32 32 33 /** 33 * Exports LocatedSequenceFeature objects in GFF3 format. 34 * Exports LocatedSequenceFeature objects in GFF3 format. 34 35 * @author Kim Rutherford 35 36 * @author Jakub Kulaviak … … 60 61 * {@inheritDoc} 61 62 */ 62 public void export(List<List<ResultElement>> results) { 63 public void export(List<List<ResultElement>> results, 64 @SuppressWarnings("unused") List<Column> columns) { 63 65 if (featureIndexes.size() == 0) { 64 66 throw new ExportException("No columns with sequence."); … … 75 77 } 76 78 77 private void exportRow(List<ResultElement> row) throws ObjectStoreException, 79 private void exportRow(List<ResultElement> row) 80 throws ObjectStoreException, 78 81 IllegalAccessException { 79 82 ResultElement el = getResultElement(row); … … 83 86 84 87 LocatedSequenceFeature lsf = (LocatedSequenceFeature) el.getInterMineObject(); 85 88 86 89 if (exportedIds.contains(lsf.getId())) { 87 90 return; 88 } 89 91 } 92 90 93 Map<String, List<String>> extraAttributes = new HashMap<String, List<String>>(); 91 94 … … 116 119 headerPrinted = true; 117 120 } 118 121 119 122 out.println(gff3Record.toGFF3()); 120 123 exportedIds.add(lsf.getId()); … … 139 142 return canExportStatic(clazzes); 140 143 } 141 142 /* Method must have different name than canExport because canExport() method 144 145 /* Method must have different name than canExport because canExport() method 143 146 * is inherited from Exporter interface */ 144 147 /** 145 148 * @param clazzes classes of result row 146 * @return true if this exporter can export result composed of specified classes 147 */ 149 * @return true if this exporter can export result composed of specified classes 150 */ 148 151 public static boolean canExportStatic(List<Class> clazzes) { 149 152 return ExportHelper.getClassIndex(clazzes, LocatedSequenceFeature.class) >= 0; … … 155 158 public int getWrittenResultsCount() { 156 159 return writtenResultsCount; 157 } 160 } 158 161 } trunk/bio/webapp/src/org/intermine/bio/web/export/GFF3HttpExporter.java
r15326 r16254 34 34 35 35 /** 36 * An implementation of TableHttpExporter that exports LocatedSequenceFeature 36 * An implementation of TableHttpExporter that exports LocatedSequenceFeature 37 37 * objects in GFF3 format. 38 38 * … … 61 61 62 62 setGFF3Header(response); 63 64 List<Integer> indexes = ExportHelper.getClassIndexes(ExportHelper.getColumnClasses(pt), 63 64 List<Integer> indexes = ExportHelper.getClassIndexes(ExportHelper.getColumnClasses(pt), 65 65 LocatedSequenceFeature.class); 66 66 67 67 Exporter exporter; 68 68 try { 69 69 PrintWriter writer = HttpExportUtil. 70 70 getPrintWriterForClient(request, response.getOutputStream()); 71 exporter = new GFF3Exporter(writer, 71 exporter = new GFF3Exporter(writer, 72 72 indexes, getSoClassNames(servletContext)); 73 73 } catch (Exception e) { 74 74 throw new ExportException("Export failed.", e); 75 } 76 exporter.export(pt.getRearrangedResults() );75 } 76 exporter.export(pt.getRearrangedResults(), pt.getColumns()); 77 77 if (exporter.getWrittenResultsCount() == 0) { 78 78 throw new ExportException("Nothing was found for export."); trunk/bio/webapp/src/org/intermine/bio/web/export/SequenceExporter.java
r16185 r16254 11 11 */ 12 12 13 import java.io.OutputStream;14 13 import java.util.Iterator; 15 14 import java.util.List; 16 15 17 import org.biojava.bio.Annotation;18 import org.biojava.bio.seq.io.FastaFormat;19 import org.biojava.bio.seq.io.SeqIOTools;20 import org.biojava.bio.symbol.IllegalSymbolException;21 import org.flymine.model.genomic.BioEntity;22 import org.flymine.model.genomic.Gene;23 import org.flymine.model.genomic.LocatedSequenceFeature;24 import org.flymine.model.genomic.Protein;25 import org.flymine.model.genomic.Sequence;26 import org.flymine.model.genomic.Translation;27 import org.flymine.model.genomic.Location;28 16 import org.intermine.bio.web.biojava.BioSequence; 29 17 import org.intermine.bio.web.biojava.BioSequenceFactory; … … 37 25 import org.intermine.web.logic.export.ExportHelper; 38 26 import org.intermine.web.logic.export.Exporter; 27 import org.intermine.web.logic.results.Column; 39 28 import org.intermine.web.logic.results.ResultElement; 29 30 import org.flymine.model.genomic.BioEntity; 31 import org.flymine.model.genomic.Gene; 32 import org.flymine.model.genomic.LocatedSequenceFeature; 33 import org.flymine.model.genomic.Location; 34 import org.flymine.model.genomic.Protein; 35 import org.flymine.model.genomic.Sequence; 36 import org.flymine.model.genomic.Translation; 37 38 import java.io.OutputStream; 39 40 import org.biojava.bio.Annotation; 41 import org.biojava.bio.seq.io.FastaFormat; 42 import org.biojava.bio.seq.io.SeqIOTools; 43 import org.biojava.bio.symbol.IllegalSymbolException; 40 44 41 45 … … 58 62 * @param os object store used for fetching sequence for exported object 59 63 * @param outputStream output stream 60 * @param featureIndex index of cell in row that contains object to be exported 64 * @param featureIndex index of cell in row that contains object to be exported 61 65 */ 62 66 public SequenceExporter(ObjectStore os, OutputStream outputStream, … … 66 70 this.featureIndex = featureIndex; 67 71 } 68 72 69 73 /** 70 74 * {@inheritDoc} … … 73 77 return writtenResultsCount; 74 78 } 75 79 76 80 /** 77 81 * {@inheritDoc} 78 * Lines are always separated with \n because third party tool writeFasta 79 * is used for writing sequence. 80 */ 81 public void export(List<List<ResultElement>> results ) {82 * Lines are always separated with \n because third party tool writeFasta 83 * is used for writing sequence. 84 */ 85 public void export(List<List<ResultElement>> results, List<Column> columns) { 82 86 // IDs of the features we have successfully output - used to avoid duplicates 83 87 IntPresentSet exportedIDs = new IntPresentSet(); 84 88 85 89 try { 86 90 for (int rowIndex = 0; rowIndex < results.size(); rowIndex++) { … … 104 108 105 109 if (object instanceof LocatedSequenceFeature) { 106 bioSequence = createLocatedSequenceFeature(header, object );110 bioSequence = createLocatedSequenceFeature(header, object, row, columns); 107 111 } else if (object instanceof Protein) { 108 112 bioSequence = createProtein(header, object); … … 123 127 String headerString = header.toString(); 124 128 125 if ( row.size() > 1 &&headerString.length() > 0) {129 if (headerString.length() > 0) { 126 130 annotation.setProperty(FastaFormat.PROPERTY_DESCRIPTIONLINE, headerString); 127 131 } else { … … 148 152 149 153 private BioSequence createTranslation(StringBuffer header, Object object, 150 Model model) throws IllegalSymbolException {154 Model model) throws IllegalSymbolException { 151 155 BioSequence bioSequence; 152 156 ClassDescriptor cld = model.getClassDescriptorByName(model.getPackageName() … … 189 193 header.append(protein.getName()); 190 194 } 191 Iterator iter = protein.getGenes().iterator();195 Iterator<Gene> iter = protein.getGenes().iterator(); 192 196 while (iter.hasNext()) { 193 Gene gene = (Gene)iter.next();197 Gene gene = iter.next(); 194 198 String geneIdentifier = gene.getPrimaryIdentifier(); 195 199 if (geneIdentifier != null) { … … 204 208 205 209 private BioSequence createLocatedSequenceFeature(StringBuffer header, 206 Object object) throws IllegalSymbolException { 210 Object object, List<ResultElement> row, 211 List<Column> columns) 212 throws IllegalSymbolException { 207 213 BioSequence bioSequence; 208 214 LocatedSequenceFeature feature = (LocatedSequenceFeature) object; 209 215 bioSequence = BioSequenceFactory.make(feature); 210 216 if (feature.getPrimaryIdentifier() == null) { 211 if (feature instanceof Gene) { 212 header.append(((Gene) feature).getPrimaryIdentifier()); 213 } else { 214 header.append("[unknown_identifier]"); 215 } 217 header.append("[unknown_identifier]"); 216 218 } else { 217 219 header.append(feature.getPrimaryIdentifier()); 218 220 } 219 221 header.append(' '); 220 if (feature.getName() == null) { 221 header.append("[unknown_name]"); 222 } else { 223 header.append(feature.getName()); 224 } 222 header.append(getHeadersFromColumns(row, columns)); 225 223 226 224 Location chromosomeLoc = feature.getChromosomeLocation(); 227 225 228 226 if (chromosomeLoc != null) { 229 227 header.append(' ').append(chromosomeLoc.getObject().getPrimaryIdentifier()); … … 247 245 248 246 /** 247 * Look at the Columns and the current row and return a String containing all the elements of 248 * the row except the primaryIdentifier (if any). 249 */ 250 private String getHeadersFromColumns(List<ResultElement> row, List<Column> columns) { 251 StringBuffer sb = new StringBuffer(); 252 253 for (int i = 0; i < row.size(); i++) { 254 Column column = columns.get(i); 255 if (!column.getPath().getEndFieldDescriptor().getName().equals("primaryIdentifier")) { 256 ResultElement resultElement = row.get(i); 257 Object rawField = resultElement.getField(); 258 String field; 259 if (rawField == null) { 260 field = "-"; 261 } else { 262 field = rawField.toString(); 263 } 264 sb.append(field).append(' '); 265 } 266 } 267 268 return sb.toString(); 269 } 270 271 /** 249 272 * {@inheritDoc} 250 273 */ … … 253 276 } 254 277 255 /* Method must have different name than canExport because canExport() method 278 /* Method must have different name than canExport because canExport() method 256 279 * is inherited from Exporter interface */ 257 280 /** 258 281 * @param clazzes classes of result 259 * @return true if this exporter can export result composed of specified classes 260 */ 261 public static boolean canExportStatic(List<Class> clazzes) { 282 * @return true if this exporter can export result composed of specified classes 283 */ 284 public static boolean canExportStatic(List<Class> clazzes) { 262 285 return ( 263 ExportHelper.getClassIndex(clazzes, LocatedSequenceFeature.class) >= 0 286 ExportHelper.getClassIndex(clazzes, LocatedSequenceFeature.class) >= 0 264 287 || ExportHelper.getClassIndex(clazzes, Protein.class) >= 0 265 288 || ExportHelper.getClassIndex(clazzes, Translation.class) >= 0 trunk/bio/webapp/src/org/intermine/bio/web/export/SequenceHttpExporter.java
r14800 r16254 57 57 public void export(PagedTable pt, HttpServletRequest request, 58 58 HttpServletResponse response) { 59 59 60 60 HttpSession session = request.getSession(); 61 61 ObjectStore os = … … 65 65 OutputStream outputStream = null; 66 66 try { 67 outputStream = response.getOutputStream(); 67 outputStream = response.getOutputStream(); 68 68 } catch (IOException e) { 69 69 throw new ExportException("Export failed.", e); 70 70 } 71 71 72 72 // the first column that contains exportable features 73 73 int realFeatureIndex = getFeatureColumnIndex(pt); 74 74 75 SequenceExporter exporter = new SequenceExporter(os, outputStream, 75 SequenceExporter exporter = new SequenceExporter(os, outputStream, 76 76 realFeatureIndex); 77 78 exporter.export(pt.getRearrangedResults() );77 78 exporter.export(pt.getRearrangedResults(), pt.getColumns()); 79 79 if (exporter.getWrittenResultsCount() == 0) { 80 80 throw new ExportException("Nothing was found for export."); … … 82 82 } 83 83 84 84 85 85 private int getFeatureColumnIndex(PagedTable pt) { 86 86 List<Class> clazzes = ExportHelper.getColumnClasses(pt); trunk/intermine/web/main/src/org/intermine/web/logic/export/ExcelExporter.java
r14810 r16254 10 10 * 11 11 */ 12 import java.util.Date; 13 import java.util.List; 14 15 import org.intermine.web.logic.results.Column; 16 import org.intermine.web.logic.results.ResultElement; 17 12 18 import java.io.IOException; 13 19 import java.io.OutputStream; 14 import java.util.Date;15 import java.util.List;16 20 17 21 import org.apache.poi.hssf.usermodel.HSSFRow; 18 22 import org.apache.poi.hssf.usermodel.HSSFSheet; 19 23 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 20 import org.intermine.web.logic.results.ResultElement;21 24 22 25 … … 27 30 public class ExcelExporter implements Exporter 28 31 { 29 32 30 33 private OutputStream out; 31 34 private int writtenResultsCount; … … 38 41 this.out = out; 39 42 } 40 43 41 44 /** 42 * Exports results. 43 * @param results results to be exported 45 * {@inheritDoc} 44 46 */ 45 public void export(List<List<ResultElement>> results) { 47 public void export(List<List<ResultElement>> results, 48 @SuppressWarnings("unused") List<Column> columns) { 46 49 try { 47 50 HSSFWorkbook wb = new HSSFWorkbook(); 48 51 HSSFSheet sheet = wb.createSheet("results"); 49 52 ResultElementConverter converter = new ResultElementConverter(); 50 53 51 54 for (int rowIndex = 0; rowIndex < results.size(); rowIndex++) { 52 55 53 56 HSSFRow excelRow = sheet.createRow((short) rowIndex); 54 57 List<Object> row = converter.convert(results.get(rowIndex)); 55 58 56 59 for (short colIndex = 0; colIndex < row.size(); colIndex++) { 57 60 Object obj = row.get(colIndex); trunk/intermine/web/main/src/org/intermine/web/logic/export/Exporter.java
r15326 r16254 12 12 import java.util.List; 13 13 14 import org.intermine.web.logic.results.Column; 14 15 import org.intermine.web.logic.results.ResultElement; 15 16 16 17 17 18 /** 18 * Simple exporter interface. Objects implementing this interface are 19 * Simple exporter interface. Objects implementing this interface are 19 20 * able to make export. 20 21 * @author Jakub Kulaviak … … 23 24 { 24 25 /** Windows line separator CR+LF **/ 25 public static final String WINDOWS_SEPARATOR = "\r\n"; 26 26 public static final String WINDOWS_SEPARATOR = "\r\n"; 27 27 28 /** Windows line separator only LF **/ 28 29 public static final String UNIX_SEPARATOR = "\n"; … … 31 32 * Do export. 32 33 * @param results to be exported 34 * @param columns the columns descriptions 33 35 */ 34 public void export(List<List<ResultElement>> results );35 36 public void export(List<List<ResultElement>> results, List<Column> columns); 37 36 38 /** 37 * This method finds out if result row composed from instances of these 38 * classes can be exported with actual implementation of exporter. 39 * This method finds out if result row composed from instances of these 40 * classes can be exported with actual implementation of exporter. 39 41 * @param clazzes classes in row 40 42 * @return true if result row can be exported or false 41 43 */ 42 44 public boolean canExport(List<Class> clazzes); 43 45 44 46 /** 45 47 * @return count of written results trunk/intermine/web/main/src/org/intermine/web/logic/export/ExporterImpl.java
r15326 r16254 11 11 */ 12 12 13 import java.io.OutputStream;14 import java.io.PrintWriter;15 13 import java.util.Iterator; 16 14 import java.util.List; 17 15 18 16 import org.intermine.objectstore.flatouterjoins.ReallyFlatIterator; 17 import org.intermine.web.logic.results.Column; 19 18 import org.intermine.web.logic.results.ResultElement; 19 20 import java.io.OutputStream; 21 import java.io.PrintWriter; 20 22 21 23 22 24 /** 23 * Simple exporter exporting data as tab separated, comma separated 25 * Simple exporter exporting data as tab separated, comma separated 24 26 * and so. It depends at used row formatter. 25 27 * @author Jakub Kulaviak … … 29 31 30 32 private PrintWriter out; 31 33 32 34 private RowFormatter rowFormatter; 33 35 34 36 private int writtenResultsCount = 0; 35 37 36 38 /** 37 39 * Constructor. … … 63 65 * @param results results to be exported 64 66 */ 65 public void export(List<List<ResultElement>> results ) {67 public void export(List<List<ResultElement>> results, List<Column> columns) { 66 68 try { 67 69 ResultElementConverter converter = new ResultElementConverter(); … … 84 86 return writtenResultsCount; 85 87 } 86 88 87 89 /** 88 90 * {@inheritDoc} 89 * Universal exporter. 91 * Universal exporter. 90 92 * @return always true 91 93 */ trunk/intermine/web/main/src/org/intermine/web/logic/export/http/HttpExporterBase.java
r15326 r16254 28 28 * Abstract class that implements basic functionality common for exporters 29 29 * exporting table with results in simple format like comma separated format. 30 * The business logic of export is performed with exporter obtained via 30 * The business logic of export is performed with exporter obtained via 31 31 * getExport() method and so each subclass can redefine it overwriting this method. 32 32 * @author Jakub Kulaviak … … 39 39 */ 40 40 public HttpExporterBase() { } 41 41 42 42 /** 43 43 * @param pt PagedTable … … 54 54 * @param response response 55 55 */ 56 public void export(PagedTable pt, HttpServletRequest request, 56 public void export(PagedTable pt, HttpServletRequest request, 57 57 HttpServletResponse response) { 58 58 … … 73 73 } 74 74 Exporter exporter = getExporter(out, separator); 75 exporter.export(results );75 exporter.export(results, pt.getColumns()); 76 76 if (exporter.getWrittenResultsCount() == 0) { 77 77 throw new ExportException("Nothing was found for export."); … … 82 82 * @param out output stream 83 83 * @param separator line separator 84 * @return exporter that will perform the business logic of export. 84 * @return exporter that will perform the business logic of export. 85 85 */ 86 86 protected abstract Exporter getExporter(OutputStream out, String separator); 87 87 88 88 /** 89 89 * Sets header and content type of result in response. … … 91 91 */ 92 92 protected abstract void setResponseHeader(HttpServletResponse response); 93 93 94 94 } trunk/intermine/web/main/src/org/intermine/web/logic/results/PagedTable.java
r16194 r16254 793 793 * @return a List of rows, each of which is a List 794 794 */ 795 public List getRearrangedResults() {795 public List<List<ResultElement>> getRearrangedResults() { 796 796 return new RearrangedList(); 797 797 } trunk/intermine/web/test/src/org/intermine/web/logic/export/ExcelExporterTest.java
r14685 r16254 15 15 import org.apache.poi.hssf.usermodel.HSSFSheet; 16 16 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 17 18 import org.intermine.metadata.Model; 19 import org.intermine.path.Path; 20 import org.intermine.web.logic.results.Column; 17 21 import org.intermine.web.logic.results.ResultElement; 18 22 … … 35 39 public void testExport() throws IOException { 36 40 List<List<ResultElement>> input = new ArrayList<List<ResultElement>>(); 37 input.add(ExportTestUtil.getRow(10, "1", "true", "EmployeeA1"));38 input.add(ExportTestUtil.getRow(20, "2", "true", "EmployeeA2"));41 input.add(ExportTestUtil.getRow(10, "1", true, "EmployeeA1")); 42 input.add(ExportTestUtil.getRow(20, "2", false, "EmployeeA2")); 39 43 Date date = new Date(); 40 44 input.add(getDateRow(date)); 41 45 46 Model model = Model.getInstanceByName("testmodel"); 47 48 List<Column> columns = new ArrayList<Column>(); 49 columns.add(new Column(new Path(model, "Employee.age"), "age", 0, Integer.class)); 50 columns.add(new Column(new Path(model, "Employee.end"), "end", 1, String.class)); 51 columns.add(new Column(new Path(model, "Employee.fullTime"), "fullTime", 2, Boolean.class)); 52 columns.add(new Column(new Path(model, "Employee.name"), "name", 3, String.class)); 53 42 54 ByteArrayOutputStream out = new ByteArrayOutputStream(); 43 55 Exporter exporter = new ExcelExporter(out); 44 exporter.export(input );56 exporter.export(input, columns); 45 57 InputStream is = new ByteArrayInputStream(out.toByteArray()); 46 58 HSSFWorkbook wb = new HSSFWorkbook(is); 47 59 HSSFSheet sheet = wb.getSheet("results"); 48 49 HSSFRow row = sheet.getRow(0); 60 61 HSSFRow row = sheet.getRow(0); 50 62 assertEquals(10.0, row.getCell((short) 0).getNumericCellValue()); 51 63 assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell((short) 0).getCellType()); … … 54 66 assertEquals("EmployeeA1", row.getCell((short) 3).getStringCellValue()); 55 67 56 row = sheet.getRow(1); 68 row = sheet.getRow(1); 57 69 assertEquals(20.0, row.getCell((short) 0).getNumericCellValue()); 58 70 assertEquals("2", row.getCell((short) 1).getStringCellValue()); 59 assertEquals(" true", row.getCell((short) 2).getStringCellValue());71 assertEquals("false", row.getCell((short) 2).getStringCellValue()); 60 72 assertEquals("EmployeeA2", row.getCell((short) 3).getStringCellValue()); 61 73 62 74 // test that date was added with exporter as date - it is numeric format in excel 63 75 row = sheet.getRow(2); … … 69 81 assertEquals(HSSFCell.CELL_TYPE_NUMERIC, row.getCell((short) 0).getCellType()); 70 82 } 71 83 72 84 private List<ResultElement> getDateRow(Date date) { 73 85 List<ResultElement> ret = new ArrayList<ResultElement>(); trunk/intermine/web/test/src/org/intermine/web/logic/export/ExportTestUtil.java
r14685 r16254 22 22 { 23 23 24 static List<ResultElement> getRow(int i, String string, String string2,25 String string 3) {24 static List<ResultElement> getRow(int i, String string, boolean bool1, 25 String string2) { 26 26 List<ResultElement> ret = new ArrayList<ResultElement>(); 27 27 ret.add(new ResultElement(i)); 28 28 ret.add(new ResultElement(string)); 29 ret.add(new ResultElement(bool1)); 29 30 ret.add(new ResultElement(string2)); 30 ret.add(new ResultElement(string3));31 31 return ret; 32 32 } trunk/intermine/web/test/src/org/intermine/web/logic/export/ExporterImplTest.java
r14780 r16254 8 8 import junit.framework.TestCase; 9 9 10 import org.intermine.web.logic.results.Column; 10 11 import org.intermine.web.logic.results.ResultElement; 11 12 … … 31 32 RowFormatter formatter = new RowFormatterImpl(",", true); 32 33 ExporterImpl exporter = new ExporterImpl(out, formatter); 33 exporter.export(input );34 exporter.export(input, new ArrayList<Column>()); 34 35 assertEquals(getExpected(), out.toString()); 35 36 } 36 37 37 38 private String getExpected() { 38 return 39 "10,\"1\",\"true\",\"EmployeeA1\"\n" + 39 return 40 "10,\"1\",\"true\",\"EmployeeA1\"\n" + 40 41 "20,\"2\",\"true\",\"EmployeeA2\"\n" + 41 42 "30,\"3\",\"false\",\"EmployeeA3\"\n" + 42 43 "40,\"4\",\"true\",\"EmployeeB1\"\n" + 43 44 "50,\"5\",\"true\",\"EmployeeB2\"\n" + 44 "60,\"6\",\"true\",\"EmployeeB3\"\n"; 45 "60,\"6\",\"true\",\"EmployeeB3\"\n"; 45 46 } 46 47 47 48 static List<List<ResultElement>> getInput() { 48 49 List<List<ResultElement>> input = new ArrayList<List<ResultElement>>(); 49 input.add(ExportTestUtil.getRow(10, "1", "true", "EmployeeA1"));50 input.add(ExportTestUtil.getRow(20, "2", "true", "EmployeeA2"));51 input.add(ExportTestUtil.getRow(30, "3", "false", "EmployeeA3"));52 input.add(ExportTestUtil.getRow(40, "4", "true", "EmployeeB1"));53 input.add(ExportTestUtil.getRow(50, "5", "true", "EmployeeB2"));54 input.add(ExportTestUtil.getRow(60, "6", "true", "EmployeeB3"));50 input.add(ExportTestUtil.getRow(10, "1", true, "EmployeeA1")); 51 input.add(ExportTestUtil.getRow(20, "2", true, "EmployeeA2")); 52 input.add(ExportTestUtil.getRow(30, "3", false, "EmployeeA3")); 53 input.add(ExportTestUtil.getRow(40, "4", true, "EmployeeB1")); 54 input.add(ExportTestUtil.getRow(50, "5", true, "EmployeeB2")); 55 input.add(ExportTestUtil.getRow(60, "6", true, "EmployeeB3")); 55 56 return input; 56 57 }
