Author: bleny Date: 2014-06-26 11:20:44 +0200 (Thu, 26 Jun 2014) New Revision: 2108 Url: http://forge.codelutin.com/projects/wao/repository/revisions/2108 Log: remove obsdeb csv model Removed: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java Deleted: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java 2014-06-26 09:14:21 UTC (rev 2107) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/csv/ObsDebSamplingPlanImportExportModel.java 2014-06-26 09:20:44 UTC (rev 2108) @@ -1,303 +0,0 @@ -/* - * #%L - * Wao :: Business - * %% - * Copyright (C) 2009 - 2011 Ifremer - * %% - * 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 fr.ifremer.wao.services.service.csv; - - -import fr.ifremer.wao.entity.Boat; -import fr.ifremer.wao.entity.Company; -import fr.ifremer.wao.entity.ObsProgram; -import fr.ifremer.wao.entity.ObservationType; -import fr.ifremer.wao.entity.SampleRow; -import fr.ifremer.wao.entity.SampleRowImpl; -import fr.ifremer.wao.entity.TerrestrialDivision; -import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.services.service.csv.operations.BoatParserFormatter; -import fr.ifremer.wao.services.service.csv.operations.CompanyParserFormatter; -import fr.ifremer.wao.services.service.csv.operations.RegionParserFormatter; -import fr.ifremer.wao.services.service.csv.operations.SampleRowCodeParserFormatter; -import fr.ifremer.wao.services.service.csv.operations.UsersParserFormatter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Common; -import org.nuiton.csv.ExportableColumn; -import org.nuiton.csv.ImportExportModel; -import org.nuiton.csv.ImportableColumn; -import org.nuiton.csv.ModelBuilder; -import org.nuiton.csv.ValueGetterSetter; -import org.nuiton.csv.ValueParserFormatter; - -import java.text.ParseException; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * For now, this model support only import/export of ObsDeb sampling plans. Both - * field work sampling plan and phoning sampling plan are supported. - */ -public class ObsDebSamplingPlanImportExportModel implements ImportExportModel<SampleRow> { - - private static final Log log = LogFactory.getLog(ObsDebSamplingPlanImportExportModel.class); - - protected static final String BOAT_HEADER_NAME = "NAVIRE_COD"; - - protected static final String OBSERVATION_UNIT_HEADER_NAME = "UNITE_OBSERVATION_COD"; - - protected final Locale locale; - - protected List<TerrestrialDivision> observationUnits; - - protected List<WaoUser> allWaoUsers; - - protected List<Company> allCompanies; - - protected List<Boat> allActiveBoats; - - protected List<TerrestrialLocation> allRegions; - - /** Si le modèle représente un import/export pour l'admin ou pas */ - protected boolean admin; - - protected ModelBuilder<SampleRow> modelBuilder; - - /** Type of observation, may be phone or work field depending of what the user is importing */ - protected ObservationType observationType; - - /** Constructor used for import */ - public ObsDebSamplingPlanImportExportModel(Locale locale, - boolean admin, - List<TerrestrialDivision> observationUnits, - List<WaoUser> allWaoUsers, - List<Company> allCompanies, - List<Boat> allActiveBoats, - List<TerrestrialLocation> allRegions) { - this.locale = locale; - this.admin = admin; - this.allWaoUsers = allWaoUsers; - this.observationUnits = observationUnits; - this.allCompanies = allCompanies; - this.allActiveBoats = allActiveBoats; - this.allRegions = allRegions; - } - - /** Constructor used for export */ - public ObsDebSamplingPlanImportExportModel(Locale locale, boolean admin, ObservationType observationType) { - this.locale = locale; - this.admin = admin; - this.observationType = observationType; - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - // by reading the header, we must determine what kind of sampling plan is it - if (headerNames.contains(OBSERVATION_UNIT_HEADER_NAME)) { - observationType = ObservationType.FIELD_WORK_OBSERVATION; - } else if (headerNames.contains(BOAT_HEADER_NAME)) { - observationType = ObservationType.PHONE_CALL; - } - if (log.isDebugEnabled()) { - log.debug("detected type of sampling plan: " + observationType); - } - } - - @Override - public char getSeparator() { - return ';'; - } - - @Override - public SampleRow newEmptyInstance() { - SampleRow newSampleRow = new SampleRowImpl(); - newSampleRow.setObsProgram(ObsProgram.OBSDEB); - newSampleRow.setObservationType(observationType); - return newSampleRow; - } - - protected void buildModel() { - modelBuilder = new ModelBuilder<>(); - modelBuilder.newColumnForImportExport( - "PLAN_CODE", - SampleRow.PROPERTY_CODE, - new SampleRowCodeParserFormatter(locale, ObsProgram.OBSDEB)); - if (admin) { - modelBuilder.newColumnForImportExport( - "SOCIETE", - SampleRow.PROPERTY_COMPANY, - new CompanyParserFormatter(locale, allCompanies)); - } - modelBuilder.newColumnForImportExport( - "OBSERVATEUR_COD", - SampleRow.PROPERTY_GROUP_NAME); - modelBuilder.newColumnForImportExport( - "OBSERVATEURS", - SampleRow.PROPERTY_OBSERVERS, - new UsersParserFormatter(locale, allWaoUsers)); - if (observationType == ObservationType.FIELD_WORK_OBSERVATION) { - modelBuilder.newColumnForImportExport( - "OBSERVATION_DATE", - SampleRow.PROPERTY_EXPECTED_DATE, - Common.DAY); - ObservationUnitParserFormatter observationUnitParser = - new ObservationUnitParserFormatter(observationUnits); - ValueGetterSetter<SampleRow, String> regionCodeGetterSetter = - new RegionCodeSetter(observationUnitParser); - modelBuilder.newColumnForImportExport( - "REGION_IFREMER_COD", - regionCodeGetterSetter); - modelBuilder.newColumnForImportExport( - OBSERVATION_UNIT_HEADER_NAME, - SampleRow.PROPERTY_OBSERVATION_UNIT, - observationUnitParser); - modelBuilder.newColumnForImportExport( - "LIGNE_SANS_CONTACTS", - SampleRow.PROPERTY_BLANK_ROW, - new Common.BooleanParserFormatter(false, false)); - } else if (observationType == ObservationType.PHONE_CALL) { - modelBuilder.newColumnForImportExport( - "REGION_IFREMER", - "terrestrialLocation", - new RegionParserFormatter(locale, allRegions)); - modelBuilder.newColumnForImportExport( - "OBSERVATION_DATE", - SampleRow.PROPERTY_EXPECTED_DATE, - Common.WEEK); - modelBuilder.newColumnForImportExport( - BOAT_HEADER_NAME, - SampleRow.PROPERTY_BOAT, - new BoatParserFormatter(allActiveBoats, locale)); - } - if (log.isDebugEnabled()) { - log.debug("model built : " + modelBuilder.getColumnsForImport()); - } - } - - @Override - public Iterable<ImportableColumn<SampleRow, Object>> getColumnsForImport() { - if (modelBuilder == null) { - buildModel(); - } - return (Iterable) modelBuilder.getColumnsForImport(); - } - - @Override - public Iterable<ExportableColumn<SampleRow, Object>> getColumnsForExport() { - if (modelBuilder == null) { - buildModel(); - } - return (Iterable) modelBuilder.getColumnsForExport(); - } - - protected static class ObservationUnitParserFormatter implements ValueParserFormatter<TerrestrialDivision> { - - /** Index Region code -> UO Code -> Terrestrial division. */ - protected Map<String, Map<String, TerrestrialDivision>> indexedObservationUnits; - - protected List<TerrestrialDivision> observationUnits; - - protected String currentRegionCode; - - ObservationUnitParserFormatter(List<TerrestrialDivision> observationUnits) { - this.observationUnits = observationUnits; - } - - protected void indexObservationUnits(List<TerrestrialDivision> observationUnits) { - indexedObservationUnits = new HashMap<>(); - for (TerrestrialDivision terrestrialDivision : observationUnits) { - String regionCode = terrestrialDivision.getRegionIfremer().getRegionIfremerCode(); - Map<String, TerrestrialDivision> unitCodesToDivision = indexedObservationUnits.get(regionCode); - if (unitCodesToDivision == null) { - unitCodesToDivision = new HashMap<>(); - } - unitCodesToDivision.put(terrestrialDivision.getObservationUnitCode(), terrestrialDivision); - indexedObservationUnits.put(regionCode, unitCodesToDivision); - } - - if (log.isTraceEnabled()) { - for (Map.Entry<String, Map<String, TerrestrialDivision>> entry : indexedObservationUnits.entrySet()) { - log.trace(entry.getKey()); - for (Map.Entry<String, TerrestrialDivision> unitCodesToDivision : entry.getValue().entrySet()) { - log.trace(" -> " + unitCodesToDivision.getKey() + " -> " - + unitCodesToDivision.getValue()); - } - } - } - } - - @Override - public TerrestrialDivision parse(String observationUnitCode) throws ParseException { - if (indexedObservationUnits == null) { - indexObservationUnits(observationUnits); - } - Map<String, TerrestrialDivision> uos = indexedObservationUnits.get(currentRegionCode); - if (uos == null) { - throw new IllegalArgumentException("Le code de région '" + currentRegionCode - + "' n'est pas un code valide"); - } - TerrestrialDivision observationUnit = uos.get(observationUnitCode); - if (observationUnit == null) { - throw new IllegalArgumentException("Il n'y a pas d'unité '" + observationUnitCode - + "' dans la région '" + currentRegionCode + "'"); - } - return observationUnit; - } - - @Override - public String format(TerrestrialDivision terrestrialDivision) { - String observationUnitCode = ""; - if (terrestrialDivision != null) { - observationUnitCode = terrestrialDivision.getObservationUnitCode(); - } - return observationUnitCode; - } - - public void setCurrentRegionCode(String regionCode) { - currentRegionCode = regionCode; - } - } - - protected static class RegionCodeSetter implements ValueGetterSetter<SampleRow, String> { - - protected ObservationUnitParserFormatter observationUnitSetter; - - RegionCodeSetter(ObservationUnitParserFormatter observationUnitSetter) { - this.observationUnitSetter = observationUnitSetter; - } - - @Override - public String get(SampleRow sampleRow) throws Exception { - String regionCode; - if (sampleRow.getObservationUnit() == null) { - regionCode = ""; - } else { - regionCode = sampleRow.getObservationUnit().getRegionIfremer() - .getRegionIfremerCode(); - } - return regionCode; - } - - @Override - public void set(SampleRow sampleRow, String regionCode) throws Exception { - observationUnitSetter.setCurrentRegionCode(regionCode); - } - } -}