Author: chatellier Date: 2011-01-21 16:07:02 +0000 (Fri, 21 Jan 2011) New Revision: 536 Log: Refactoring publish > publiable. Prise en compte de l'upload/export avec ou sans donn?\195?\169es de base. Prise en compte des resultats de type indicateurs. Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties trunk/coser-business/src/test/resources/web/upload2.zip trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/RSufiResult.java 2011-01-21 16:07:02 UTC (rev 536) @@ -64,11 +64,14 @@ /** Utilisé seulement pour la validation (sinon, non valorisé). */ protected String mapsPath; - /** Result selected for web publication. */ - protected boolean publishResult; + /** Result publiable. */ + protected boolean publiableResult; + /** Result flaged as indicators result. */ + protected boolean indicatorsResult; + /** Result flaged as maps result. */ - protected boolean mapsReferenceResult; + protected boolean mapsResult; /** Data download allowed. */ protected boolean dataAllowed; @@ -161,26 +164,36 @@ return mapsPath; } - public void setPublishResult(boolean publishResult) { - boolean oldValue = this.publishResult; - this.publishResult = publishResult; - getPropertyChangeSupport().firePropertyChange("publishResult", oldValue, publishResult); + public void setPubliableResult(boolean publiableResult) { + boolean oldValue = this.publiableResult; + this.publiableResult = publiableResult; + getPropertyChangeSupport().firePropertyChange("publiableResult", oldValue, publiableResult); } - public boolean isPublishResult() { - return publishResult; + public boolean isPubliableResult() { + return publiableResult; } - public boolean isMapsReferenceResult() { - return mapsReferenceResult; + public boolean isIndicatorsResult() { + return indicatorsResult; } - public void setMapsReferenceResult(boolean mapsReferenceResult) { - boolean oldValue = this.mapsReferenceResult; - this.mapsReferenceResult = mapsReferenceResult; - getPropertyChangeSupport().firePropertyChange("mapsReferenceResult", oldValue, mapsReferenceResult); + public void setIndicatorsResult(boolean indicatorsResult) { + boolean oldValue = this.indicatorsResult; + this.indicatorsResult = indicatorsResult; + getPropertyChangeSupport().firePropertyChange("indicatorsResult", oldValue, indicatorsResult); } + public boolean isMapsResult() { + return mapsResult; + } + + public void setMapsResult(boolean mapsResult) { + boolean oldValue = this.mapsResult; + this.mapsResult = mapsResult; + getPropertyChangeSupport().firePropertyChange("mapsResult", oldValue, mapsResult); + } + public boolean isDataAllowed() { return dataAllowed; } @@ -208,9 +221,10 @@ if (getEstPopIndName() != null) { props.setProperty("result.estPopIndName", getEstPopIndName()); } - props.setProperty("result.publishResult", String.valueOf(isPublishResult())); + props.setProperty("result.publiableResult", String.valueOf(isPubliableResult())); + props.setProperty("result.indicatorsResult", String.valueOf(isIndicatorsResult())); + props.setProperty("result.mapsResult", String.valueOf(isMapsResult())); props.setProperty("result.dataAllowed", String.valueOf(isDataAllowed())); - props.setProperty("result.mapsReferenceResult", String.valueOf(isMapsReferenceResult())); return props; } @@ -231,14 +245,17 @@ if (props.containsKey("result.estPopIndName")) { setEstPopIndName(props.getProperty("result.estPopIndName")); } - if (props.containsKey("result.publishResult")) { - setPublishResult(Boolean.parseBoolean(props.getProperty("result.publishResult"))); + if (props.containsKey("result.publiableResult")) { + setPubliableResult(Boolean.parseBoolean(props.getProperty("result.publiableResult"))); } if (props.containsKey("result.dataAllowed")) { setDataAllowed(Boolean.parseBoolean(props.getProperty("result.dataAllowed"))); } - if (props.containsKey("result.mapsReferenceResult")) { - setMapsReferenceResult(Boolean.parseBoolean(props.getProperty("result.mapsReferenceResult"))); + if (props.containsKey("result.indicatorsResult")) { + setIndicatorsResult(Boolean.parseBoolean(props.getProperty("result.indicatorsResult"))); } + if (props.containsKey("result.mapsResult")) { + setMapsResult(Boolean.parseBoolean(props.getProperty("result.mapsResult"))); + } } } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2011-01-21 16:07:02 UTC (rev 536) @@ -107,7 +107,7 @@ protected CoserBusinessConfig config; protected ImportService importService; - + protected CommandService commandService; public ProjectService(CoserBusinessConfig config) { @@ -2742,23 +2742,6 @@ } /** - * Look for project survey name in container data. - * - * @param container data container - * @return survey name - */ - public String getProjectSurveyName(AbstractDataContainer container) { - String result = null; - - Iterator<String[]> itCatchData = container.getCatch().iterator(true); - while (StringUtils.isEmpty(result) && itCatchData.hasNext()) { - result = itCatchData.next()[Catch.INDEX_SURVEY]; - } - - return result; - } - - /** * Look for project survey name in rsufi result. * Read estcomind file to known that. * Used in webservice to know map file names. Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2011-01-21 16:07:02 UTC (rev 536) @@ -96,7 +96,8 @@ import freemarker.template.TemplateException; /** - * Service specifique à l'interface web de visualisation. + * Service specifique à l'interface web de visualisation et à la partie UI + * qui sert a envouer les resultats vers l'interface web. * * Ce service, contrairement aux autres a un état, les indicateurs et zones * chargées persistent après chargement, car elle ne peuvent pas changer @@ -104,7 +105,8 @@ * * Il faut garder à l'esprit que les projets n'ont pas forcement * de resultat, donc le chargement du projet est possible, mais - * pas les données de controle et les données de selection. + * pas les données de controle et les données de selection (dont plutot + * travailler sur les fichiers estcomind/estpopind que sur les 4 tables). * * @author chatellier * @version $Revision$ @@ -313,7 +315,7 @@ } if (onlyPubliableResult) { - result &= rsufiResult.isPublishResult(); + result &= rsufiResult.isPubliableResult(); } return result; @@ -324,11 +326,11 @@ * * @param selectedResults selected result paths * @param extractDirectory extract directory (can be null) - * @param exportWithData include csv data during export + * @param publishDataResults result paths flaged with results export * @return extracted file (no automatically deleted) * @throws CoserBusinessException */ - public File performResultExtract(Collection<RSufiResultPath> selectedResults, File extractDirectory, boolean exportWithData) throws CoserBusinessException { + public File performResultExtract(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> publishDataResults, File extractDirectory) throws CoserBusinessException { File prepareZip = null; try { prepareZip = File.createTempFile("coserextract-", ".zip", extractDirectory); @@ -341,7 +343,7 @@ project = projectService.openProject(project.getName()); OneResultFileFilter oneRFF = new OneResultFileFilter(config, - project, path.getSelection(), path.getRsufiResult(), exportWithData); + project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path)); mFileFilters.add(oneRFF); } @@ -364,11 +366,12 @@ * Upload user selected result to coser web front-end using common http * client. * - * TODO remove les 3 listes s'il y a mieux. + * TODO remove les 4 listes s'il y a mieux. * * @param selectedResults selected result (collection of project/selection/rsufiresult) - * @param mapResults result selected as list result - * @param publishDataResults result selected as results published with data + * @param indicatorsResults results selected as indicator results + * @param mapResults results selected as map result + * @param publishDataResults results selected as results published with data * @param login remote admin login * @param password remote admin password * @param progress progress monitor @@ -376,8 +379,9 @@ * @throws CoserBusinessException */ public String performResultUpload(Collection<RSufiResultPath> selectedResults, - Collection<RSufiResultPath> mapResults, Collection<RSufiResultPath> publishDataResults, - String login, String password, ProgressMonitor progress) throws CoserBusinessException { + Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults, + Collection<RSufiResultPath> publishDataResults, String login, + String password, ProgressMonitor progress) throws CoserBusinessException { String uploadStatus = null; @@ -387,7 +391,7 @@ progress.setCurrent(0); progress.setText(_("coser.business.uploadresult.modifyResultOptions")); - modifyRSufiResults(selectedResults, mapResults, publishDataResults); + modifyRSufiResults(selectedResults, indicatorsResults, mapResults, publishDataResults); progress.setText(_("coser.business.uploadresult.checkcollision")); checkDataCollision(selectedResults); @@ -395,7 +399,7 @@ progress.setText(_("coser.business.uploadresult.preparezip")); // default extract to temp directory with data sources - File prepareZip = performResultExtract(selectedResults, null, true); + File prepareZip = performResultExtract(selectedResults, publishDataResults, null); progress.setText(_("coser.business.uploadresult.sendzip")); progress.setTotal((int)prepareZip.length()); @@ -445,11 +449,13 @@ * data sources result). * * @param selectedResults selected result (collection of project/selection/rsufiresult) + * @param indicatorsResults results selected as indicator results * @param mapResults map results * @param publishDataResults publish data results * @throws CoserBusinessException */ - protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults, Collection<RSufiResultPath> mapResults, + protected void modifyRSufiResults(Collection<RSufiResultPath> selectedResults, + Collection<RSufiResultPath> indicatorsResults, Collection<RSufiResultPath> mapResults, Collection<RSufiResultPath> publishDataResults) throws CoserBusinessException { // TODO echatellier 20110117 revoir ce code @@ -460,14 +466,21 @@ // reset type map and data source for all for (RSufiResultPath selectedResult : selectedResults) { RSufiResult rsufiResult = selectedResult.getRsufiResult(); - rsufiResult.setMapsReferenceResult(false); + rsufiResult.setIndicatorsResult(false); + rsufiResult.setMapsResult(false); rsufiResult.setDataAllowed(false); } // set map type + for (RSufiResultPath indicatorsResult : indicatorsResults) { + RSufiResult rsufiResult = indicatorsResult.getRsufiResult(); + rsufiResult.setIndicatorsResult(true); + } + + // set map type for (RSufiResultPath mapResult : mapResults) { RSufiResult rsufiResult = mapResult.getRsufiResult(); - rsufiResult.setMapsReferenceResult(true); + rsufiResult.setMapsResult(true); } // set data type @@ -487,7 +500,7 @@ File selectionDirectory = new File(selectionsDirectory, selection.getName()); File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY); File resultDirectory = new File(resultsDirectory, rsufiResult.getName()); - + projectService.saveRSufiResult(resultDirectory, rsufiResult); } } @@ -509,7 +522,7 @@ RSufiResult rsufiResult = selectedResult.getRsufiResult(); // on creer une clé composé pour l'id du resultat - String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsReferenceResult()); + String resultZoneTypeId = rsufiResult.getZone() + String.valueOf(rsufiResult.isMapsResult()); if (resultZoneTypeIds.contains(resultZoneTypeId)) { throw new CoserBusinessException(_("coser.business.resultupload.duplicatedresult", project.getName(), selection.getName(), rsufiResult.getName(), rsufiResult.getZone())); @@ -1132,7 +1145,7 @@ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile); // extraction des especes pour le résultat demandé - if (rsufiResult.getZone() != null && rsufiResult.isMapsReferenceResult()) { + if (rsufiResult.getZone() != null && rsufiResult.isMapsResult()) { // test parmis toutes les zones disponible // si le resultat appartient a une zone @@ -1530,7 +1543,7 @@ RSufiResult rsufiResult = projectService.getRSufiResult(resultFile); // extraction des especes pour le résultat demandé - if (rsufiResult.getZone() != null && rsufiResult.isMapsReferenceResult()) { + if (rsufiResult.getZone() != null && rsufiResult.isMapsResult()) { // test parmis toutes les zones disponible // si le resultat appartient a une zone @@ -1665,9 +1678,12 @@ // load selection data (to do data export rsufi) Selection selection = project.getSelections().get(selectionFile.getName()); + + // be sure that data are available for this project + // or it will fail projectService.loadSelectionData(projectsDirectory,project, selection); - result = generateSourceZip(project, selection); + result = generateSourceZip(project, selection, resultFile, rsufiResult); } } } @@ -1685,12 +1701,16 @@ /** * Generate zip for selection. * + * Be sure that data are available for this project. + * * @param project project * @param selection selection with loaded data + * @param resultDirectory rsufi result directory + * @param rSufiResult rsufi result * @return generated zip file (auto delete when jvm shutdown) * @throws CoserBusinessException */ - protected File generateSourceZip(Project project, Selection selection) throws CoserBusinessException { + protected File generateSourceZip(Project project, Selection selection, File resultDirectory, RSufiResult rSufiResult) throws CoserBusinessException { File resultZip = null; @@ -1702,7 +1722,7 @@ File archiveDir = projectService.extractRSUfiData(project, selection, tempDir); // add decharge file - File dechargePDF = generateDechargePDF(selection); + File dechargePDF = generateDechargePDF(resultDirectory, rSufiResult); FileUtils.copyFile(dechargePDF, new File(archiveDir, "DechargeDonnees.pdf")); // make zip @@ -1722,11 +1742,12 @@ /** * Genere le PDF dynamique de decharge à partir du template freemarker. * - * @param selection selection with loaded data + * @param resultDirectory rsufi result directory + * @param rSufiResult rsufi result * @return le fichier généré * @throws CoserBusinessException */ - protected File generateDechargePDF(Selection selection) throws CoserBusinessException { + protected File generateDechargePDF(File resultDirectory, RSufiResult rSufiResult) throws CoserBusinessException { File result = null; @@ -1734,7 +1755,7 @@ // get some info to put into pdf Date updateDate = getLastDataUpdateDate(); - String surveyName = projectService.getProjectSurveyName(selection); + String surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult); // render freemarker template Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl"); Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2011-01-21 16:07:02 UTC (rev 536) @@ -127,7 +127,7 @@ RSufiResult rSufiResult = selection.getRsufiResults().get(0); Assert.assertEquals("testresult1", rSufiResult.getName()); Assert.assertEquals("myzone", rSufiResult.getZone()); - Assert.assertTrue(rSufiResult.isPublishResult()); + Assert.assertTrue(rSufiResult.isPubliableResult()); // non validé Project projectNotValidated = openTestProject(projectService, "project2"); Modified: trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties =================================================================== --- trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-business/src/test/resources/projects/projectctrvalidated/selections/testselection1/results/testresult1/result.properties 2011-01-21 16:07:02 UTC (rev 536) @@ -1,6 +1,29 @@ -#Mon Jan 03 16:12:49 CET 2011 +### +# #%L +# Coser :: Business +# +# $Id$ +# $HeadURL$ +# %% +# Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser 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 Lesser Public License for more details. +# +# You should have received a copy of the GNU General Lesser Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/lgpl-3.0.html>. +# #L% +### result.rsufiversion=1.2.3 result.zone=myzone result.estPopIndName=EstPopInd_test.txt result.estComIndName=EstComInd_test.txt -result.publishResult=true \ No newline at end of file +result.publiableResult=true \ No newline at end of file Modified: trunk/coser-business/src/test/resources/web/upload2.zip =================================================================== (Binary files differ) Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ExportUploadDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536) @@ -42,14 +42,6 @@ </cell> </row> <row> - <cell anchor="east"> - <JCheckBox id="sourceDataExport" selected="true" /> - </cell> - <cell columns="2" anchor="west"> - <JLabel text="coser.ui.uploadresult.extractWithData" /> - </cell> - </row> - <row> <cell columns="3" anchor="east"> <JButton text="coser.ui.uploadresult.extract" onActionPerformed="getHandler().performExtractResult(this)" /> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2011-01-21 16:07:02 UTC (rev 536) @@ -75,7 +75,7 @@ // initialise les données avec les filtres par default updateAvailableResultsFilter(view); - view.getSelectedResultTableModel().setResultPath(new ArrayList<RSufiResultPath>()); + view.getSelectedResultTableModel().setResultPaths(new ArrayList<RSufiResultPath>()); } @@ -97,7 +97,7 @@ try { List<RSufiResultPath> results = webService.findAllProjectWithResult(beginDate, endDate, onlyPubliable); - view.getAvailableResultTableModel().setResultPath(results); + view.getAvailableResultTableModel().setResultPaths(results); } catch (CoserBusinessException ex) { throw new CoserException("Can't get results", ex); } @@ -111,19 +111,23 @@ public void addAvailableResult(SelectUploadResultView view) { // get new result to add - List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath(); + List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPaths(); int[] selectedAvailableRows = view.getAvailableResultTable().getSelectedRows(); for (int selectedAvailableRow : selectedAvailableRows) { - RSufiResultPath resultData = view.getAvailableResultTableModel().getResultPath().get(selectedAvailableRow); + RSufiResultPath resultData = view.getAvailableResultTableModel().getResultPaths().get(selectedAvailableRow); if (!currentResult.contains(resultData)) { currentResult.add(resultData); + + // indicator results are auto selected + // can be done only here + view.getSelectedResultTableModel().getIndicatorResults().add(resultData); } } // les collisions ne peuvent pas être détecté a ce moment. // seulement lors du clic sur le bouton export/upload - view.getSelectedResultTableModel().setResultPath(currentResult); + view.getSelectedResultTableModel().setResultPaths(currentResult); } /** @@ -132,14 +136,14 @@ * @param view view */ public void removeSelectedResult(SelectUploadResultView view) { - List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPath(); + List<RSufiResultPath> currentResult = view.getSelectedResultTableModel().getResultPaths(); int[] selectedSelectedRows = view.getSelectedResultTable().getSelectedRows(); // need to remove reverse order for (int index = selectedSelectedRows.length - 1 ; index >= 0 ; --index) { int selectedSelectedRow = selectedSelectedRows[index]; currentResult.remove(selectedSelectedRow); } - view.getSelectedResultTableModel().setResultPath(currentResult); + view.getSelectedResultTableModel().setResultPaths(currentResult); } /** @@ -155,10 +159,11 @@ // get result selected by user SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT); - final Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath(); - final Collection<RSufiResultPath> mapResult = parentView.getSelectedResultTableModel().getMapResult(); - final Collection<RSufiResultPath> publishDataResult = parentView.getSelectedResultTableModel().getPublishDataResult(); - if (CollectionUtils.isNotEmpty(selectedResult)) { + final Collection<RSufiResultPath> selectedResults = parentView.getSelectedResultTableModel().getResultPaths(); + final Collection<RSufiResultPath> indicatorResults = parentView.getSelectedResultTableModel().getResultPaths(); + final Collection<RSufiResultPath> mapResults = parentView.getSelectedResultTableModel().getMapResults(); + final Collection<RSufiResultPath> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults(); + if (CollectionUtils.isNotEmpty(selectedResults)) { SwingWorker<String, Void> task = new SwingWorker<String, Void>() { @Override @@ -167,7 +172,7 @@ // get progress bar CoserProgressBar progressBar = view.getUploadProgressBar(); WebService webService = view.getContextValue(WebService.class); - String status = webService.performResultUpload(selectedResult, mapResult, publishDataResult, login, password, progressBar); + String status = webService.performResultUpload(selectedResults, indicatorResults, mapResults, publishDataResults, login, password, progressBar); return status; } catch (CoserBusinessException ex) { @@ -206,26 +211,23 @@ * @param view view */ public void performExtractResult(ExportUploadDialog view) { - + // get extract directory String extractPath = view.getExtractToTextField().getText(); File extractDirectory = new File(extractPath); - - // get source data option - boolean withData = view.getSourceDataExport().isSelected(); SelectUploadResultView parentView = view.getContextValue(SelectUploadResultView.class, JAXXUtil.PARENT); - Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPath(); + Collection<RSufiResultPath> selectedResult = parentView.getSelectedResultTableModel().getResultPaths(); + Collection<RSufiResultPath> publishDataResults = parentView.getSelectedResultTableModel().getPublishDataResults(); WebService webService = view.getContextValue(WebService.class); try { - webService.performResultExtract(selectedResult, extractDirectory, withData); + webService.performResultExtract(selectedResult, publishDataResults, extractDirectory); JOptionPane.showMessageDialog(view, _("coser.ui.uploadresult.resultsextracted"), _("coser.ui.uploadresult.title"), JOptionPane.INFORMATION_MESSAGE); } catch (CoserBusinessException ex) { throw new CoserException("Can't upload results", ex); } - } /** Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/RsufiResultTableModel.java 2011-01-21 16:07:02 UTC (rev 536) @@ -36,8 +36,8 @@ import fr.ifremer.coser.bean.RSufiResultPath; /** - * Model represantant la liste de tous les resultats rsufi present - * dans le dossier de stockage de coser, tous projets confondu. + * Modele respresant une liste de resultat avec details sur les resulats + * affichés et options de selection. * * @author chatellier * @version $Revision$ @@ -51,48 +51,60 @@ private static final long serialVersionUID = 6404018386062830677L; /** Les données de la table. */ - protected List<RSufiResultPath> resultPath; + protected List<RSufiResultPath> resultPaths; + /** Les résultats marqués comme etant des données d'indicateurs. */ + protected Set<RSufiResultPath> indicatorResults; + /** Les résultats marqué comme étant des données de map. */ - protected Set<RSufiResultPath> mapResult; + protected Set<RSufiResultPath> mapResults; /** Les résultat dont la publication des données est autorisée. */ - protected Set<RSufiResultPath> publishDataResult; + protected Set<RSufiResultPath> publishDataResults; /** Selected table tablemodel (do not show all columns). */ protected boolean selected; public RsufiResultTableModel(boolean selected) { this.selected = selected; + + // les selections ne sont jamais supprimé + // mais vu l'equivalence equals/hascode + // ca ne doit pas poser de problemes + indicatorResults = new HashSet<RSufiResultPath>(); + mapResults = new HashSet<RSufiResultPath>(); + publishDataResults = new HashSet<RSufiResultPath>(); } - public void setResultPath(List<RSufiResultPath> resultPath) { - this.resultPath = resultPath; - mapResult = new HashSet<RSufiResultPath>(); - publishDataResult = new HashSet<RSufiResultPath>(); + public void setResultPaths(List<RSufiResultPath> resultPaths) { + this.resultPaths = resultPaths; fireTableDataChanged(); } - public List<RSufiResultPath> getResultPath() { - return resultPath; + public List<RSufiResultPath> getResultPaths() { + return resultPaths; } - public Set<RSufiResultPath> getMapResult() { - return mapResult; + public Set<RSufiResultPath> getIndicatorResults() { + return indicatorResults; } - public Set<RSufiResultPath> getPublishDataResult() { - return publishDataResult; + public Set<RSufiResultPath> getMapResults() { + return mapResults; } + public Set<RSufiResultPath> getPublishDataResults() { + return publishDataResults; + } + /* * @see javax.swing.table.TableModel#getRowCount() */ @Override public int getRowCount() { int result = 0; - if (resultPath != null) { - result = resultPath.size(); + if (resultPaths != null) { + result = resultPaths.size(); } return result; } @@ -111,9 +123,12 @@ result = _("coser.ui.uploadresult.zone"); break; case 3: + result = _("coser.ui.uploadresult.indicatorResult"); + break; + case 4: result = _("coser.ui.uploadresult.mapResult"); break; - case 4: + case 5: result = _("coser.ui.uploadresult.publishData"); break; } @@ -139,6 +154,9 @@ case 4: result = Boolean.class; break; + case 5: + result = Boolean.class; + break; } return result; } @@ -150,7 +168,7 @@ public int getColumnCount() { int result = 3; if (selected) { - result = 5; + result = 6; } return result; } @@ -163,7 +181,7 @@ Object result = null; - RSufiResultPath data = resultPath.get(rowIndex); + RSufiResultPath data = resultPaths.get(rowIndex); RSufiResult rsufiResult = data.getRsufiResult(); switch (columnIndex) { case 0: @@ -176,15 +194,14 @@ result = rsufiResult.getZone(); break; case 3: - // c'est pas tres safe tu les hashcode des tableaux - // mais bon... - result = mapResult.contains(data); + result = indicatorResults.contains(data); break; case 4: - // c'est pas tres safe tu les hashcode des tableaux - // mais bon... - result = publishDataResult.contains(data); + result = mapResults.contains(data); break; + case 5: + result = publishDataResults.contains(data); + break; } return result; @@ -198,26 +215,36 @@ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - RSufiResultPath data = resultPath.get(rowIndex); + RSufiResultPath data = resultPaths.get(rowIndex); if (columnIndex == 3) { Boolean bValue = (Boolean)aValue; if (bValue.booleanValue()) { - mapResult.add(data); + indicatorResults.add(data); } else { - mapResult.remove(data); + indicatorResults.remove(data); } } else if (columnIndex == 4) { Boolean bValue = (Boolean)aValue; if (bValue.booleanValue()) { - publishDataResult.add(data); + mapResults.add(data); } else { - publishDataResult.remove(data); + mapResults.remove(data); } } + + else if (columnIndex == 5) { + Boolean bValue = (Boolean)aValue; + if (bValue.booleanValue()) { + publishDataResults.add(data); + } + else { + publishDataResults.remove(data); + } + } } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionAddResultDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536) @@ -128,11 +128,11 @@ </row> <row> <cell anchor="west"> - <JLabel text="coser.ui.result.publishResult" /> + <JLabel text="coser.ui.result.publiableResult" /> </cell> <cell fill="horizontal" columns="2"> - <JCheckBox id="publishResultCheckBox" - onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/> + <JCheckBox id="publiableResultCheckBox" + onActionPerformed="getRsufiResult().setPubliableResult(publiableResultCheckBox.isSelected())"/> </cell> </row> <row> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/SelectionEditResultDialog.jaxx 2011-01-21 16:07:02 UTC (rev 536) @@ -70,11 +70,11 @@ </row> <row> <cell anchor="west"> - <JLabel text="coser.ui.result.publishResult" /> + <JLabel text="coser.ui.result.publiableResult" /> </cell> <cell fill="horizontal"> - <JCheckBox id="publishResultCheckBox" selected="{getRsufiResult().isPublishResult()}" - onActionPerformed="getRsufiResult().setPublishResult(publishResultCheckBox.isSelected())"/> + <JCheckBox id="publiableResultCheckBox" selected="{getRsufiResult().isPubliableResult()}" + onActionPerformed="getRsufiResult().setPubliableResult(publiableResultCheckBox.isSelected())"/> </cell> </row> <row> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxModel.java 2011-01-21 16:07:02 UTC (rev 536) @@ -1,25 +1,23 @@ /* * #%L - * - * * $Id$ * $HeadURL$ * %% * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as + * it under the terms of the GNU 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 Lesser Public License for more details. + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Lesser Public + * You should have received a copy of the GNU General Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ZoneComboBoxRenderer.java 2011-01-21 16:07:02 UTC (rev 536) @@ -1,25 +1,23 @@ /* * #%L - * - * * $Id$ * $HeadURL$ * %% * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as + * it under the terms of the GNU 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 Lesser Public License for more details. + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Lesser Public + * You should have received a copy of the GNU General Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2011-01-21 16:07:02 UTC (rev 536) @@ -139,7 +139,7 @@ coser.ui.result.mapsDirectory=Maps directory \: coser.ui.result.newResult=New Result coser.ui.result.otherDataFile=Other files \: -coser.ui.result.publishResult=Publiable \: +coser.ui.result.publiableResult=Publiable \: coser.ui.result.requiredestComIndPath=ESTCOMind file is required coser.ui.result.requiredestPopIndPath=ESTPOPind file is required coser.ui.result.requiredname=Result name is required @@ -228,10 +228,10 @@ coser.ui.uploadresult.extract=Extract coser.ui.uploadresult.extractChoice=Extract to directory coser.ui.uploadresult.extractTo=Extract directory \: -coser.ui.uploadresult.extractWithData=Extract results with sources data coser.ui.uploadresult.filter.beginDate=Begin date \: coser.ui.uploadresult.filter.endDate=End date \: coser.ui.uploadresult.filter.publiableResults=Only publiables results +coser.ui.uploadresult.indicatorResult=Indicator result coser.ui.uploadresult.mapResult=Map result coser.ui.uploadresult.path=Result path coser.ui.uploadresult.publishData=Allow source data Modified: trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties =================================================================== --- trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-21 16:05:47 UTC (rev 535) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2011-01-21 16:07:02 UTC (rev 536) @@ -139,7 +139,7 @@ coser.ui.result.mapsDirectory=R\u00E9pertoire des cartes \: coser.ui.result.newResult=Nouveau r\u00E9sultat coser.ui.result.otherDataFile=Autre fichiers \: -coser.ui.result.publishResult=Publiable \: +coser.ui.result.publiableResult=Publiable \: coser.ui.result.requiredestComIndPath=Le fichier ESTCOMind est requis coser.ui.result.requiredestPopIndPath=Le fichier ESTPOPind est requis coser.ui.result.requiredname=Le nom du r\u00E9sultat est requis @@ -228,13 +228,13 @@ coser.ui.uploadresult.extract=Extraire coser.ui.uploadresult.extractChoice=Extraire vers un dossier coser.ui.uploadresult.extractTo=Dossier d'extraction \: -coser.ui.uploadresult.extractWithData=Extraire les r\u00E9sultats avec les donn\u00E9es sources coser.ui.uploadresult.filter.beginDate=Date de d\u00E9but \: coser.ui.uploadresult.filter.endDate=Date de fin \: coser.ui.uploadresult.filter.publiableResults=Seulement les r\u00E9sultats publiables +coser.ui.uploadresult.indicatorResult=R\u00E9sultat d'indicateurs coser.ui.uploadresult.mapResult=R\u00E9sultat de cartes coser.ui.uploadresult.path=Chemin du r\u00E9sultats -coser.ui.uploadresult.publishData=Autoriser les sources +coser.ui.uploadresult.publishData=Autoriser les donn\u00E9es de base coser.ui.uploadresult.removeResults=Supprimer le r\u00E9sultat coser.ui.uploadresult.resultsextracted=R\u00E9sultats extraits. coser.ui.uploadresult.resultsuploaded=R\u00E9sultats publi\u00E9s.