r1162 - in trunk: . coser-business/src/main/java/fr/ifremer/coser coser-business/src/main/java/fr/ifremer/coser/bean coser-business/src/main/java/fr/ifremer/coser/services coser-business/src/main/resources/i18n coser-business/src/test/java/fr/ifremer/coser/services coser-ui/src/main/java/fr/ifremer/coser coser-ui/src/main/java/fr/ifremer/coser/ui coser-ui/src/main/java/fr/ifremer/coser/ui/common coser-ui/src/main/java/fr/ifremer/coser/ui/control coser-ui/src/main/java/fr/ifremer/coser/ui/pro
Author: tchemit Date: 2014-03-23 14:32:50 +0100 (Sun, 23 Mar 2014) New Revision: 1162 Url: http://forge.codelutin.com/projects/coser/repository/revisions/1162 Log: - refs #4690 (s?\195?\169paration des projets rsufi - echobase pour le client) - api json pour interroger la configuration (pour echobase) - suppression des cast inutiles - am?\195?\169lioration de la configuration de la partie (ajout package auth, plus de convention, ...) Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/interceptors/ trunk/coser-web/src/main/webapp/WEB-INF/content/auth/ trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp Removed: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.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/main/resources/i18n/coser-business_en_GB.properties trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.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 trunk/coser-web/pom.xml trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java trunk/coser-web/src/main/resources/struts.xml trunk/pom.xml Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserBusinessConfig.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -22,7 +22,9 @@ package fr.ifremer.coser; -import static org.nuiton.i18n.I18n.t; +import org.apache.commons.io.IOUtils; +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ConfigOptionDef; import java.io.File; import java.io.FileInputStream; @@ -36,18 +38,16 @@ import java.util.Locale; import java.util.Properties; -import org.apache.commons.io.IOUtils; -import org.nuiton.config.ApplicationConfig; -import org.nuiton.config.ConfigOptionDef; +import static org.nuiton.i18n.I18n.n; /** * Coser business application config. - * + * * @author chatellier * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ + * <p/> + * Last update : $Date$ + * By : $Author$ */ public class CoserBusinessConfig extends ApplicationConfig { @@ -89,11 +89,29 @@ setOption(CoserBusinessOption.PROJECTS_DIRECTORY.key, projectDirectory); } + public File getRSufiProjectsDirectory() { + File result = getOptionAsFile(CoserBusinessOption.RSUFI_PROJECTS_DIRECTORY.key); + return result; + } + + public void setRSufiProjectsDirectory(String projectDirectory) { + setOption(CoserBusinessOption.RSUFI_PROJECTS_DIRECTORY.key, projectDirectory); + } + + public File getEchoBaseProjectsDirectory() { + File result = getOptionAsFile(CoserBusinessOption.ECHOBASE_PROJECTS_DIRECTORY.key); + return result; + } + + public void setEchoBaseProjectsDirectory(String projectDirectory) { + setOption(CoserBusinessOption.ECHOBASE_PROJECTS_DIRECTORY.key, projectDirectory); + } + public File getValidatorsDirectory() { File result = getOptionAsFile(CoserBusinessOption.VALIDATOR_DIRECTORY.key); return result; } - + public void setValidatorsDirectory(String validatorDirectory) { setOption(CoserBusinessOption.VALIDATOR_DIRECTORY.key, validatorDirectory); } @@ -120,7 +138,7 @@ String result = getOption(CoserBusinessOption.REFERENCE_SPECIES.key); return result; } - + public void setReferenceSpeciesPath(String referenceSpeciesPath) { setOption(CoserBusinessOption.REFERENCE_SPECIES.key, referenceSpeciesPath); } @@ -129,7 +147,7 @@ String result = getOption(CoserBusinessOption.REFERENCE_TYPE_ESPECES.key); return result; } - + public void setReferenceTypeEspecesPath(String referenceTypeEspecesPath) { setOption(CoserBusinessOption.REFERENCE_TYPE_ESPECES.key, referenceTypeEspecesPath); } @@ -138,7 +156,7 @@ double result = getOptionAsDouble(CoserBusinessOption.CONTROL_NOBSMIN.key); return result; } - + public void setControlNobsmin(double controlNobsmin) { setOption(CoserBusinessOption.CONTROL_NOBSMIN.key, String.valueOf(controlNobsmin)); } @@ -147,7 +165,7 @@ double result = getOptionAsDouble(CoserBusinessOption.CONTROL_DIFF_CATCH_LENGTH.key); return result; } - + public void setControlDiffCatchLength(double controlDiffCatchLength) { setOption(CoserBusinessOption.CONTROL_DIFF_CATCH_LENGTH.key, String.valueOf(controlDiffCatchLength)); } @@ -156,7 +174,7 @@ String result = getOption(CoserBusinessOption.CONTROL_TYPE_FISH.key); return result; } - + public void setControlTypeFish(String controlTypeFish) { setOption(CoserBusinessOption.CONTROL_TYPE_FISH.key, controlTypeFish); } @@ -173,7 +191,7 @@ double result = getOptionAsDouble(CoserBusinessOption.SELECTION_FILTER_OCCURRENCE.key); return result; } - + public void setSelectionOccurrenceFilter(double selectionOccurrenceFilter) { setOption(CoserBusinessOption.SELECTION_FILTER_OCCURRENCE.key, String.valueOf(selectionOccurrenceFilter)); } @@ -182,7 +200,7 @@ double result = getOptionAsDouble(CoserBusinessOption.SELECTION_FILTER_DENSITY.key); return result; } - + public void setSelectionDensityFilter(double selectionDensityFilter) { setOption(CoserBusinessOption.SELECTION_FILTER_DENSITY.key, String.valueOf(selectionDensityFilter)); } @@ -225,7 +243,7 @@ File result = getOptionAsFile(CoserBusinessOption.WEB_INDICATORS.key); return result; } - + public void setWebIndicatorsFile(String indicatorsFile) { setOption(CoserBusinessOption.WEB_INDICATORS.key, indicatorsFile); } @@ -234,7 +252,7 @@ File result = getOptionAsFile(CoserBusinessOption.WEB_ZONES.key); return result; } - + public void setWebZonesFile(String zoneFile) { setOption(CoserBusinessOption.WEB_ZONES.key, zoneFile); } @@ -247,7 +265,7 @@ /** * Retourne la date de dernière mise à jour des données du site web. - * + * <p/> * Retourne une date bidon, si pas de dernière mise à jour. * * @return last data update date @@ -272,8 +290,7 @@ stream.close(); } catch (IOException ex) { throw new CoserTechnicalException("Can't read properties file", ex); - } - finally { + } finally { IOUtils.closeQuietly(stream); } } @@ -316,39 +333,44 @@ public static enum CoserBusinessOption implements ConfigOptionDef { - DATABASE_DIRECTORY("coser.database.directory", t("coser.config.database.directory.description"), File.class, "${user.home}" + File.separator + "coser"), - PROJECTS_DIRECTORY("coser.projects.directory", t("coser.config.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "projects"), - VALIDATOR_DIRECTORY("coser.validator.directory", t("coser.config.validator.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "validators"), + DATABASE_DIRECTORY("coser.database.directory", n("coser.config.database.directory.description"), File.class, "${user.home}" + File.separator + "coser"), + PROJECTS_DIRECTORY("coser.projects.directory", n("coser.config.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "projects"), + RSUFI_PROJECTS_DIRECTORY("coser.projects.rsufi.directory", n("coser.config.projects.rsufi.directory.description"), File.class, "${" + PROJECTS_DIRECTORY.key + "}" + File.separator + "rsufi"), + ECHOBASE_PROJECTS_DIRECTORY("coser.projects.echobase.directory", n("coser.config.projects.echobase.directory.description"), File.class, "${" + PROJECTS_DIRECTORY.key + "}" + File.separator + "echobase"), + VALIDATOR_DIRECTORY("coser.validator.directory", n("coser.config.validator.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "validators"), - SMTP_HOST("coser.smtp.host", t("coser.config.smtp.host.description"),String.class , "smtp"), - LOCALE("coser.locale", t("coser.config.locale.description"), Locale.class, Locale.FRANCE.toString()), + SMTP_HOST("coser.smtp.host", n("coser.config.smtp.host.description"), String.class, "smtp"), + LOCALE("coser.locale", n("coser.config.locale.description"), Locale.class, Locale.FRANCE.toString()), - REFERENCE_SPECIES("coser.reference.species", t("coser.config.reference.species.description"), String.class, ""), - REFERENCE_TYPE_ESPECES("coser.reference.typeSpecies", t("coser.config.reference.typeSpecies.description"), String.class, ""), + REFERENCE_SPECIES("coser.reference.species", n("coser.config.reference.species.description"), String.class, ""), + REFERENCE_TYPE_ESPECES("coser.reference.typeSpecies", n("coser.config.reference.typeSpecies.description"), String.class, ""), - CONTROL_NOBSMIN("coser.control.nobsmin", t("coser.config.control.nobsmin.description"), Float.class, "1.0"), - CONTROL_DIFF_CATCH_LENGTH("coser.control.diffcatchlength", t("coser.config.control.diffcatchlength.description"), Float.class, "5.0"), - CONTROL_TYPE_FISH("coser.control.typeFish", t("coser.config.control.typeFish.description"), String.class, "Pisces + Agnatha"), - CONTROL_STANDARD_DEVIATION_TO_AVERAGE("coser.control.standarddeviationtoaverage", t("coser.config.control.standarddeviationtoaverage.description"), Integer.class, "3"), - SELECTION_FILTER_OCCURRENCE("coser.selection.occurrenceFilter", t("coser.config.selection.occurrenceFilter.description"),Float.class , "5.0"), - SELECTION_FILTER_DENSITY("coser.selection.densityFilter", t("coser.config.selection.densityFilter.description"), Float.class, "5.0"), + CONTROL_NOBSMIN("coser.control.nobsmin", n("coser.config.control.nobsmin.description"), Float.class, "1.0"), + CONTROL_DIFF_CATCH_LENGTH("coser.control.diffcatchlength", n("coser.config.control.diffcatchlength.description"), Float.class, "5.0"), + CONTROL_TYPE_FISH("coser.control.typeFish", n("coser.config.control.typeFish.description"), String.class, "Pisces + Agnatha"), + CONTROL_STANDARD_DEVIATION_TO_AVERAGE("coser.control.standarddeviationtoaverage", n("coser.config.control.standarddeviationtoaverage.description"), Integer.class, "3"), + SELECTION_FILTER_OCCURRENCE("coser.selection.occurrenceFilter", n("coser.config.selection.occurrenceFilter.description"), Float.class, "5.0"), + SELECTION_FILTER_DENSITY("coser.selection.densityFilter", n("coser.config.selection.densityFilter.description"), Float.class, "5.0"), /** Client side. */ - WEB_FRONT_END("coser.web.frontend", t("coser.config.web.frontend.description"), URL.class, "http://www.ifremer.fr/SIH-indices-campagnes"), - WEB_UPLOAD_URL("coser.web.uploadurl", t("coser.config.web.uploadurl.description"), URL.class, "${" + WEB_FRONT_END.key + "}/upload-result.action"), + WEB_FRONT_END("coser.web.frontend", n("coser.config.web.frontend.description"), URL.class, "http://www.ifremer.fr/SIH-indices-campagnes"), + WEB_UPLOAD_URL("coser.web.uploadurl", n("coser.config.web.uploadurl.description"), URL.class, "${" + WEB_FRONT_END.key + "}/upload-result.action"), /** Server side. */ - WEB_PROPERTIES_FILE("coser.web.properties.file", t("coser.config.web.properties.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties"), - WEB_INDICATORS_PROJECTS_DIRECTORY("coser.web.indicators.projects.directory", t("coser.config.web.indicators.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicatorsprojects"), - WEB_MAPS_PROJECTS_DIRECTORY("coser.web.maps.projects.directory", t("coser.config.web.maps.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webmapsprojects"), - WEB_ECHOBASE_PROJECTS_DIRECTORY("coser.web.echobase.projects.directory", t("coser.config.web.echobase.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webechobaseprojects"), - WEB_INDICATORS("coser.web.indicators.file", t("coser.config.web.indicators.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv"), - WEB_ZONES("coser.web.zones.file", t("coser.config.web.zones.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv"), - WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", t("coser.config.web.newresult.emails.description"), String.class, null); + WEB_PROPERTIES_FILE("coser.web.properties.file", n("coser.config.web.properties.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "web.properties"), + WEB_INDICATORS_PROJECTS_DIRECTORY("coser.web.indicators.projects.directory", n("coser.config.web.indicators.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicatorsprojects"), + WEB_MAPS_PROJECTS_DIRECTORY("coser.web.maps.projects.directory", n("coser.config.web.maps.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webmapsprojects"), + WEB_ECHOBASE_PROJECTS_DIRECTORY("coser.web.echobase.projects.directory", n("coser.config.web.echobase.projects.directory.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webechobaseprojects"), + WEB_INDICATORS("coser.web.indicators.file", n("coser.config.web.indicators.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webindicators.csv"), + WEB_ZONES("coser.web.zones.file", n("coser.config.web.zones.file.description"), File.class, "${" + DATABASE_DIRECTORY.key + "}" + File.separator + "webzones.csv"), + WEB_PUBLICATION_EMAIL("coser.web.newresult.emails", n("coser.config.web.newresult.emails.description"), String.class, null); private final String key; + private final String description; + private final String defaultValue; + private final Class<?> type; private CoserBusinessOption(String key, String description, Class<?> type, String defaultValue) { @@ -399,7 +421,5 @@ public Class<?> getType() { return type; } - - } } Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -88,6 +88,11 @@ */ protected final MultiKeyMap<String, String> map; + /** + * Set of indicator ids. + */ + protected final Set<String> ids; + public IndicatorMap(File indicatorsFile) { Preconditions.checkNotNull(indicatorsFile); Preconditions.checkArgument(indicatorsFile.exists(), "Indicator file: " + indicatorsFile + " does not exist."); @@ -96,20 +101,27 @@ log.info("Loading Indicator file: " + indicatorsFile); } this.map = new MultiKeyMap<String, String>(); + final Set<String> indicatorIs = Sets.newHashSet(); DataStorage storage = DataStorages.load(indicatorsFile); DataStorages.walk(storage, new DataStorageWalker() { @Override public void onRow(String... row) { String indicatorCode = row[0]; + indicatorIs.add(indicatorCode); map.put(indicatorCode, KEY_FRENCH, row[1]); map.put(indicatorCode, KEY_ENGLISH, row[2]); map.put(indicatorCode, KEY_SPANISH, row[3]); map.put(indicatorCode, KEY_UNIT, row[4]); } }); + this.ids = Collections.unmodifiableSet(indicatorIs); } + public Set<String> getIds() { + return ids; + } + public String getIndicatorValue(Locale locale, String indicator) { Preconditions.checkNotNull(locale); Preconditions.checkNotNull(indicator); Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ClientResultService.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -111,30 +111,33 @@ boolean onlyPubliableResult) throws CoserBusinessException { List<GlobalResult> results = Lists.newArrayList(); - // loop on projets - File projectsDirectory = config.getProjectsDirectory(); - File[] projects = projectsDirectory.listFiles(); - if (projects != null) { - for (File existingProject : projects) { + File rsufiProjectsDirectory = config.getRSufiProjectsDirectory(); + File[] rsufiProjects = rsufiProjectsDirectory.listFiles(); + if (rsufiProjects != null) { + for (File existingProject : rsufiProjects) { if (existingProject.isDirectory()) { - if (GlobalResult.isEchobaseProject(existingProject)) { + Collection<GlobalResult> rsufiResults = + getRsufiResults(existingProject, + beginDate, + endDate, + onlyPubliableResult); + results.addAll(rsufiResults); + } + } + } - Collection<GlobalResult> echoBaseResults = - getEchoBaseResults(existingProject, - beginDate, - endDate, - onlyPubliableResult); - results.addAll(echoBaseResults); - } else { - - Collection<GlobalResult> rsufiResults = - getRsufiResults(existingProject, - beginDate, - endDate, - onlyPubliableResult); - results.addAll(rsufiResults); - } + File echoBaseProjectsDirectory = config.getEchoBaseProjectsDirectory(); + File[] echoBaseProjects = echoBaseProjectsDirectory.listFiles(); + if (echoBaseProjects != null) { + for (File existingProject : echoBaseProjects) { + if (existingProject.isDirectory()) { + Collection<GlobalResult> echoBaseResults = + getEchoBaseResults(existingProject, + beginDate, + endDate, + onlyPubliableResult); + results.addAll(echoBaseResults); } } } @@ -382,7 +385,7 @@ Selection selection = selectedResult.getSelection(); RSufiResult rsufiResult = selectedResult.getRsufiResult(); - File projectDirectory = new File(config.getProjectsDirectory(), project.getName()); + File projectDirectory = new File(config.getRSufiProjectsDirectory(), project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY); @@ -506,7 +509,7 @@ Preconditions.checkNotNull(extractDirectory); try { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File rsufiDirectory = new File(extractDirectory, LegacyResultRepositoryType.ID); FileUtils.forceMkdir(rsufiDirectory); @@ -521,7 +524,7 @@ project = projectService.openProject(project.getName()); OneRSufiResultFileFilter oneRFF = new OneRSufiResultFileFilter( - config.getProjectsDirectory(), + projectsDirectory, project, path.getSelection(), path.getRsufiResult(), @@ -561,7 +564,7 @@ Preconditions.checkNotNull(extractDirectory); try { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getEchoBaseProjectsDirectory(); File echobaseDirectory = new File(extractDirectory, EchoBaseResultRepositoryType.ID); FileUtils.forceMkdir(echobaseDirectory); Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/CommonService.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -501,7 +501,7 @@ return new HashMap<String, String[]>(); } - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File originalDirectory = new File(projectDirectory, CoserConstants.STORAGE_ORIGINAL_DIRECTORY); String storageFileName = getDataStorageFileName(project, category, null); 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ProjectService.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -132,7 +132,7 @@ * @return projects list */ public List<String> getProjectNames() { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); List<String> result = new ArrayList<String>(); File[] projects = projectsDirectory.listFiles(); if (projects != null) { @@ -165,7 +165,7 @@ * @throws CoserBusinessException if project can't be created */ public Project createProject(Project project, Map<Category, File> categoriesAndFiles, List<File> maps, ProgressMonitor progress) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); if (!projectsDirectory.isDirectory()) { projectsDirectory.mkdirs(); } @@ -278,7 +278,7 @@ * @throws CoserBusinessException */ public void saveProject(Project project, List<File> maps) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); String projectName = project.getName(); File projectDirectory = new File(projectsDirectory, projectName); @@ -394,7 +394,7 @@ // check project existence File projectsDirectory = parentDirectory; if (projectsDirectory == null) { - projectsDirectory = config.getProjectsDirectory(); + projectsDirectory = config.getRSufiProjectsDirectory(); } File projectDirectory = new File(projectsDirectory, projectName); if (!projectDirectory.isDirectory()) { @@ -604,7 +604,7 @@ */ public Project loadControlData(Project project) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); // first free memory, clear all data @@ -717,7 +717,7 @@ * @throws CoserBusinessException */ public Project loadSelectionData(Project project, Selection selection) throws CoserBusinessException { - return loadSelectionData(config.getProjectsDirectory(), project, selection); + return loadSelectionData(config.getRSufiProjectsDirectory(), project, selection); } /** @@ -791,7 +791,7 @@ public void saveProjectControl(Project project) throws CoserBusinessException { // tout ce qui suit doit exister à ce stade - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); String projectName = project.getName(); File projectDirectory = new File(projectsDirectory, projectName); @@ -865,7 +865,7 @@ saveProjectControl(project); // generate control file as pdf - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File controlDirectory = new File(projectDirectory, CoserConstants.STORAGE_CONTROL_DIRECTORY); File controlReportPdf = new File(controlDirectory, "control.pdf"); @@ -889,7 +889,7 @@ saveProjectSelection(project, selection); // generate control file as pdf - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); @@ -1010,7 +1010,7 @@ public void createProjectSelection(Project project, Selection selection) throws CoserBusinessException { // tout ce qui suit doit exister à ce stade - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); // creation du dossier de selections (peut deja exister) @@ -1039,7 +1039,7 @@ public void saveProjectSelection(Project project, Selection selection) throws CoserBusinessException { // tout ce qui suit doit exister à ce stade - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); // creation du dossier de selections (peut deja exister) @@ -1107,7 +1107,7 @@ public void saveRsufiResults(Project project, Selection selection, RSufiResult rsufiResult, List<File> othersFiles) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); @@ -1189,7 +1189,7 @@ */ public void editRsufiResults(Project project, Selection selection, RSufiResult rsufiResult, List<File> othersFile) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); @@ -1274,7 +1274,7 @@ public void deleteRSufiResult(Project project, Selection selection, RSufiResult rsufiResult) throws CoserBusinessException { try { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); @@ -2895,7 +2895,7 @@ out.println(t("coser.business.extract.creationdate") + dateFormat.format(project.getCreationDate())); // add selection additional files - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); @@ -3044,7 +3044,7 @@ SortedMap<String, List<String>> selectionByProject = new TreeMap<String, List<String>>(); // parcours des resultats disponibles - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File[] projectFiles = projectsDirectory.listFiles(); if (projectFiles != null) { for (File projectFile : projectFiles) { @@ -3086,7 +3086,7 @@ * @since 1.2 */ public Selection openSelection(String projectName, String selectionName) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, projectName); if (!projectDirectory.isDirectory()) { throw new CoserBusinessException(t("Project %s doesn't exists !", projectName)); @@ -3220,7 +3220,7 @@ */ public void editSelectionOptions(Project project, Selection selection, List<File> othersFile) throws CoserBusinessException { - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File projectDirectory = new File(projectsDirectory, project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/WebService.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -276,7 +276,7 @@ List<RSufiResultPath> results = new ArrayList<RSufiResultPath>(); // loop on projets - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); File[] projects = projectsDirectory.listFiles(); if (projects != null) { for (File existingProject : projects) { @@ -379,13 +379,13 @@ Project project = path.getProject(); project = projectService.openProject(project.getName()); - OneResultFileFilter oneRFF = new OneResultFileFilter(config.getProjectsDirectory(), + OneResultFileFilter oneRFF = new OneResultFileFilter(config.getRSufiProjectsDirectory(), project, path.getSelection(), path.getRsufiResult(), publishDataResults.contains(path)); mFileFilters.add(oneRFF); } // create zip temp file - File projectsDirectory = config.getProjectsDirectory(); + File projectsDirectory = config.getRSufiProjectsDirectory(); //ZipUtil.compress(prepareZip, projectsDirectory, mFileFilters); // compress les projets à la racines de l'archive @@ -533,7 +533,7 @@ Selection selection = selectedResult.getSelection(); RSufiResult rsufiResult = selectedResult.getRsufiResult(); - File projectDirectory = new File(config.getProjectsDirectory(), project.getName()); + File projectDirectory = new File(config.getRSufiProjectsDirectory(), project.getName()); File selectionsDirectory = new File(projectDirectory, CoserConstants.STORAGE_SELECTION_DIRECTORY); File selectionDirectory = new File(selectionsDirectory, selection.getName()); File resultsDirectory = new File(selectionDirectory, CoserConstants.STORAGE_RESULTS_DIRECTORY); Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties =================================================================== --- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-23 13:32:50 UTC (rev 1162) @@ -167,6 +167,8 @@ coser.config.database.directory.description=Coser database directory (all Coser data) coser.config.locale.description=Application's locale coser.config.projects.directory.description=Coser projects directory +coser.config.projects.echobase.directory.description=Location of *EchoBase* projects +coser.config.projects.rsufi.directory.description=Location of *RSufi* projects coser.config.reference.species.description=Species reference file location (reftax) coser.config.reference.typeSpecies.description=Code type species file location coser.config.selection.densityFilter.description=Default density filter value Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties =================================================================== --- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-23 13:32:50 UTC (rev 1162) @@ -167,6 +167,8 @@ coser.config.database.directory.description=Emplacement du dossier de toutes les données relatives à Coser coser.config.locale.description=Langue de l'application coser.config.projects.directory.description=Emplacement du dossier de sauvegarde des projets +coser.config.projects.echobase.directory.description=Répertoire contenant les projets *EchoBase* +coser.config.projects.rsufi.directory.description=Répertoire contenant les projets *RSufi* coser.config.reference.species.description=Emplacement du fichier de référence des espèces (Reftax) coser.config.reference.typeSpecies.description=Emplacement du fichier de code type des espèces coser.config.selection.densityFilter.description=Filtre par défaut sur la moyenne des densités Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java =================================================================== --- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -103,7 +103,7 @@ @Before public void initProjectDatabase() throws IOException { FileUtils.cleanDirectory(config.getDatabaseDirectory()); - copyDirectoryContent("src.test.resources.projects", config.getProjectsDirectory()); + copyDirectoryContent("src.test.resources.projects", config.getRSufiProjectsDirectory()); } /** 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/ProjectServiceTest.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -93,15 +93,15 @@ public void testCreateProject() throws CoserBusinessException { Project project = createTestProject(projectService, false); - Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "original", "testcatch.csv").exists()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "original", "testhaul.csv").exists()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "original", "teststrata.csv").exists()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "original", "testlength.csv").exists()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "reftaxSpecies.csv").exists()); } @@ -146,7 +146,7 @@ Project project = createTestProject(projectService, false); projectService.saveProjectControl(project); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "control", "testcatch_co.csv").exists()); } @@ -162,7 +162,7 @@ projectService.validControl(project, Collections.EMPTY_LIST); Assert.assertTrue(project.getControl().isValidated()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "control", "control.pdf").exists()); } @@ -181,7 +181,7 @@ projectService.validSelection(project, selection); Assert.assertTrue(selection.isValidated()); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "selections", "titi", "selection.pdf").exists()); } @@ -198,7 +198,7 @@ selection.setName("titi"); projectService.createProjectSelection(project, selection); - Assert.assertTrue(getFile(config.getProjectsDirectory(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "selections", "titi", "testcatch_se.csv").exists()); } @@ -610,12 +610,12 @@ Selection selection = project.getSelections().get("testselection1"); RSufiResult rsufiResult = selection.getRsufiResults().get(0); - Assert.assertTrue(getFile(config.getProjectsDirectory(), project.getName(), + Assert.assertTrue(getFile(config.getRSufiProjectsDirectory(), project.getName(), "selections", "testselection1", "results", rsufiResult.getName(), "result.properties").exists()); projectService.deleteRSufiResult(project, selection, rsufiResult); - Assert.assertFalse(getFile(config.getProjectsDirectory(), project.getName(), + Assert.assertFalse(getFile(config.getRSufiProjectsDirectory(), project.getName(), "selections", "testselection1", "results", rsufiResult.getName()).exists()); } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/Coser.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,145 +21,165 @@ */ package fr.ifremer.coser; -import java.io.File; +import fr.ifremer.coser.ui.CoserFrame; +import jaxx.runtime.context.DefaultApplicationContext; import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import fr.ifremer.coser.services.ClientResultService; -import jaxx.runtime.context.DefaultApplicationContext; - -import jaxx.runtime.swing.session.SwingSession; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.i18n.I18n; -import org.nuiton.i18n.init.ClassPathI18nInitializer; -import org.nuiton.i18n.init.DefaultI18nInitializer; -import org.nuiton.config.ArgumentsParserException; - -import com.bbn.openmap.MapBean; - -import fr.ifremer.coser.services.CommandService; -import fr.ifremer.coser.services.ControlService; -import fr.ifremer.coser.services.ProjectService; -import fr.ifremer.coser.services.PublicationService; -import fr.ifremer.coser.ui.CoserFrame; - /** * Coser main class. - * + * <p/> + * Last update : $Date$ + * By : $Author$ + * * @author chatellier * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ */ public class Coser { - private static final Log log = LogFactory.getLog(Coser.class); +// private static final Log log = LogFactory.getLog(Coser.class); - protected static CoserConfig coserConfig; +// protected static CoserConfig coserConfig; /** * Coser main method. - * + * * @param args main args */ public static void main(String... args) { - // init config - coserConfig = new CoserConfig(); - try { - coserConfig.parse(args); - } catch (ArgumentsParserException ex) { - if (log.isErrorEnabled()) { - log.error("Cant' parse configuration", ex); - } - } +// // init config +// coserConfig = new CoserConfig(); +// try { +// coserConfig.parse(args); +// } catch (ArgumentsParserException ex) { +// if (log.isErrorEnabled()) { +// log.error("Cant' parse configuration", ex); +// } +// } +// +// // OpenMap sysout +// MapBean.suppressCopyright = true; +// +// // catch wall application exception +// launch(context); +// +// // catch uncaught exceptions +// Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler()); +// System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName()); - // OpenMap sysout - MapBean.suppressCopyright = true; - - // catch wall application exception - launch(coserConfig); - - // catch uncaught exceptions - Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler()); - System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName()); - } - - /** - * Display main UI. - * - * @param coserConfig coser configuration - */ - public static void launch(final CoserConfig coserConfig) { - - // to work in java webstart - try { - I18n.init(new DefaultI18nInitializer("coser-i18n"), coserConfig.getLocale()); - } catch (RuntimeException ex) { - if (log.isErrorEnabled()) { - log.error("Could not load coser i18n bundle", ex); - } - // fallback for dev mode - I18n.init(new ClassPathI18nInitializer(), coserConfig.getLocale()); - } - // launch UI SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - // ne to be done in Swing EDT (otherwize, don't work on javawebstart) - // declare new classloader - ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); - CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader); - Thread.currentThread().setContextClassLoader(coserClassLoader); - // set coser xwork validation file directory in classloader - coserClassLoader.setValidatorsDirectory(coserConfig.getValidatorsDirectory()); + CoserUIApplicationContext applicationContext = CoserUIApplicationContext.init(); - // init LAF (from configuration) - try { - String lafClassName = coserConfig.getLookAndFeel(); - for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) { - if (laf.getClassName().equalsIgnoreCase(lafClassName)) { - UIManager.setLookAndFeel(laf.getClassName()); - } - } - } catch (Exception ex) { - if (log.isErrorEnabled()) { - log.error("Can't init look and feel", ex); - } - } - - // update font size (after laf) - coserConfig.updateSwingFont(); - - File coserConfigDirectory = new File(coserConfig.getUserConfigDirectory(), "coser"); - coserConfigDirectory.mkdirs(); - File mainFrameFile = new File(coserConfigDirectory, "session.xml"); - SwingSession session = new SwingSession(mainFrameFile, true); - // define unique context global values DefaultApplicationContext context = new DefaultApplicationContext(); - context.setContextValue(coserConfig); - context.setContextValue(session); - context.setContextValue(new ProjectService(coserConfig)); - context.setContextValue(new CommandService(coserConfig)); - context.setContextValue(new ControlService(coserConfig)); - context.setContextValue(new PublicationService(coserConfig)); -// context.setContextValue(new WebService(coserConfig)); - context.setContextValue(new ClientResultService(coserConfig)); - context.setContextValue(new DefaultCoserApplicationContext(coserConfig)); + context.setContextValue(applicationContext); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getConfig()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getSession()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getProjectService()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getCommandService()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getControlService()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getPublicationService()); + //FIXME Remove this and use directly the application context + context.setContextValue(applicationContext.getClientResultService()); // init frame with session reloading CoserFrame frame = new CoserFrame(context); frame.setLocationRelativeTo(null); - session.add(frame); + applicationContext.getSession().add(frame); frame.setVisible(true); } }); } +// /** +// * Display main UI. +// * +// * @param coserConfig coser configuration +// */ +// public static void launch(final CoserConfig coserConfig) { +// +// // to work in java webstart +// try { +// I18n.init(new DefaultI18nInitializer("coser-i18n"), coserConfig.getLocale()); +// } catch (RuntimeException ex) { +// if (log.isErrorEnabled()) { +// log.error("Could not load coser i18n bundle", ex); +// } +// // fallback for dev mode +// I18n.init(new ClassPathI18nInitializer(), coserConfig.getLocale()); +// } +// +// // launch UI +// SwingUtilities.invokeLater(new Runnable() { +// @Override +// public void run() { +// +// CoserConfig coserConfig = applicationContext.getConfig(); +// +// // ne to be done in Swing EDT (otherwize, don't work on javawebstart) +// // declare new classloader +// ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); +// CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader); +// Thread.currentThread().setContextClassLoader(coserClassLoader); +// // set coser xwork validation file directory in classloader +// coserClassLoader.setValidatorsDirectory(coserConfig.getValidatorsDirectory()); +// +// // init LAF (from configuration) +// try { +// String lafClassName = coserConfig.getLookAndFeel(); +// for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) { +// if (laf.getClassName().equalsIgnoreCase(lafClassName)) { +// UIManager.setLookAndFeel(laf.getClassName()); +// } +// } +// } catch (Exception ex) { +// if (log.isErrorEnabled()) { +// log.error("Can't init look and feel", ex); +// } +// } +// +// // update font size (after laf) +// coserConfig.updateSwingFont(); +// +// File coserConfigDirectory = new File(coserConfig.getUserConfigDirectory(), "coser"); +// try { +// FileUtils.forceMkdir(coserConfigDirectory); +// } catch (IOException e) { +// throw new CoserTechnicalException("Could not create user data directory", e); +// } +// File mainFrameFile = new File(coserConfigDirectory, "session.xml"); +// SwingSession session = new SwingSession(mainFrameFile, true); +// +// // define unique context global values +// DefaultApplicationContext context = new DefaultApplicationContext(); +// context.setContextValue(coserConfig); +// context.setContextValue(session); +// context.setContextValue(new ProjectService(coserConfig)); +// context.setContextValue(new CommandService(coserConfig)); +// context.setContextValue(new ControlService(coserConfig)); +// context.setContextValue(new PublicationService(coserConfig)); +//// context.setContextValue(new WebService(coserConfig)); +// context.setContextValue(new ClientResultService(coserConfig)); +// context.setContextValue(new DefaultCoserApplicationContext(coserConfig)); +// +// // init frame with session reloading +// CoserFrame frame = new CoserFrame(context); +// frame.setLocationRelativeTo(null); +// session.add(frame); +// +// frame.setVisible(true); +// } +// }); +// } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserConfig.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -30,7 +30,7 @@ import javax.swing.plaf.FontUIResource; import java.awt.Font; -import static org.nuiton.i18n.I18n.t; +import static org.nuiton.i18n.I18n.n; /** * Coser application configuration. @@ -93,12 +93,12 @@ public static enum CoserOption implements ConfigOptionDef { - CONFIG_FILE(CONFIG_FILE_NAME, t("coser.config.config.file.description"), "coser.properties", String.class, true, true), - LOOKANDFEEL("coser.lookandfeel", t("coser.config.lookandfeel.description"), null, String.class, false, false), - APPLICATION_VERSION("coser.application.version", t("coser.config.application.version.description"), null, String.class, false, false), - SUPPORT_EMAIL("coser.support.email", t("coser.config.support.email.description"), "support@codelutin.com", String.class, false, false), - WEBSITE_URL("coser.website", t("coser.config.website.description"), "https://doc.codelutin.com/coser/", String.class, false, false), - SWING_FONT_SIZE("coser.swingfontsize", t("coser.config.swingfontsize.description"), "12", Integer.class, false, false); + CONFIG_FILE(CONFIG_FILE_NAME, n("coser.config.config.file.description"), "coser.properties", String.class, true, true), + LOOKANDFEEL("coser.lookandfeel", n("coser.config.lookandfeel.description"), null, String.class, false, false), + APPLICATION_VERSION("coser.application.version", n("coser.config.application.version.description"), null, String.class, false, false), + SUPPORT_EMAIL("coser.support.email", n("coser.config.support.email.description"), "support@codelutin.com", String.class, false, false), + WEBSITE_URL("coser.website", n("coser.config.website.description"), "https://doc.codelutin.com/coser/", String.class, false, false), + SWING_FONT_SIZE("coser.swingfontsize", n("coser.config.swingfontsize.description"), "12", Integer.class, false, false); private final String key; Added: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java (rev 0) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,188 @@ +package fr.ifremer.coser; + +/* + * #%L + * Coser :: UI + * %% + * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony + * %% + * This program is free software: you can redistribute it and/or modify + * 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 Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.bbn.openmap.MapBean; +import com.google.common.base.Preconditions; +import fr.ifremer.coser.services.ClientResultService; +import fr.ifremer.coser.services.CommandService; +import fr.ifremer.coser.services.ControlService; +import fr.ifremer.coser.services.ProjectService; +import fr.ifremer.coser.services.PublicationService; +import jaxx.runtime.swing.session.SwingSession; +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.i18n.I18n; +import org.nuiton.i18n.init.ClassPathI18nInitializer; +import org.nuiton.i18n.init.DefaultI18nInitializer; + +import javax.swing.UIManager; +import java.awt.EventQueue; +import java.io.File; +import java.io.IOException; + +/** + * Coser UI Application context. + * <p/> + * Created on 3/23/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +public class CoserUIApplicationContext extends DefaultCoserApplicationContext { + + /** Logger. */ + private static final Log log = LogFactory.getLog(CoserUIApplicationContext.class); + + /** + * Shared application context. + */ + protected static CoserUIApplicationContext context; + + public static CoserUIApplicationContext get() { + Preconditions.checkState(context != null, "Application was not initialized!"); + return context; + } + + public static CoserUIApplicationContext init() { + + Preconditions.checkState(EventQueue.isDispatchThread(), "Must init application context from Swing EDT Thread"); + + context = new CoserUIApplicationContext(); + + CoserConfig config = context.getConfig(); + + // to work in java webstart + try { + I18n.init(new DefaultI18nInitializer("coser-i18n"), config.getLocale()); + } catch (RuntimeException ex) { + if (log.isErrorEnabled()) { + log.error("Could not load coser i18n bundle", ex); + } + // fallback for dev mode + I18n.init(new ClassPathI18nInitializer(), config.getLocale()); + } + + // OpenMap sysout + MapBean.suppressCopyright = true; + + // need to be done in Swing EDT (otherwize, don't work on javawebstart) + // declare new classloader + ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); + CoserClassLoader coserClassLoader = new CoserClassLoader(currentClassLoader); + Thread.currentThread().setContextClassLoader(coserClassLoader); + // set coser xwork validation file directory in classloader + coserClassLoader.setValidatorsDirectory(config.getValidatorsDirectory()); + + // init LAF (from configuration) + try { + String lafClassName = config.getLookAndFeel(); + for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) { + if (laf.getClassName().equalsIgnoreCase(lafClassName)) { + UIManager.setLookAndFeel(laf.getClassName()); + } + } + } catch (Exception ex) { + if (log.isErrorEnabled()) { + log.error("Can't init look and feel", ex); + } + } + + // update font size (after laf) + config.updateSwingFont(); + + File coserConfigDirectory = new File(config.getUserConfigDirectory(), "coser"); + try { + FileUtils.forceMkdir(coserConfigDirectory); + } catch (IOException e) { + throw new CoserTechnicalException("Could not create user data directory", e); + } + File mainFrameFile = new File(coserConfigDirectory, "session.xml"); + + context.session = new SwingSession(mainFrameFile, true); + + // catch wall application exception + // catch uncaught exceptions + Thread.setDefaultUncaughtExceptionHandler(new CoserExceptionHandler()); + System.setProperty("sun.awt.exception.handler", CoserExceptionHandler.class.getName()); + + return context; + } + + public static void close() { + context = null; + } + + protected SwingSession session; + + protected CommandService commandService; + + protected ProjectService projectService; + + protected ControlService controlService; + + protected PublicationService publicationService; + + protected ClientResultService clientResultService; + + public SwingSession getSession() { + return session; + } + + public CommandService getCommandService() { + return commandService; + } + + public ProjectService getProjectService() { + return projectService; + } + + public ControlService getControlService() { + return controlService; + } + + public PublicationService getPublicationService() { + return publicationService; + } + + public ClientResultService getClientResultService() { + return clientResultService; + } + + protected CoserUIApplicationContext() { + super(new CoserConfig()); + + projectService = new ProjectService(config); + commandService = new CommandService(config); + controlService = new ControlService(config); + publicationService = new PublicationService(config); + clientResultService = new ClientResultService(config); + } + + @Override + public CoserConfig getConfig() { + return (CoserConfig) config; + } + +} Property changes on: trunk/coser-ui/src/main/java/fr/ifremer/coser/CoserUIApplicationContext.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/CoserFrameHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -289,7 +289,7 @@ validatorDialog.setLocationRelativeTo(view); // restore session size - SwingSession session = (SwingSession)view.getContextValue(SwingSession.class); + SwingSession session = view.getContextValue(SwingSession.class); session.add(validatorDialog); validatorDialog.setVisible(true); @@ -395,7 +395,7 @@ controlHandler.init(controlView); // restore session size - SwingSession session = (SwingSession)view.getContextValue(SwingSession.class); + SwingSession session = view.getContextValue(SwingSession.class); session.add(controlView); setMainComponent(controlView); @@ -434,7 +434,7 @@ handler.initSelection(selectionView); // restore session size - SwingSession session = (SwingSession)view.getContextValue(SwingSession.class); + SwingSession session = view.getContextValue(SwingSession.class); session.add(selectionView); // fix la restauration de la selection @@ -505,7 +505,7 @@ handler.reloadSelection(selectionView); // restore session size - SwingSession session = (SwingSession)view.getContextValue(SwingSession.class); + SwingSession session = view.getContextValue(SwingSession.class); session.add(selectionView); // selection du bon onglet @@ -549,7 +549,7 @@ // incohérent showSummaryView(); - SelectionReplayView replayView = new SelectionReplayView((JAXXContext)view, view); + SelectionReplayView replayView = new SelectionReplayView(view, view); SelectionReplayHandler handler = replayView.getHandler(); handler.initReplayView(replayView); replayView.setLocationRelativeTo(view); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/DataHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -76,7 +76,7 @@ MatrixND matrix = projectService.getLengthStructure(project, container); // close previous opened - JFrame previousFrame = (JFrame)((JAXXContext)parent).getContextValue(JFrame.class, "lengthstructureframe"); + JFrame previousFrame = ((JAXXContext)parent).getContextValue(JFrame.class, "lengthstructureframe"); if (previousFrame != null) { previousFrame.dispose(); } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/control/ControlHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -997,7 +997,7 @@ List<String> species = CoserUtils.sortCollectionWithMapKeys(project.getRefTaxSpeciesMap(), charts.keySet()); // close previous opened - JFrame previousFrame = (JFrame)view.getContextValue(JFrame.class, "comparenumberframe"); + JFrame previousFrame = view.getContextValue(JFrame.class, "comparenumberframe"); if (previousFrame != null) { previousFrame.dispose(); } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectCreationView.jaxx 2014-03-23 13:32:50 UTC (rev 1162) @@ -61,7 +61,7 @@ <JLabel text="coser.ui.project.projectname" /> </cell> <cell> - <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> + <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> </cell> <cell anchor="west" weightx="1" fill="horizontal"> <JTextField id="projectProjectName" text="{getProject().getName()}" /> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectEditView.jaxx 2014-03-23 13:32:50 UTC (rev 1162) @@ -45,7 +45,7 @@ <JLabel text="coser.ui.project.projectname" /> </cell> <cell> - <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> + <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> </cell> <cell anchor="west" weightx="1" fill="horizontal"> <JTextField id="projectProjectName" enabled="false" text="{getProject().getName()}" /> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -98,7 +98,7 @@ */ public void selectInputFile(ProjectCreationView projectView, JTextField textComponent) { CoserConfig config = projectView.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = selectFileChooser.showOpenDialog(projectView); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectOpenView.jaxx 2014-03-23 13:32:50 UTC (rev 1162) @@ -30,7 +30,7 @@ <JLabel text="coser.ui.project.project" /> </cell> <cell anchor="north"> - <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> + <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator}' /> </cell> <cell fill="both" weightx="1"> <JScrollPane> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/project/ProjectSummaryView.jaxx 2014-03-23 13:32:50 UTC (rev 1162) @@ -32,7 +32,7 @@ <JLabel text="coser.ui.project.summary.path" /> </cell> <cell anchor="west" weightx="1" fill="horizontal"> - <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getProjectsDirectory().getAbsolutePath() + java.io.File.separator + getProject().getName()}' /> + <JLabel text='{getContextValue(fr.ifremer.coser.CoserConfig.class).getRSufiProjectsDirectory().getAbsolutePath() + java.io.File.separator + getProject().getName()}' /> </cell> </row> <row> Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -124,6 +124,8 @@ // auto-select publish map view.getSelectedResultTableModel().getMapResults().add(resultData); + // auto-select publish raw data + view.getSelectedResultTableModel().getPublishDataResults().add(resultData); } } } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultTableModel.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -103,21 +103,24 @@ String result = null; switch (column) { case 0: - result = t("coser.ui.uploadresult.creationDate"); + result = t("coser.ui.uploadresult.resultType"); break; case 1: - result = t("coser.ui.uploadresult.path"); + result = t("coser.ui.uploadresult.creationDate"); break; case 2: - result = t("coser.ui.uploadresult.zone"); + result = t("coser.ui.uploadresult.path"); break; case 3: - result = t("coser.ui.uploadresult.indicatorResult"); + result = t("coser.ui.uploadresult.zone"); break; case 4: - result = t("coser.ui.uploadresult.mapResult"); + result = t("coser.ui.uploadresult.indicatorResult"); break; case 5: + result = t("coser.ui.uploadresult.mapResult"); + break; + case 6: result = t("coser.ui.uploadresult.publishData"); break; } @@ -129,16 +132,16 @@ Class<?> result = null; switch (columnIndex) { case 0: - result = Date.class; + result = String.class; break; case 1: - result = String[].class; + result = Date.class; break; case 2: - result = String.class; + result = String[].class; break; case 3: - result = Boolean.class; + result = String.class; break; case 4: result = Boolean.class; @@ -146,15 +149,18 @@ case 5: result = Boolean.class; break; + case 6: + result = Boolean.class; + break; } return result; } @Override public int getColumnCount() { - int result = 3; + int result = 4; if (selected) { - result = 6; + result = 7; } return result; } @@ -167,21 +173,24 @@ GlobalResult data = resultPaths.get(rowIndex); switch (columnIndex) { case 0: - result = data.getCreationDate(); + result = data.isRsufi() ? "RSufi" : "EchoBase"; break; case 1: - result = data; + result = data.getCreationDate(); break; case 2: - result = data.getZone(); + result = data; break; case 3: - result = indicatorResults.contains(data); + result = data.getZone(); break; case 4: - result = mapResults.contains(data); + result = indicatorResults.contains(data); break; case 5: + result = mapResults.contains(data); + break; + case 6: result = publishDataResults.contains(data); break; } @@ -194,17 +203,7 @@ GlobalResult data = resultPaths.get(rowIndex); - boolean editable; - if (data.isEchoBase()) { - - // can only edit publish data column - editable = columnIndex >= 5; - } else { - - // can edit indicator - map and publish data columns - editable = columnIndex >= 3; - } - + boolean editable = !data.isEchoBase() && columnIndex >= 4; return editable; } @@ -213,21 +212,21 @@ GlobalResult data = resultPaths.get(rowIndex); - if (columnIndex == 3) { + if (columnIndex == 4) { Boolean bValue = (Boolean) aValue; if (bValue) { indicatorResults.add(data); } else { indicatorResults.remove(data); } - } else if (columnIndex == 4) { + } else if (columnIndex == 5) { Boolean bValue = (Boolean) aValue; if (bValue) { mapResults.add(data); } else { mapResults.remove(data); } - } else if (columnIndex == 5) { + } else if (columnIndex == 6) { Boolean bValue = (Boolean) aValue; if (bValue) { publishDataResults.add(data); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/publication/GlobalResultZoneRenderer.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -59,7 +59,7 @@ } Object localValue = value; - if (value != null && value instanceof String) { + if (column > 0 && value != null && value instanceof String) { String zoneId = (String) value; localValue = zoneMap.getZoneFullName(zoneId); } 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/result/ResultHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -273,7 +273,7 @@ */ public void selectExportDirectory(ExportUploadDialog view, JTextField textComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = selectFileChooser.showOpenDialog(view); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SelectionHandler.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1154,7 +1154,7 @@ List<String> species = view.getSelectionSizeAllYearListModel().getSpecies(); // close previous opened - JFrame previousFrame = (JFrame)view.getContextValue(JFrame.class, "comparenumberframe"); + JFrame previousFrame = view.getContextValue(JFrame.class, "comparenumberframe"); if (previousFrame != null) { previousFrame.dispose(); } @@ -1234,7 +1234,7 @@ List<String> selectedSpecies = new ArrayList<String>(view.getSelectedSpeciesListModel().getSpecies()); Object[] selectedSelectedSpecies = view.getSelectedSpeciesList().getSelectedValues(); for (Object singleSelectedSelectedSpecies : selectedSelectedSpecies) { - selectedSpecies.remove((String)singleSelectedSelectedSpecies); + selectedSpecies.remove(singleSelectedSelectedSpecies); filteredSpecies.add((String)singleSelectedSelectedSpecies); } @@ -1476,7 +1476,7 @@ */ public void selectResultFile(SelectionAddResultDialog view, JTextField textComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = selectFileChooser.showOpenDialog(view); @@ -1494,7 +1494,7 @@ */ public void selectMapsDirectory(SelectionAddResultDialog view, JTextField textComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = selectFileChooser.showOpenDialog(view); @@ -1512,7 +1512,7 @@ */ public void selectResultFileOrDirectory(SelectionAddResultDialog view, JList listComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int result = selectFileChooser.showOpenDialog(view); @@ -1530,7 +1530,7 @@ */ public void selectResultFileOrDirectory(SelectionEditResultDialog view, JList listComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int result = selectFileChooser.showOpenDialog(view); @@ -1548,7 +1548,7 @@ */ public void selectResultFileOrDirectory(SelectionFilesView view, JList listComponent) { CoserConfig config = view.getContextValue(CoserConfig.class); - JFileChooser selectFileChooser = getFileChooserInstance(config.getProjectsDirectory()); + JFileChooser selectFileChooser = getFileChooserInstance(config.getRSufiProjectsDirectory()); selectFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int result = selectFileChooser.showOpenDialog(view); Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/selection/SpeciesListOccDensRenderer.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -63,7 +63,7 @@ double occurrence = model.getOccurrence(species); double density = model.getDensity(species); - String speciesText = (String)species; + String speciesText = species; if (reftaxSpecies.containsKey(species)) { speciesText = reftaxSpecies.get(species); } Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/widgets/AccordionPane.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -136,7 +136,7 @@ } this.selected = num; for (int i = 0; i < children.size(); i++) { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) children + AccordionPaneSubPanel subPanel = children .get(i); // subPanel.child.setVisible ( i == num // || ( i == this.previouslySelected && showAnimation ) ); @@ -212,7 +212,7 @@ * the new title for the specified pane. */ public void setTitleAt(int index, String newTitle) { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children + AccordionPaneSubPanel subPanel = this.children .get(index); subPanel.titleLabel.setText(newTitle); } @@ -225,7 +225,7 @@ * @return the text title of the specified pane */ public String getTitleAt(int index) { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children + AccordionPaneSubPanel subPanel = this.children .get(index); return subPanel.titleLabel.getText(); } @@ -237,7 +237,7 @@ * @param icon */ public void setIconAt(int index, Icon icon) { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children + AccordionPaneSubPanel subPanel = this.children .get(index); subPanel.titleLabel.setIcon(icon); } @@ -250,7 +250,7 @@ * @return component */ public Component getComponentAt(int index) { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children + AccordionPaneSubPanel subPanel = this.children .get(index); return subPanel.child; } @@ -261,7 +261,7 @@ * @return the currently selected component */ public Component getSelectedComponent() { - AccordionPaneSubPanel subPanel = (AccordionPaneSubPanel) this.children + AccordionPaneSubPanel subPanel = this.children .get(this.selected); return subPanel.child; } 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_en_GB.properties 2014-03-23 13:32:50 UTC (rev 1162) @@ -299,6 +299,7 @@ coser.ui.uploadresult.path=Result path coser.ui.uploadresult.publishData=Allow source data coser.ui.uploadresult.removeResults=Remove results +coser.ui.uploadresult.resultType=Result type coser.ui.uploadresult.resultsextracted=Result extracted. coser.ui.uploadresult.resultsuploaded=Results published. coser.ui.uploadresult.resultsuploaderror=Result upload fails for reason \: %s 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 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-ui/src/main/resources/i18n/coser-ui_fr_FR.properties 2014-03-23 13:32:50 UTC (rev 1162) @@ -299,6 +299,7 @@ coser.ui.uploadresult.path=Chemin du résultats coser.ui.uploadresult.publishData=Autoriser les données de base coser.ui.uploadresult.removeResults=Supprimer le résultat +coser.ui.uploadresult.resultType=Type coser.ui.uploadresult.resultsextracted=Résultats extraits. coser.ui.uploadresult.resultsuploaded=Résultats publiés. coser.ui.uploadresult.resultsuploaderror=Echec de l'envoi des résultats pour la raison \: %s Modified: trunk/coser-web/pom.xml =================================================================== --- trunk/coser-web/pom.xml 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/pom.xml 2014-03-23 13:32:50 UTC (rev 1162) @@ -98,6 +98,11 @@ <scope>runtime</scope> </dependency> <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-json-plugin</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </dependency> Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebConfig.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -25,7 +25,7 @@ import org.nuiton.config.ConfigOptionDef; import org.nuiton.util.Version; -import static org.nuiton.i18n.I18n.t; +import static org.nuiton.i18n.I18n.n; /** * Coser web configuration. @@ -94,12 +94,12 @@ CONTEXT_NAME(APP_NAME, null, String.class, "coser"), // see : http://www.nuiton.org/issues/1862 ENCODING_HACK(CONTEXT_NAME.getDefaultValue() + "." + CONFIG_ENCODING, null, String.class, "UTF-8"), - CONFIG_FILE(CONTEXT_NAME.defaultValue + "." + CONFIG_FILE_NAME, t("coser.config.config.file.description"), String.class, "coserweb.properties"), - APPLICATION_VERSION("coser.application.version", t("coser.config.application.version.description"), Version.class, null), - ADMIN_EMAIL("coser.admin.email", t("coser.config.config.file.description"), String.class, "harmonie@ifremer.fr"), - ADMIN_LOGIN("coser.admin.login", t("coser.config.admin.login.description"), String.class, null), - ADMIN_PASSWORD("coser.admin.password", t("coser.config.admin.password.description"), String.class, null), - ANALYTICS_ID("coser.analytics.id", t("coser.config.analytics.id.description"), String.class, "UA-27739588-1"); + CONFIG_FILE(CONTEXT_NAME.defaultValue + "." + CONFIG_FILE_NAME, n("coser.config.config.file.description"), String.class, "coserweb.properties"), + APPLICATION_VERSION("coser.application.version", n("coser.config.application.version.description"), Version.class, null), + ADMIN_EMAIL("coser.admin.email", n("coser.config.config.file.description"), String.class, "harmonie@ifremer.fr"), + ADMIN_LOGIN("coser.admin.login", n("coser.config.admin.login.description"), String.class, null), + ADMIN_PASSWORD("coser.admin.password", n("coser.config.admin.password.description"), String.class, null), + ANALYTICS_ID("coser.analytics.id", n("coser.config.analytics.id.description"), String.class, "UA-27739588-1"); private final String key; Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceFactory.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,80 +0,0 @@ -/* - * #%L - * Coser :: Web - * %% - * 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 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.coser.web; - -import java.util.Locale; - -import org.nuiton.i18n.I18n; -import org.nuiton.config.ArgumentsParserException; - -import fr.ifremer.coser.services.WebService; - -/** - * Coser service singleton factory. - * - * @author chatellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -@Deprecated -public class ServiceFactory { - - protected static CoserWebConfig coserConfig; - - protected static WebService webService; - - static { - // on a pas trop de locale là :( - I18n.init(null, (Locale)null); - } - - /** - * Get application config configuration. - * - * @return configuration - */ - public static synchronized CoserWebConfig getCoserConfig() { - if (coserConfig == null) { - coserConfig = new CoserWebConfig(); - try { - coserConfig.parse(); - } catch (ArgumentsParserException ex) { - throw new CoserWebException("Can't read configuration", ex); - } - } - return coserConfig; - } - - /** - * Get web service. - * - * @return web service - */ - public static synchronized WebService getWebService() { - if (webService == null) { - webService = new WebService(getCoserConfig()); - } - return webService; - } -} Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -22,6 +22,9 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; +import com.opensymphony.xwork2.ActionSupport; +import fr.ifremer.coser.bean.ZoneMap; import fr.ifremer.coser.result.CoserRequest; import fr.ifremer.coser.result.CoserRequestContext; import fr.ifremer.coser.result.repository.ResultRepositoryType; @@ -30,12 +33,12 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.result.MapResult; import fr.ifremer.coser.services.WebResultService; -import fr.ifremer.coser.web.actions.common.CoserAction; import java.io.File; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; /** * Wrap any call to business layer. @@ -48,13 +51,13 @@ //TODO Inject this in action public class ServiceHelper { - protected final CoserAction action; + protected final ActionSupport action; protected final CoserWebApplicationContext applicationContext; protected final WebResultService webResultService; - public ServiceHelper(CoserAction action) { + public ServiceHelper(ActionSupport action) { Preconditions.checkNotNull(action); this.applicationContext = CoserWebApplicationContext.get(); this.action = action; @@ -82,6 +85,17 @@ return applicationContext.getZoneMap().getZoneByFacade(); } + public Map<String, String> getZonesForFacade(String facade) { + ZoneMap zoneMap = applicationContext.getZoneMap(); + List<String> zoneIds = zoneMap.getZonesForFacade(facade); + Map<String, String> map = Maps.newHashMap(); + for (String zoneId : zoneIds) { + String zoneName = zoneMap.getZoneFullNameWithNoFacade(zoneId); + map.put(zoneId, zoneName); + } + return map; + } + public Map<String, String> getZonePictures() { return applicationContext.getZoneMap().getZonePictures(); } @@ -114,6 +128,10 @@ // --- Indicator methods ----------------------------------------------- // // --------------------------------------------------------------------- // + public Set<String> getIndicatorIds() { + return applicationContext.getIndicatorMap().getIds(); + } + public String getIndicatorDisplayName(CoserRequest request, String indicator) { Map<String, String> availableIndicators = toMap(request); String displayName = availableIndicators.get(indicator); Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/DocumentsAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,7 +21,7 @@ package fr.ifremer.coser.web.actions; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; /** * Documents action. @@ -32,7 +32,7 @@ * Last update : $Date$ * By : $Author$ */ -public class DocumentsAction extends CoserAction { +public class DocumentsAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,7 +21,7 @@ package fr.ifremer.coser.web.actions; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.struts2.ServletActionContext; import javax.servlet.http.HttpServletRequest; @@ -36,7 +36,7 @@ * Last update : $Date$ * By : $Author$ */ -public class IndexAction extends CoserAction { +public class IndexAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/LocaleAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,7 +21,7 @@ package fr.ifremer.coser.web.actions; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; @@ -34,7 +34,7 @@ * Last update : $Date$ * By : $Author$ */ -public class LocaleAction extends CoserAction { +public class LocaleAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/QualityAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,7 +21,7 @@ package fr.ifremer.coser.web.actions; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; /** * Quality action. @@ -32,7 +32,7 @@ * Last update : $Date$ * By : $Author$ */ -public class QualityAction extends CoserAction { +public class QualityAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/SurveyAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,7 +21,7 @@ package fr.ifremer.coser.web.actions; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; /** * Survey description action. @@ -32,7 +32,7 @@ * Last update : $Date$ * By : $Author$ */ -public class SurveyAction extends CoserAction { +public class SurveyAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = -7450643911834502103L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/UploadResultAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -22,7 +22,7 @@ package fr.ifremer.coser.web.actions; import fr.ifremer.coser.web.CoserWebConfig; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.ServletActionContext; @@ -42,7 +42,7 @@ * Last update : $Date$ * By : $Author$ */ -public class UploadResultAction extends CoserAction { +public class UploadResultAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3887268253160622587L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,32 +23,24 @@ import fr.ifremer.coser.result.ResultType; import fr.ifremer.coser.result.request.DeleteResultsRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.struts2.convention.annotation.InterceptorRef; -import org.apache.struts2.convention.annotation.InterceptorRefs; -import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import java.util.List; /** * Project list action. + * <p/> + * Last update : $Date$ + * By : $Author$ * * @author chatellier * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ */ -@ParentPackage("admin") -@InterceptorRefs({ - @InterceptorRef("loginInterceptor"), - @InterceptorRef("defaultStack") - }) -@Result(name = "success", type = "redirect", location = "list-projects") -public class DeleteProjectsAction extends CoserAction { +@Result(type = "redirect", location = "list-projects") +public class DeleteProjectsAction extends AbstractCoserAction { /** serialVersionUID. */ private static final long serialVersionUID = 6024588562104111883L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/IndexAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,26 +21,18 @@ package fr.ifremer.coser.web.actions.admin; -import fr.ifremer.coser.web.actions.common.CoserAction; -import org.apache.struts2.convention.annotation.InterceptorRef; -import org.apache.struts2.convention.annotation.InterceptorRefs; -import org.apache.struts2.convention.annotation.ParentPackage; +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; /** * Admin index action. * + * Last update : $Date$ + * By : $Author$ + * * @author chatellier * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ */ -@ParentPackage("admin") -@InterceptorRefs({ - @InterceptorRef("loginInterceptor"), - @InterceptorRef("defaultStack") - }) -public class IndexAction extends CoserAction { +public class IndexAction extends AbstractCoserAction { /** serialVersionUID. */ private static final long serialVersionUID = 6024588562104111883L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -26,12 +26,9 @@ import fr.ifremer.coser.result.repository.ResultRepositoryType; import fr.ifremer.coser.result.request.GetAllResultsRequest; import fr.ifremer.coser.web.CoserWebException; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.struts2.convention.annotation.InterceptorRef; -import org.apache.struts2.convention.annotation.InterceptorRefs; -import org.apache.struts2.convention.annotation.ParentPackage; import java.util.List; import java.util.Map; @@ -40,18 +37,13 @@ /** * Project list action. * + * Last update : $Date$ + * By : $Author$ + * * @author chatellier * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ */ -@ParentPackage("admin") -@InterceptorRefs({ - @InterceptorRef("loginInterceptor"), - @InterceptorRef("defaultStack") - }) -public class ListProjectsAction extends CoserAction { +public class ListProjectsAction extends AbstractCoserAction { /** serialVersionUID. */ private static final long serialVersionUID = 6024588562104111883L; Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,40 +0,0 @@ -/* - * #%L - * Coser :: Web - * %% - * Copyright (C) 2011 Codelutin, Chatellier Eric - * %% - * 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.coser.web.actions.admin; - -import fr.ifremer.coser.web.actions.common.CoserAction; - -/** - * Login action. - * - * @author chatellier - * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ - */ -public class LoginAction extends CoserAction { - - /** serialVersionUID. */ - private static final long serialVersionUID = -1576602720835497842L; - -} Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,73 +0,0 @@ -/* - * #%L - * Coser :: Web - * %% - * Copyright (C) 2011 Codelutin, Chatellier Eric - * %% - * 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.coser.web.actions.admin; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.interceptor.Interceptor; -import org.apache.struts2.StrutsStatics; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -/** - * Authentication interceptor. - * - * @author chatellier - * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ - */ -public class LoginInterceptor implements Interceptor { - - /** serialVersionUID. */ - private static final long serialVersionUID = -5760224375232019437L; - - /* - * @see com.opensymphony.xwork2.interceptor.Interceptor#init() - */ - @Override - public void init() { - - } - - public String intercept(ActionInvocation invocation) throws Exception { - ActionContext context = invocation.getInvocationContext(); - HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST); - HttpSession session = request.getSession(true); - Object login = session.getAttribute("login"); - if (login == null) { - return "redirect-login"; - } else { - return invocation.invoke(); - } - } - - /* - * @see com.opensymphony.xwork2.interceptor.Interceptor#destroy() - */ - @Override - public void destroy() { - - } -} Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,103 +0,0 @@ -/* - * #%L - * Coser :: Web - * %% - * 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 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.coser.web.actions.admin; - -import fr.ifremer.coser.web.CoserWebConfig; -import fr.ifremer.coser.web.actions.common.CoserAction; -import org.apache.struts2.convention.annotation.Result; -import org.apache.struts2.interceptor.SessionAware; -import org.nuiton.util.StringUtil; - -import java.util.Map; - -/** - * Perform login action. - * - * @author chatellier - * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ - */ -@Result(name = "success", type = "redirect", location = "index") -public class PerformLoginAction extends CoserAction implements SessionAware { - - /** serialVersionUID. */ - private static final long serialVersionUID = -1576602720835497842L; - - protected String login; - - protected String password; - - private Map<String, Object> session; - - public void setLogin(String login) { - this.login = login; - } - - public void setPassword(String password) { - this.password = password; - } - - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override - public String execute() throws Exception { - CoserWebConfig config = getService().getConfig(); - if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) { - session.put("login", login); - return SUCCESS; - } else { - addActionError("Invalid login/password"); - return INPUT; - } - } - - /** - * Check if sha1 password equals to config password. - * <p/> - * Config password can be plain or sha1 encoded. - * - * @param config config - * @param password password to check - * @return equality - */ - protected boolean equalsSHA1Password(CoserWebConfig config, String password) { - - // first test sha1 equality - String configSha1Password = config.getAdminPassword(); - String sha1Password = StringUtil.encodeSHA1(password); - boolean result = configSha1Password.equals(sha1Password); - - // second test to encode sha1 of plain password - if (!result) { - configSha1Password = StringUtil.encodeSHA1(configSha1Password); - result = configSha1Password.equals(sha1Password); - } - - return result; - } - -} Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -21,27 +21,22 @@ * #L% */ -import fr.ifremer.coser.web.actions.common.CoserAction; -import org.apache.struts2.convention.annotation.InterceptorRef; -import org.apache.struts2.convention.annotation.InterceptorRefs; -import org.apache.struts2.convention.annotation.ParentPackage; +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; import org.apache.struts2.convention.annotation.Result; /** * To reload all projects from disk configuration. * <p/> * Created on 3/12/14. + * <p/> + * Last update : $Date$ + * By : $Author$ * * @author Tony Chemit <chemit@codelutin.com> * @since 1.5 */ -@ParentPackage("admin") -@InterceptorRefs({ - @InterceptorRef("loginInterceptor"), - @InterceptorRef("defaultStack") - }) -@Result(name = "success", type = "redirect", location = "list-projects") -public class ReloadProjectsAction extends CoserAction { +@Result(type = "redirect", location = "list-projects") +public class ReloadProjectsAction extends AbstractCoserAction { private static final long serialVersionUID = 1L; Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,7 @@ +/** + * Pakage for admin actions (need to be loggued in). + */ +@ParentPackage("admin") +package fr.ifremer.coser.web.actions.admin; + +import org.apache.struts2.convention.annotation.ParentPackage; \ No newline at end of file Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/package-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginAction.java) =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,38 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2011 Codelutin, Chatellier Eric + * %% + * 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.coser.web.actions.auth; + +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; + +/** + * Login action. + * <p/> + * Last update : $Date$ + * By : $Author$ + * + * @author chatellier + * @version $Revision$ + */ +public class LoginAction extends AbstractCoserAction { + + private static final long serialVersionUID = 1L; +} Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/LoginInterceptor.java) =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LoginInterceptor.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,59 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2011 Codelutin, Chatellier Eric, Chemit Tony + * %% + * 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.coser.web.actions.auth; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; + +import java.util.Map; + +/** + * Authentication interceptor. + * <p/> + * Last update : $Date$ + * By : $Author$ + * + * @author chatellier + * @version $Revision$ + */ +public class LoginInterceptor extends AbstractInterceptor { + + private static final long serialVersionUID = 1L; + + public static final String SESSION_PARAMETER_LOGIN = "login"; + + @Override + public String intercept(ActionInvocation invocation) throws Exception { + ActionContext context = invocation.getInvocationContext(); + Map<String, Object> session = context.getSession(); + Object login = session.get(SESSION_PARAMETER_LOGIN); + String result; + if (login == null) { + // do login + result = "redirect-login"; + } else { + result = invocation.invoke(); + } + return result; + } +} Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,66 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2011 Codelutin, Chemit Tony + * %% + * 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.coser.web.actions.auth; + +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts2.convention.annotation.Result; +import org.apache.struts2.interceptor.SessionAware; + +import java.util.Map; + +/** + * Logout action. + * <p/> + * Last update : $Date$ + * By : $Author$ + * + * @author tchemit + * @version $Revision$ + */ +@Result(type = "redirect", location = "/index") +public class LogoutAction extends AbstractCoserAction implements SessionAware { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(LogoutAction.class); + + protected transient Map<String, Object> session; + + @Override + public void setSession(Map<String, Object> session) { + this.session = session; + } + + @Override + public String execute() throws Exception { + Object login = session.remove(LoginInterceptor.SESSION_PARAMETER_LOGIN); + if (login != null) { + if (log.isInfoEnabled()) { + log.info("Logout for user: " + login); + } + } + return SUCCESS; + } +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/LogoutAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java (from rev 1161, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java) =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/PerformLoginAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,113 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony + * %% + * 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.coser.web.actions.auth; + +import fr.ifremer.coser.web.CoserWebConfig; +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts2.convention.annotation.Result; +import org.apache.struts2.interceptor.SessionAware; +import org.nuiton.util.StringUtil; + +import java.util.Map; + +/** + * Perform login action. + * <p/> + * Last update : $Date$ + * By : $Author$ + * + * @author chatellier + * @version $Revision$ + */ +@Result(type = "redirect", location = "/admin/index") +public class PerformLoginAction extends AbstractCoserAction implements SessionAware { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(PerformLoginAction.class); + + protected String login; + + protected String password; + + protected transient Map<String, Object> session; + + public void setLogin(String login) { + this.login = login; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void setSession(Map<String, Object> session) { + this.session = session; + } + + @Override + public String execute() throws Exception { + CoserWebConfig config = getService().getConfig(); + String result; + if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) { + if (log.isInfoEnabled()) { + log.info("Successfull login: "+login); + } + session.put(LoginInterceptor.SESSION_PARAMETER_LOGIN, login); + + result = SUCCESS; + } else { + addActionError("Invalid login/password"); + result = INPUT; + } + return result; + } + + /** + * Check if sha1 password equals to config password. + * <p/> + * Config password can be plain or sha1 encoded. + * + * @param config config + * @param password password to check + * @return equality + */ + protected boolean equalsSHA1Password(CoserWebConfig config, String password) { + + // first test sha1 equality + String configSha1Password = config.getAdminPassword(); + String sha1Password = StringUtil.encodeSHA1(password); + boolean result = configSha1Password.equals(sha1Password); + + // second test to encode sha1 of plain password + if (!result) { + configSha1Password = StringUtil.encodeSHA1(configSha1Password); + result = configSha1Password.equals(sha1Password); + } + + return result; + } + +} Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,4 @@ +/** + * Package for auth actions (login-logout). + */ +package fr.ifremer.coser.web.actions.auth; Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/auth/package-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -24,7 +24,7 @@ import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest; import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest; import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import java.util.Map; @@ -39,7 +39,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphAction extends CoserAction { +public class GraphAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -24,7 +24,7 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest; import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; @@ -44,7 +44,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphDataAction extends CoserAction { +public class GraphDataAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -24,7 +24,7 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest; import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; @@ -44,7 +44,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphDownloadAction extends CoserAction { +public class GraphDownloadAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,75 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony + * %% + * 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.coser.web.actions.common; + +import fr.ifremer.coser.result.CoserRequest; +import fr.ifremer.coser.result.CoserRequestBuilder; +import fr.ifremer.coser.web.ServiceHelper; +import org.nuiton.web.struts2.BaseAction; + +import java.util.Locale; + +/** + * Created on 3/21/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +public abstract class AbstractCoserAction extends BaseAction { + + private static final long serialVersionUID = 1L; + + /** + * To access business layer. + * + * @since 1.5 + */ + protected transient ServiceHelper service; + + /** + * @return a new request builder. + * @since 1.5 + */ + protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Class<R> requestType) { + return requestBuilder(getLocale(), requestType); + } + + /** + * @param locale locale to use (while using execute and wait action we keep the locale in session...) + * @param requestType type of request to build + * @return a new request builder. + * @since 1.5 + */ + protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) { + return CoserRequestBuilder.newBuilder(locale, requestType); + } + + /** + * @return service helper for this action + * @since 1.5 + */ + protected ServiceHelper getService() { + if (service == null) { + service = new ServiceHelper(this); + } + return service; + } +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java (from rev 1157, trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java) =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/AbstractCoserJspAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,74 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony + * %% + * 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.coser.web.actions.common; + +import fr.ifremer.coser.web.CoserWebConfig; + +/** + * Toutes les actions de type *Jsp* doivent étendre celle ci. Contient le code commun + * récurent, et notamment les actions utilisé par le layout et devant + * être presentes sur toutes les pages. + * + * @author chatellier + * @version $Revision$ + * <p/> + * Last update : $Date$ + * By : $Author$ + */ +public abstract class AbstractCoserJspAction extends AbstractCoserAction { + + /** serialVersionUID. */ + private static final long serialVersionUID = 311574866032741326L; + + /** + * Recupere l'email dans la configuration. + * + * @return admin email + */ + public String getAdminEmail() { + CoserWebConfig config = getService().getConfig(); + String email = config.getAdminEmail(); + return email; + } + + /** + * Recupere l'email dans la configuration. + * + * @return admin email + */ + public String getApplicationVersion() { + CoserWebConfig config = getService().getConfig(); + String email = config.getApplicationVersion(); + return email; + } + + /** + * Get analytics id from configuration. + * + * @return analytics id + */ + public String getAnalyticsId() { + CoserWebConfig config = getService().getConfig(); + String id = config.getAnalyticsId(); + return id; + } +} Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonFacade.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -32,7 +32,7 @@ * Last update : $Date$ * By : $Author$ */ -public abstract class CommonFacade extends CoserAction { +public abstract class CommonFacade extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -35,7 +35,7 @@ * Last update : $Date$ * By : $Author$ */ -public abstract class CommonIndicator extends CoserAction { +public abstract class CommonIndicator extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -35,7 +35,7 @@ * Last update : $Date$ * By : $Author$ */ -public abstract class CommonZone extends CoserAction { +public abstract class CommonZone extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,116 +0,0 @@ -/* - * #%L - * Coser :: Web - * %% - * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric, Chemit Tony - * %% - * 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.coser.web.actions.common; - -import fr.ifremer.coser.result.CoserRequest; -import fr.ifremer.coser.result.CoserRequestBuilder; -import fr.ifremer.coser.web.CoserWebConfig; -import fr.ifremer.coser.web.ServiceHelper; -import org.nuiton.web.struts2.BaseAction; - -import java.util.Locale; - -/** - * Toutes les actions doivent étendre celle ci. Contient le code commun - * récurent, et notamment les actions utilisé par le layout et devant - * être presentes sur toutes les pages. - * - * @author chatellier - * @version $Revision$ - * <p/> - * Last update : $Date$ - * By : $Author$ - */ -public abstract class CoserAction extends BaseAction { - - /** serialVersionUID. */ - private static final long serialVersionUID = 311574866032741326L; - - /** - * To access business layer. - * - * @since 1.5 - */ - protected transient ServiceHelper service; - - /** - * Recupere l'email dans la configuration. - * - * @return admin email - */ - public String getAdminEmail() { - CoserWebConfig config = getService().getConfig(); - String email = config.getAdminEmail(); - return email; - } - - /** - * Recupere l'email dans la configuration. - * - * @return admin email - */ - public String getApplicationVersion() { - CoserWebConfig config = getService().getConfig(); - String email = config.getApplicationVersion(); - return email; - } - - /** - * Get analytics id from configuration. - * - * @return analytics id - */ - public String getAnalyticsId() { - CoserWebConfig config = getService().getConfig(); - String id = config.getAnalyticsId(); - return id; - } - - /** - * @return a new request builder. - * @since 1.5 - */ - protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Class<R> requestType) { - return requestBuilder(getLocale(), requestType); - } - - /** - * @param locale locale to use (while using execute and wait action we keep the locale in session...) - * @param requestType type of request to build - * @return a new request builder. - * @since 1.5 - */ - protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) { - return CoserRequestBuilder.newBuilder(locale, requestType); - } - - /** - * @return service helper for this action - * @since 1.5 - */ - protected ServiceHelper getService() { - if (service == null) { - service = new ServiceHelper(this); - } - return service; - } -} Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,44 @@ +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chemit Tony + * %% + * 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.coser.web.actions.json; + +import fr.ifremer.coser.web.actions.common.AbstractCoserAction; +import org.apache.struts2.convention.annotation.ParentPackage; +import org.apache.struts2.convention.annotation.Result; +import org.apache.struts2.convention.annotation.Results; + +/** + * Json abstract action. + * <p/> + * Just define in your implementation the getter to expose. + * <p/> + * Created on 3/21/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +@ParentPackage("json-default") +@Results({@Result(name = AbstractCoserJsonAction.SUCCESS, type = "json")}) +public abstract class AbstractCoserJsonAction extends AbstractCoserAction { + + private static final long serialVersionUID = 1L; + +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/AbstractCoserJsonAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,47 @@ +package fr.ifremer.coser.web.actions.json; + +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony + * %% + * 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% + */ + +import java.util.Map; + +/** + * Get universe of facades. + * <p/> + * Created on 3/21/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +public class GetFacadesAction extends AbstractCoserJsonAction { + + private static final long serialVersionUID = 1L; + + protected Map<String, String> data; + + public Map<String, String> getData() { + if (data == null) { + data = getService().getFacades(); + } + return data; + } + +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetFacadesAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,47 @@ +package fr.ifremer.coser.web.actions.json; + +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony + * %% + * 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% + */ + +import java.util.Set; + +/** + * Get all indicator ids. + * <p/> + * Created on 3/21/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +public class GetIndicatorsAction extends AbstractCoserJsonAction { + + private static final long serialVersionUID = 1L; + + protected Set<String> data; + + public Set<String> getData() { + if (data == null) { + data = getService().getIndicatorIds(); + } + return data; + } + +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetIndicatorsAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,56 @@ +package fr.ifremer.coser.web.actions.json; + +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony + * %% + * 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% + */ + +import java.util.Map; + +/** + * Get all zones for a given facade. + * <p/> + * Created on 3/21/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 1.5 + */ +public class GetZonesForFacadeAction extends AbstractCoserJsonAction { + + private static final long serialVersionUID = 1L; + + /** + * Selected facade. + */ + protected String facade; + + protected Map<String, String> data; + + public void setFacade(String facade) { + this.facade = facade; + } + + public Map<String, String> getData() { + if (data == null) { + data = getService().getZonesForFacade(facade); + } + return data; + } + +} Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/GetZonesForFacadeAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java (rev 0) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,26 @@ +/** + * Place here all json actions. + */ +package fr.ifremer.coser.web.actions.json; + +/* + * #%L + * Coser :: Web + * %% + * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony + * %% + * 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% + */ + Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/json/package-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest; import fr.ifremer.coser.result.request.GetZonesForMapResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; /** * Action index, recupere la liste des resultats. @@ -34,7 +34,7 @@ * Last update : $Date$ * By : $Author$ */ -public class MapAction extends CoserAction { +public class MapAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.request.GetMapResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.convention.annotation.Action; @@ -40,7 +40,7 @@ * Last update : $Date$ * By : $Author$ */ -public class MapDataAction extends CoserAction { +public class MapDataAction extends AbstractCoserJspAction { /** Logger. */ private static final Log log = LogFactory.getLog(MapDataAction.class); Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest; import fr.ifremer.coser.result.request.GetZonesForMapResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,7 +38,7 @@ * Last update : $Date$ * By : $Author$ */ -public class SpeciesAction extends CoserAction { +public class SpeciesAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -24,7 +24,7 @@ import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest; import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest; import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; /** * Affiche le graphique demandé. @@ -37,7 +37,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphAction extends CoserAction { +public class GraphAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; @@ -40,7 +40,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphDataAction extends CoserAction { +public class GraphDataAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; @@ -40,7 +40,7 @@ * Last update : $Date$ * By : $Author$ */ -public class GraphDownloadAction extends CoserAction { +public class GraphDownloadAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -23,7 +23,7 @@ import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest; import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,7 +38,7 @@ * Last update : $Date$ * By : $Author$ */ -public class SpeciesAction extends CoserAction { +public class SpeciesAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 1663244944108703571L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -28,7 +28,7 @@ import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest; import fr.ifremer.coser.result.result.FileResult; import fr.ifremer.coser.util.DataType; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; @@ -56,7 +56,7 @@ @InterceptorRef(value = "execAndWait", params = {"excludeMethods", "execute,quality"}) }) -public class ExtractAction extends CoserAction implements ServletRequestAware { +public class ExtractAction extends AbstractCoserJspAction implements ServletRequestAware { /** serialVersionUID. */ private static final long serialVersionUID = 8497086194191374797L; Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java =================================================================== --- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-23 13:32:50 UTC (rev 1162) @@ -22,7 +22,7 @@ package fr.ifremer.coser.web.actions.source; import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest; -import fr.ifremer.coser.web.actions.common.CoserAction; +import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction; import java.util.Map; @@ -35,7 +35,7 @@ * Last update : $Date$ * By : $Author$ */ -public class SourceAction extends CoserAction { +public class SourceAction extends AbstractCoserJspAction { /** serialVersionUID. */ private static final long serialVersionUID = 3385467755357775199L; Modified: trunk/coser-web/src/main/resources/struts.xml =================================================================== --- trunk/coser-web/src/main/resources/struts.xml 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/resources/struts.xml 2014-03-23 13:32:50 UTC (rev 1162) @@ -43,10 +43,16 @@ <package name="admin" extends="convention-default"> <interceptors> - <interceptor name="loginInterceptor" class="fr.ifremer.coser.web.actions.admin.LoginInterceptor" /> + <interceptor name="loginInterceptor" class="fr.ifremer.coser.web.actions.auth.LoginInterceptor" /> + <interceptor-stack name="loginStack"> + <interceptor-ref name="loginInterceptor"/> + <interceptor-ref name="defaultStack"/> + </interceptor-stack> </interceptors> + <default-interceptor-ref name="loginStack"/> <global-results> - <result name="redirect-login" type="redirect">/admin/login</result> + <result name="redirect-login" type="redirect">/auth/login</result> </global-results> + </package> </struts> Deleted: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp =================================================================== --- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp 2014-03-23 13:32:50 UTC (rev 1162) @@ -1,42 +0,0 @@ -<!-- - #%L - Coser :: Web - %% - 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 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% - --> -<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<%@taglib uri="/struts-tags" prefix="s" %> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title><s:text name="message.admin.title" /></title> - </head> - <body> - - <h2><s:text name="message.admin.title" /></h2> - - <h3><s:text name="message.admin.loginrequiered" /></h3> - - <s:form action="perform-login" method="post"> - <s:actionerror /> - <s:textfield name="login" label="%{getText('message.admin.login')}" /> - <s:password name="password" label="%{getText('message.admin.password')}" /> - <s:submit value="%{getText('message.common.validform')}"/> - </s:form> - - </body> -</html> Copied: trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp (from rev 1161, trunk/coser-web/src/main/webapp/WEB-INF/content/admin/login.jsp) =================================================================== --- trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp (rev 0) +++ trunk/coser-web/src/main/webapp/WEB-INF/content/auth/login.jsp 2014-03-23 13:32:50 UTC (rev 1162) @@ -0,0 +1,42 @@ +<!-- + #%L + Coser :: Web + %% + 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 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% + --> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<%@taglib uri="/struts-tags" prefix="s" %> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title><s:text name="message.admin.title" /></title> + </head> + <body> + + <h2><s:text name="message.admin.title" /></h2> + + <h3><s:text name="message.admin.loginrequiered" /></h3> + + <s:form action="perform-login" method="post"> + <s:actionerror /> + <s:textfield name="login" label="%{getText('message.admin.login')}" /> + <s:password name="password" label="%{getText('message.admin.password')}" /> + <s:submit value="%{getText('message.common.validform')}"/> + </s:form> + + </body> +</html> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-03-20 08:24:15 UTC (rev 1161) +++ trunk/pom.xml 2014-03-23 13:32:50 UTC (rev 1162) @@ -5,7 +5,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom4redmine</artifactId> - <version>5.0.2</version> + <version>5.0.4</version> </parent> <groupId>fr.ifremer</groupId> @@ -84,7 +84,7 @@ <coserI18nBundle>coser-i18n</coserI18nBundle> <!-- Release configuration --> - <releaseEmail>noreply@$forge.codelutin.com</releaseEmail> + <releaseEmailDomain>forge.codelutin.com</releaseEmailDomain> <!-- Versions --> <jaxxVersion>2.8.2</jaxxVersion> @@ -252,6 +252,12 @@ </dependency> <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-json-plugin</artifactId> + <version>${struts.version}</version> + </dependency> + + <dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> <version>${struts.version}</version>
participants (1)
-
tchemit@users.forge.codelutin.com