Author: fdesbois Date: 2010-06-28 14:29:55 +0000 (Mon, 28 Jun 2010) New Revision: 570 Log: Ano #2358 : don't check csv mime type, check headers (one key header for each import case) Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoException.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportHelper.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContextImpl.java 2010-06-28 14:29:55 UTC (rev 570) @@ -356,7 +356,7 @@ log.error("SQL executed with error : " + ((SQLGrammarException)eee).getSQL()); } - throw new WaoException(eee, message, args); + throw new WaoException(message, eee, args); } else { throw (WaoException)eee; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoException.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoException.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoException.java 2010-06-28 14:29:55 UTC (rev 570) @@ -41,7 +41,7 @@ * @param args */ - public WaoException(Throwable eee, String message, Object... args) { + public WaoException(String message, Throwable eee, Object... args) { super(message, eee); this.args = args; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryHelper.java 2010-06-28 14:29:55 UTC (rev 570) @@ -71,7 +71,7 @@ property.setAlias(alias); return property; } catch (Exception eee) { - throw new WaoException(eee, "Error instantiate " + propertyClass.getName()); + throw new WaoException("Error instantiate " + propertyClass.getName(), eee); } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportHelper.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportHelper.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/ImportHelper.java 2010-06-28 14:29:55 UTC (rev 570) @@ -36,9 +36,11 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; +import java.util.List; import java.util.Locale; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DurationFormatUtils; @@ -182,7 +184,7 @@ * @throws IOException * @throws ParseException * @throws IllegalArgumentException - * @see ImportHelper#readDate(CsvReader, IOHeader) + * @see #readDate(CsvReader, DatedHeader) */ public static PeriodDates readPeriod(CsvReader reader, DatedHeader headerBegin, DatedHeader headerEnd) throws IOException, ParseException { @@ -288,4 +290,31 @@ return System.currentTimeMillis(); } + /** + * This method is used to check if {@code reader} contains at least the + * {@code keyHeader} in headers. Otherwise an exception will be thrown. + * + * @param reader CsvReader to check (headers need to be read before) + * @param keyHeader Header to check + * @throws WaoBusinessException if keyHeader is not found + */ + public static void checkKeyHeader(CsvReader reader, IOHeader keyHeader) + throws WaoBusinessException { + + try { + List<String> headers = Arrays.asList(reader.getHeaders()); + + if (!headers.contains(keyHeader.name())) { + throw new WaoBusinessException( + WaoBusinessException.Type.IMPORT_ERROR, null, + "Fichier non reconnu, aucune colonne ne correspond à '" + + keyHeader.name() + "'."); + } + + } catch (IOException eee) { + throw new WaoException("Une erreur est survenue à la lecture de" + + " l'en-tête du fichier CSV. Veuillez vérifier votre fichier.", eee); + } + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-28 14:29:55 UTC (rev 570) @@ -363,6 +363,9 @@ CsvReader reader = new CsvReader(input, context.getCsvCharset()); reader.readHeaders(); + + ImportHelper.checkKeyHeader(reader, BOAT.NAVS_COD); + long tic; BoatDAO boatDAO = WaoDAOHelper.getBoatDAO(transaction); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-28 14:29:55 UTC (rev 570) @@ -226,9 +226,9 @@ log.warn("observer null when saving contact", exception); } // This message will be displayed to Client - throw new WaoException(exception, + throw new WaoException( "L'observateur n'a pas été renseigné correctement pour " + - "la sauvegarde du contact"); + "la sauvegarde du contact", exception); } } @@ -244,9 +244,9 @@ log.warn("sampleRow null when saving contact", exception); } // This message will be displayed to Client - throw new WaoException(exception, + throw new WaoException( "La ligne du plan d'échantillonnage n'a pas été renseigné" + - " correctement pour la sauvegarde du contact"); + " correctement pour la sauvegarde du contact", exception); } } @@ -504,6 +504,8 @@ try { reader.readHeaders(); + ImportHelper.checkKeyHeader(reader, CONTACT.CONT_CREATION); + ContactDAO dao = WaoDAOHelper.getContactDAO(transaction); long tic; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-06-28 14:29:55 UTC (rev 570) @@ -26,6 +26,7 @@ package fr.ifremer.wao.service; import com.csvreader.CsvReader; +import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoContext; import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; @@ -37,6 +38,7 @@ import fr.ifremer.wao.entity.Profession; import fr.ifremer.wao.entity.ProfessionDAO; import fr.ifremer.wao.io.ImportHelper; +import fr.ifremer.wao.io.WaoCsvHeader; import fr.ifremer.wao.io.WaoCsvHeader.FISHING_ZONE; import java.io.IOException; import java.io.InputStream; @@ -168,12 +170,14 @@ @Override public int executeImportFishingZoneCsv(TopiaContext transaction, - InputStream input) throws TopiaException, IOException { + InputStream input) throws TopiaException, IOException, WaoBusinessException { int result = 0; CsvReader reader = new CsvReader(input, context.getCsvCharset()); reader.readHeaders(); + ImportHelper.checkKeyHeader(reader, FISHING_ZONE.PECHE_DIVISION); + FishingZoneDAO dao = WaoDAOHelper.getFishingZoneDAO(transaction); while(reader.readRecord()) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-28 14:29:55 UTC (rev 570) @@ -800,6 +800,8 @@ CsvReader reader = new CsvReader(input, context.getCsvCharset()); reader.readHeaders(); + ImportHelper.checkKeyHeader(reader, SAMPLING.PLAN_CODE); + SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction); //int nbImported = 0; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java 2010-06-28 09:45:23 UTC (rev 569) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java 2010-06-28 14:29:55 UTC (rev 570) @@ -126,9 +126,10 @@ } input = new GZIPInputStream(input); - } else if (!contentType.equals(MIMETYPE_CSV)) { - throw new IOException("unsupported format : " + contentType); } +// else if (!contentType.equals(MIMETYPE_CSV)) { +// throw new IOException("unsupported format : " + contentType); +// } return input; } }