r45 - in trunk/cantharella.web/src/main/java/nc/ird/cantharella/web: pages/columns pages/domain/search utils/columns utils/links
Author: echatellier Date: 2013-01-07 11:50:58 +0100 (Mon, 07 Jan 2013) New Revision: 45 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/45 Log: refs #1643: Fix csv export format Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/columns/TaxonomyPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/BooleanPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/CsvWriter.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/DecimalPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/EnumPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportablePropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportableTextFilteredPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/LinkPropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/MapValuePropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ShortDatePropertyColumn.java trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/links/CsvExportLink.java Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/columns/TaxonomyPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/columns/TaxonomyPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/columns/TaxonomyPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -70,7 +70,7 @@ @Override public String getHeaderName() { - return getPropertyExpression(); + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/pages/domain/search/SearchPage.java 2013-01-07 10:50:58 UTC (rev 45) @@ -4,7 +4,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2009 - 2012 IRD (Institut de Recherche pour le Developpement) and by respective authors (see below) + * Copyright (C) 2009 - 2013 IRD (Institut de Recherche pour le Developpement) and by respective authors (see below) * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -190,7 +190,7 @@ final DataTable<Specimen> specimensDataTable = new DefaultDataTable<Specimen>(getResource() + ".Specimens.Results", specimensColumns, specimensDataProvider, Integer.MAX_VALUE); add(specimensDataTable); - add(new CsvExportLink("SearchPage.Specimens.ExportCSV", specimensDataTable)); + add(new CsvExportLink("SearchPage.Specimens.ExportCSV", specimensDataTable, "specimens.csv")); } protected void addLotsTable(final CallerPage currentPage, SearchResult searchResult) { @@ -271,7 +271,7 @@ final DataTable<Lot> lotsDataTable = new DefaultDataTable<Lot>(getResource() + ".Lots.Results", lotsColumns, lotsDataProvider, Integer.MAX_VALUE); add(lotsDataTable); - add(new CsvExportLink("SearchPage.Lots.ExportCSV", lotsDataTable)); + add(new CsvExportLink("SearchPage.Lots.ExportCSV", lotsDataTable, "lots.csv")); } protected void addExtractionsTable(final CallerPage currentPage, SearchResult searchResult) { @@ -365,7 +365,7 @@ final DataTable<Extraction> extractionsDataTable = new DefaultDataTable<Extraction>( getResource() + ".Extractions.Results", extractionsColumns, extractionsDataProvider, Integer.MAX_VALUE); add(extractionsDataTable); - add(new CsvExportLink("SearchPage.Extractions.ExportCSV", extractionsDataTable)); + add(new CsvExportLink("SearchPage.Extractions.ExportCSV", extractionsDataTable, "extractions.csv")); } protected void addPurificationsTable(final CallerPage currentPage, SearchResult searchResult) { @@ -430,7 +430,7 @@ final DataTable<Purification> purificationsDataTable = new DefaultDataTable<Purification>( getResource() + ".Purifications.Results", columns, purificationsDataProvider, Integer.MAX_VALUE); add(purificationsDataTable); - add(new CsvExportLink("SearchPage.Purifications.ExportCSV", purificationsDataTable)); + add(new CsvExportLink("SearchPage.Purifications.ExportCSV", purificationsDataTable, "purifications.csv")); } protected void addTestBiosTable(final CallerPage currentPage, SearchResult searchResult) { @@ -513,7 +513,7 @@ getResource() + ".ResultatTestBios.Results", columns, resTestBiosDataProvider, Integer.MAX_VALUE); add(resTestBiosDataTable); - add(new CsvExportLink("SearchPage.ResultatTestBios.ExportCSV", resTestBiosDataTable)); + add(new CsvExportLink("SearchPage.ResultatTestBios.ExportCSV", resTestBiosDataTable, "testbios.csv")); } @@ -559,6 +559,6 @@ getResource() + ".Stations.Results", columns, stationsDataProvider, WebContext.ROWS_PER_PAGE); add(stationsDataTable); - add(new CsvExportLink("SearchPage.Stations.ExportCSV", stationsDataTable)); + add(new CsvExportLink("SearchPage.Stations.ExportCSV", stationsDataTable, "stations.csv")); } } Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/BooleanPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/BooleanPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/BooleanPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -68,7 +68,7 @@ @Override public String getHeaderName() { - return propertyExpression; + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/CsvWriter.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/CsvWriter.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/CsvWriter.java 2013-01-07 10:50:58 UTC (rev 45) @@ -33,14 +33,16 @@ public class CsvWriter { private final PrintWriter out; private boolean first = true; + private char separator; - public CsvWriter(OutputStream os) { + public CsvWriter(OutputStream os, char separator) { out = new PrintWriter(os); + this.separator = separator; } public CsvWriter write(Object value) { if (!first) { - out.append(";"); + out.append(separator); } out.append("\""); if (value != null) { Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/DecimalPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/DecimalPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/DecimalPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -75,7 +75,7 @@ @Override public String getHeaderName() { - return propertyExpression; + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/EnumPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/EnumPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/EnumPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -68,7 +68,7 @@ @Override public String getHeaderName() { - return propertyExpression; + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportablePropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportablePropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportablePropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -42,7 +42,7 @@ @Override public String getHeaderName() { - return getPropertyExpression(); + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportableTextFilteredPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportableTextFilteredPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ExportableTextFilteredPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -43,7 +43,7 @@ @Override public String getHeaderName() { - return getPropertyExpression(); + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/LinkPropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/LinkPropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/LinkPropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -174,7 +174,7 @@ @Override public String getHeaderName() { - return getPropertyExpression(); + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/MapValuePropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/MapValuePropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/MapValuePropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -70,7 +70,7 @@ @Override public String getHeaderName() { - return propertyExpression; + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ShortDatePropertyColumn.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ShortDatePropertyColumn.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/columns/ShortDatePropertyColumn.java 2013-01-07 10:50:58 UTC (rev 45) @@ -69,7 +69,7 @@ @Override public String getHeaderName() { - return propertyExpression; + return getDisplayModel().getObject().toString(); } @Override Modified: trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/links/CsvExportLink.java =================================================================== --- trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/links/CsvExportLink.java 2013-01-03 17:10:01 UTC (rev 44) +++ trunk/cantharella.web/src/main/java/nc/ird/cantharella/web/utils/links/CsvExportLink.java 2013-01-07 10:50:58 UTC (rev 45) @@ -1,9 +1,35 @@ +/* + * #%L + * Cantharella :: Web + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2013 IRD (Institut de Recherche pour le Developpement) and by respective authors (see below) + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ package nc.ird.cantharella.web.utils.links; import java.io.OutputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Locale; import nc.ird.cantharella.web.utils.columns.CsvWriter; import nc.ird.cantharella.web.utils.columns.ExportableColumn; @@ -14,21 +40,43 @@ import org.apache.wicket.request.http.WebResponse; public class CsvExportLink<T> extends Link<Void> { + + /** Date format for download filename. */ + private static final DateFormat FILENAME_DF = new SimpleDateFormat("yyyy_MM_dd-HH_mm-"); + private final DataTable<T> table; - public CsvExportLink(String id, DataTable<T> table) { + private final String filename; + + public CsvExportLink(String id, DataTable<T> table, String filename) { super(id); this.table = table; + this.filename = filename; } @Override public void onClick() { WebResponse response = (WebResponse) getResponse(); - response.setAttachmentHeader("export.csv"); response.setContentType("text/csv"); + + // configuration du nom de fichier + String headerFilename = FILENAME_DF.format(new Date()); + headerFilename += this.filename; + response.setAttachmentHeader(headerFilename); + OutputStream out = getResponse().getOutputStream(); - CsvWriter writer = new CsvWriter(out); + + // cofiguration du separateur suivant la locale + // fr : ; + // en : , + CsvWriter writer; + if (Locale.FRENCH.equals(getSession().getLocale())) { + writer = new CsvWriter(out, ';'); + } else { + writer = new CsvWriter(out, ','); + } List<ExportableColumn<T>> exportable = getExportableColumns(); + // write header for (ExportableColumn<T> column : exportable) { writer.write(column.getHeaderName());
participants (1)
-
echatellier@users.forge.codelutin.com