r973 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/entities/references echobase-services echobase-services/src/main/java/fr/ifremer/echobase/services/service echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportMap echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportMap echobase-ui/src/main/resources/i18n echobase-ui/src/main/webapp/WEB-INF/jsp/exportMap
Author: tchemit Date: 2014-03-08 00:16:42 +0100 (Sat, 08 Mar 2014) New Revision: 973 Url: http://forge.codelutin.com/projects/echobase/repository/revisions/973 Log: refs-30 #2931 Do species export Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/SpeciesImpl.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/SpeciesExportModel.java Modified: trunk/echobase-services/pom.xml trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapService.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportMap/Configure.java trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportMap/Configure-validation.xml trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportMap/configure.jsp Added: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/SpeciesImpl.java =================================================================== --- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/SpeciesImpl.java (rev 0) +++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/SpeciesImpl.java 2014-03-07 23:16:42 UTC (rev 973) @@ -0,0 +1,11 @@ +package fr.ifremer.echobase.entities.references; + +public class SpeciesImpl extends SpeciesAbstract { + + private static final long serialVersionUID = 1L; + + // used for coser species export + public String getTaxaCode() { + return ""; + } +} Property changes on: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/entities/references/SpeciesImpl.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/echobase-services/pom.xml =================================================================== --- trunk/echobase-services/pom.xml 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-services/pom.xml 2014-03-07 23:16:42 UTC (rev 973) @@ -99,6 +99,11 @@ </dependency> <dependency> + <groupId>fr.ifremer.coser</groupId> + <artifactId>coser-business</artifactId> + </dependency> + + <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> </dependency> Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java 2014-03-07 23:16:42 UTC (rev 973) @@ -582,9 +582,14 @@ } //------------------------------------------------------------------------// - //--- SpeciesCategory ----------------------------------------------------// + //--- Species ------------------------------------------------------------// //------------------------------------------------------------------------// + public List<Species> getSpecies() { + List<Species> species = persistenceContext.getSpeciesDao().findAll(); + return species; + } + public Optional<Species> getOptionalSpecies(String id) { Species species = persistenceContext.getSpeciesDao().findByTopiaId( id); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapConfiguration.java 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapConfiguration.java 2014-03-07 23:16:42 UTC (rev 973) @@ -59,7 +59,7 @@ /** * Id of voyage to export. */ - private String voyageId; + private String missionId; private JdbcConfiguration dbConfiguration; @@ -94,12 +94,12 @@ this.exportFile = exportFile; } - public String getVoyageId() { - return voyageId; + public String getMissionId() { + return missionId; } - public void setVoyageId(String voyageId) { - this.voyageId = voyageId; + public void setMissionId(String missionId) { + this.missionId = missionId; } public JdbcConfiguration getDbConfiguration() { Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapService.java 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/ExportMapService.java 2014-03-07 23:16:42 UTC (rev 973) @@ -23,15 +23,24 @@ * #L% */ +import com.google.common.base.Preconditions; +import fr.ifremer.coser.bean.EchoBaseProject; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.persistence.JdbcConfiguration; import fr.ifremer.echobase.services.EchoBaseServiceSupport; +import fr.ifremer.echobase.services.service.UserDbPersistenceService; +import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Export; import org.nuiton.util.FileUtil; import org.nuiton.util.TimeLog; +import javax.inject.Inject; import java.io.File; +import java.io.FilenameFilter; import java.io.IOException; /** @@ -47,41 +56,99 @@ public static final TimeLog timeLog = new TimeLog(ExportMapService.class); + @Inject + private UserDbPersistenceService persistenceService; + public void doExport(ExportMapConfiguration model) throws IOException { - String fileName = model.getFileName(); + Preconditions.checkNotNull(model); + Preconditions.checkNotNull(model.getFileName()); + Preconditions.checkNotNull(model.getDbConfiguration()); + Preconditions.checkNotNull(model.getMissionId()); + // compute nb steps (invoke EchoR + create archive tree + + int nbSteps = 3; + + if (log.isInfoEnabled()) { + log.info("NB steps: " + nbSteps); + } + model.setNbSteps(nbSteps); + + Mission mission = persistenceService.getMission(model.getMissionId()); + Preconditions.checkNotNull(mission); + + String missionName = mission.getName(); + File tempDirectory = model.getWorkingDirectory(); + File echoRBaseDir = new File(tempDirectory, "EchoR"); + FileUtil.createDirectoryIfNecessary(echoRBaseDir); - File zipFile = new File(tempDirectory, fileName + ".zip"); + // 1 - invoke EchoR + invokeEchoR(echoRBaseDir, model.getDbConfiguration(), missionName); + model.incrementsProgress(); + + // 2 - create archive tree + File archiveBaseDir = new File(tempDirectory, "echobase"); + FileUtil.createDirectoryIfNecessary(archiveBaseDir); if (log.isInfoEnabled()) { - log.info("Will export map to " + zipFile); + log.info("Will store maps in " + archiveBaseDir); } - model.setExportFile(zipFile); - File dir = new File(tempDirectory, "echobase"); + createArchiveContent(archiveBaseDir, echoRBaseDir, missionName); - FileUtil.createDirectoryIfNecessary(dir); + model.incrementsProgress(); + + // 3 - create archive + + String fileName = model.getFileName(); + File zipFile = new File(tempDirectory, fileName + ".zip"); + if (log.isInfoEnabled()) { - log.info("Will store maps in " + dir); + log.info("Will export map to " + zipFile); } + model.setExportFile(zipFile); + EchoBaseIOUtil.compressZipFile(zipFile, archiveBaseDir); + } - JdbcConfiguration dbConfiguration = model.getDbConfiguration(); + protected void invokeEchoR(File dir, JdbcConfiguration dbConfiguration, String missionName) { if (log.isInfoEnabled()) { + log.info("Will invoke EchoR on mission: " + missionName); log.info("Will connect to db: " + dbConfiguration.getUrl()); } + } - // compute nb steps - int nbSteps = 0; + protected void createArchiveContent(File archiveBaseDir, File echoRBaseDir, String missionName) throws IOException { - if (log.isInfoEnabled()) { - log.info("NB steps: " + nbSteps); + EchoBaseProject coserProject = new EchoBaseProject(archiveBaseDir); + + coserProject.setFacadeName("Atlantique"); + coserProject.setZoneName("gdgciem8"); + coserProject.setAuthor("EchoBase"); + coserProject.setComment("Created by Echobase application (db: " + getUserDbUrl() + ")"); + + coserProject.save(); + + File mapDir = coserProject.getMapsDirectory(); + + FileUtil.createDirectoryIfNecessary(mapDir); + + FilenameFilter filter = EchoBaseProject.newMapSpeciesFilenameFilter(missionName); + + // files are in echoRBaseDir-meanMaps + // copy all of them in mapDir + File[] files = new File(echoRBaseDir, "invoke-meanMaps").listFiles(filter); + for (File file : files) { + FileUtils.copyFileToDirectory(file, mapDir); } - model.setNbSteps(nbSteps); - // TODO Export - - EchoBaseIOUtil.compressZipFile(zipFile, dir); + // create species.csv + File speciesFile = coserProject.getSpeciesDefinitionFile(); + SpeciesExportModel speciesExportModel = new SpeciesExportModel(getCsvSeparator()); + try { + Export.exportToFile(speciesExportModel, persistenceService.getSpecies(), speciesFile); + } catch (Exception e) { + throw new EchoBaseTechnicalException("Could not export species list to " + speciesFile, e); + } } } Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/SpeciesExportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/SpeciesExportModel.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/SpeciesExportModel.java 2014-03-07 23:16:42 UTC (rev 973) @@ -0,0 +1,26 @@ +package fr.ifremer.echobase.services.service.exportMap; + +import fr.ifremer.echobase.entities.references.Species; +import org.nuiton.csv.ext.AbstractExportModel; + +/** + * Created on 3/5/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since XXX + */ +public class SpeciesExportModel extends AbstractExportModel<Species> { + + public SpeciesExportModel(char separator) { + super(separator); + newColumnForExport(Species.PROPERTY_TAXON_CODE, "C_Perm"); + newColumnForExport(Species.PROPERTY_TAXON_SYSTEMATIC_ORDER, "NumSys"); + newColumnForExport(Species.PROPERTY_TAXON_SYSTEMATIC_LEVEL, "NivSys"); + newColumnForExport(Species.PROPERTY_CODE_MEMO, "C_VALIDE"); + newColumnForExport(Species.PROPERTY_GENUS_SPECIES, "L_VALIDE"); + newColumnForExport(Species.PROPERTY_AUTHOR_REFERENCE, "AA_VALIDE"); + newColumnForExport(Species.PROPERTY_TAXON_FATHER_MEMOCODE, "C_TxPère"); + newColumnForExport("taxaCode", "Taxa"); + } + +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/exportMap/SpeciesExportModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportMap/Configure.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportMap/Configure.java 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportMap/Configure.java 2014-03-07 23:16:42 UTC (rev 973) @@ -23,7 +23,7 @@ * #L% */ -import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.persistence.JdbcConfiguration; import fr.ifremer.echobase.services.service.exportMap.ExportMapConfiguration; import fr.ifremer.echobase.ui.EchoBaseSession; @@ -51,14 +51,14 @@ private static final Log log = LogFactory.getLog(Configure.class); /** Universe of voyages to export in db. */ - protected Map<String, String> voyages; + protected Map<String, String> missions; public Configure() { super(ExportMapConfiguration.class); } - public Map<String, String> getVoyages() { - return voyages; + public Map<String, String> getMissions() { + return missions; } public void setFileName(String fileName) { @@ -79,7 +79,7 @@ @Override protected void prepareInputAction(ExportMapConfiguration model) { - voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); + missions = userDbPersistenceService.loadSortAndDecorate(Mission.class); } @Override @@ -95,6 +95,6 @@ log.info("Temporary directory to use : " + dataDirectory); } - voyages = userDbPersistenceService.loadSortAndDecorate(Voyage.class); + missions = userDbPersistenceService.loadSortAndDecorate(Mission.class); } } Modified: trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportMap/Configure-validation.xml =================================================================== --- trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportMap/Configure-validation.xml 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-ui/src/main/resources/fr/ifremer/echobase/ui/actions/exportMap/Configure-validation.xml 2014-03-07 23:16:42 UTC (rev 973) @@ -25,9 +25,9 @@ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> - <field name="model.voyageId"> + <field name="model.missionId"> <field-validator type="requiredstring"> - <message key="echobase.error.exportMap.voyage.required"/> + <message key="echobase.error.exportMap.mission.required"/> </field-validator> </field> Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2014-03-07 23:16:42 UTC (rev 973) @@ -169,7 +169,7 @@ echobase.error.export.sqlQuery.forbidden.update.word=La requète contient le mot 'UPDATE', ce qui est interdit echobase.error.export.sqlQuery.requiredstring=La requète de l'export est obligatoire echobase.error.exportMap.filename.required=Export filename required -echobase.error.exportMap.voyage.required=No voyage selected +echobase.error.exportMap.mission.required=No mission selected echobase.error.import.acousticDensityUnit.required=acousticDensityUnit non renseigné echobase.error.import.acquisitionSoftwareVersionER60.required=acquisitionSoftwareVersionER60 non renseigné echobase.error.import.acquisitionSoftwareVersionME70.required=acquisitionSoftwareVersionME70 non renseigné Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2014-03-07 23:16:42 UTC (rev 973) @@ -169,7 +169,7 @@ echobase.error.export.sqlQuery.forbidden.update.word=La requète contient le mot 'UPDATE', ce qui est interdit echobase.error.export.sqlQuery.requiredstring=La requète de l'export est obligatoire echobase.error.exportMap.filename.required=Le nom d'un fichier d'export est obligatoire -echobase.error.exportMap.voyage.required=La sélection d'une campagne est obligatoire +echobase.error.exportMap.mission.required=La sélection d'une série est obligatoire echobase.error.import.acousticDensityUnit.required=acousticDensityUnit non renseigné echobase.error.import.acquisitionSoftwareVersionER60.required=acquisitionSoftwareVersionER60 non renseigné echobase.error.import.acquisitionSoftwareVersionME70.required=acquisitionSoftwareVersionME70 non renseigné @@ -321,7 +321,7 @@ echobase.legend.embeddedApplication.configuration=Configuration de l'application embarquée echobase.legend.exportDb.configuration.files=Configuration de l'export echobase.legend.exportDb.resume=Résumé de l'export de base -echobase.legend.exportMap.resume=Résumé de l'export des cartes d'une campagne +echobase.legend.exportMap.resume=Résumé de l'export des cartes echobase.legend.importData.configuration.selectImportType=Sélection du type d'import echobase.legend.importData.configure=Configurer l'import echobase.legend.importData.createMission=Caractéristiques de la mission @@ -343,7 +343,7 @@ echobase.menu.editData=Modifier les données echobase.menu.export=Exporter des données echobase.menu.exportDb=Exporter une base -echobase.menu.exportMap=Exporter les cartes d'une campagne +echobase.menu.exportMap=Exporter les cartes echobase.menu.importData=Importer des données echobase.menu.importDb=Importer une base echobase.menu.logs=Journal des modifications @@ -384,9 +384,9 @@ echobase.title.exportDb=Export complet de la base echobase.title.exportDbProgress=Export de la base de données en cours echobase.title.exportDbResult=Résultats de l'export de la base de données -echobase.title.exportMap=Export des cartes d'une campagne -echobase.title.exportMapProgress=Export des cartes d'une campagne en cours -echobase.title.exportMapResult=Résultats de l'export des cartes d'une campagne +echobase.title.exportMap=Export des cartes +echobase.title.exportMapProgress=Export des cartes en cours +echobase.title.exportMapResult=Résultats de l'export des cartes echobase.title.exportTable=Exporter une table echobase.title.importData.selectImportType=Sélection du type d'import echobase.title.importDb=Import d'une base Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportMap/configure.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportMap/configure.jsp 2014-03-07 23:12:58 UTC (rev 972) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/exportMap/configure.jsp 2014-03-07 23:16:42 UTC (rev 973) @@ -46,9 +46,9 @@ </div> <br/> - <s:select key="model.voyageId" requiredLabel="true" - label='%{getText("echobase.common.voyage")}' - list="voyages" headerKey="" headerValue=""/> + <s:select key="model.missionId" requiredLabel="true" + label='%{getText("echobase.common.mission")}' + list="missions" headerKey="" headerValue=""/> <div class="cleanBoth"></div> <br/>
participants (1)
-
tchemit@users.forge.codelutin.com