r587 - in trunk: echobase-entities echobase-entities/src/main/java/fr/ifremer/echobase echobase-entities/src/main/java/fr/ifremer/echobase/entities echobase-entities/src/main/java/fr/ifremer/echobase/io echobase-entities/src/main/java/fr/ifremer/echobase/persistence echobase-entities/src/main/java/fr/ifremer/echobase/services echobase-entities/src/main/resources echobase-entities/src/main/xmi echobase-entities/src/test/java/fr/ifremer/echobase echobase-entities/src/test/java/fr/ifremer/ec
Author: tchemit Date: 2012-09-01 13:28:26 +0200 (Sat, 01 Sep 2012) New Revision: 587 Url: http://forge.codelutin.com/repositories/revision/echobase/587 Log: review application layout (will use now a domain module) + continue internal db refactor + clean some stuffs (from action and much much more...) Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/InputFile.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/JdbcConfiguration.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ServiceFactoryAware.java trunk/echobase-entities/src/main/resources/echobase-workingdb.properties trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryNameAlreadyExistException.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/MissionNameAlreadyExistException.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DecoratorServiceTest.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSessionListener.java Removed: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseEntityHelper.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseTopiaRootContextFactory.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/JdbcConfiguration.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java trunk/echobase-entities/src/main/resources/echobase-datadb.properties trunk/echobase-entities/src/main/resources/topia-h2.properties trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EchoBaseDbMetaTest.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/EchoBaseIOUtil.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceFactory.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java Modified: trunk/echobase-entities/pom.xml trunk/echobase-entities/src/main/xmi/echobase-internal.zargo trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDateConverterTest.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/embeddedapplication/EmbeddedApplicationService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsMapCellImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsVoyageImportService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/DefaultImportStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbService.java trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/EchoBaseDbCreator.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/GearMetadataLoader.java trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationMetadataLoader.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/EchoBaseDbZipCreatorIT.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/TestHelper.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderIT.java trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/CellLoaderIT.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseInternalDbTransactionFilter.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseWorkingDbTransactionFilter.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/AbstractLoadPage.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntity.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetForeignEntities.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ImportTable.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Configure.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Export.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DownloadExportQueryResult.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ExportQueryResult.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetDataProcessingsForVoyage.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVesselsForVoyage.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/ConnectToDbInformations.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Create.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Delete.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/LoginAction.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Update.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckUserIsAdmin.java trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml Modified: trunk/echobase-entities/pom.xml =================================================================== --- trunk/echobase-entities/pom.xml 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/pom.xml 2012-09-01 11:28:26 UTC (rev 587) @@ -200,13 +200,13 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <scope>test</scope> + <scope>provided</scope> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> - <scope>test</scope> + <scope>provided</scope> </dependency> <dependency> Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,274 +0,0 @@ -/* - * #%L - * EchoBase :: Entities - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase; - -import fr.ifremer.echobase.entities.EchoBaseUser; -import fr.ifremer.echobase.entities.ExportQuery; -import fr.ifremer.echobase.entities.WorkingDbConfiguration; -import fr.ifremer.echobase.entities.data.Category; -import fr.ifremer.echobase.entities.data.Cell; -import fr.ifremer.echobase.entities.data.Data; -import fr.ifremer.echobase.entities.data.DataAcquisition; -import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.Echotype; -import fr.ifremer.echobase.entities.data.GearMetadataValue; -import fr.ifremer.echobase.entities.data.LengthAgeKey; -import fr.ifremer.echobase.entities.data.LengthWeightKey; -import fr.ifremer.echobase.entities.data.Operation; -import fr.ifremer.echobase.entities.data.OperationMetadataValue; -import fr.ifremer.echobase.entities.data.Result; -import fr.ifremer.echobase.entities.data.Sample; -import fr.ifremer.echobase.entities.data.SampleData; -import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Transit; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.AcousticInstrument; -import fr.ifremer.echobase.entities.references.AgeCategory; -import fr.ifremer.echobase.entities.references.AreaOfOperation; -import fr.ifremer.echobase.entities.references.Calibration; -import fr.ifremer.echobase.entities.references.CategoryMeaning; -import fr.ifremer.echobase.entities.references.CategoryRef; -import fr.ifremer.echobase.entities.references.CategoryType; -import fr.ifremer.echobase.entities.references.CellMethod; -import fr.ifremer.echobase.entities.references.CellType; -import fr.ifremer.echobase.entities.references.DataMetadata; -import fr.ifremer.echobase.entities.references.DataProtocol; -import fr.ifremer.echobase.entities.references.DataQuality; -import fr.ifremer.echobase.entities.references.DataType; -import fr.ifremer.echobase.entities.references.DepthStratum; -import fr.ifremer.echobase.entities.references.EchotypeCategory; -import fr.ifremer.echobase.entities.references.Gear; -import fr.ifremer.echobase.entities.references.GearCharacteristic; -import fr.ifremer.echobase.entities.references.GearCharacteristicValue; -import fr.ifremer.echobase.entities.references.GearMetadata; -import fr.ifremer.echobase.entities.references.Impacte; -import fr.ifremer.echobase.entities.references.MeasureType; -import fr.ifremer.echobase.entities.references.MeasurementMetadata; -import fr.ifremer.echobase.entities.references.Mission; -import fr.ifremer.echobase.entities.references.OperationEvent; -import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.ReferenceDatum; -import fr.ifremer.echobase.entities.references.ReferenceDatumType; -import fr.ifremer.echobase.entities.references.ReferencingMethod; -import fr.ifremer.echobase.entities.references.SampleDataType; -import fr.ifremer.echobase.entities.references.SampleType; -import fr.ifremer.echobase.entities.references.SexCategory; -import fr.ifremer.echobase.entities.references.SizeCategory; -import fr.ifremer.echobase.entities.references.Species; -import fr.ifremer.echobase.entities.references.SpeciesCategory; -import fr.ifremer.echobase.entities.references.Strata; -import fr.ifremer.echobase.entities.references.TSParameters; -import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.entities.references.VesselType; -import org.nuiton.util.decorator.DecoratorMulti18nProvider; - -import java.util.Locale; - -/** - * Decorator provider. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public class EchoBaseDecoratorProvider extends DecoratorMulti18nProvider { - - @Override - protected void loadDecorators(Locale locale) { - - // EchoBaseUser decorator - registerJXPathDecorator(locale, EchoBaseUser.class, "${email}$s"); - - // ExportQuery decorator - registerJXPathDecorator(locale, ExportQuery.class, "${name}$s - ${description}$s"); - - // WorkingDbConfiguration decorator - registerJXPathDecorator(locale, WorkingDbConfiguration.class, "${url}$s - ${login}$s (${description}$s)"); - - // AcousticInstrument decorator - registerJXPathDecorator(locale, AcousticInstrument.class, "${id}$s"); - - // AgeCategory decorator - registerJXPathDecorator(locale, AgeCategory.class, "${name}$s"); - - // AreaOfOperation decorator - registerJXPathDecorator(locale, AreaOfOperation.class, "${name}$s"); - - // Calibration decorator - registerJXPathDecorator(locale, Calibration.class, "${date}$s - acquisition ${aquisitionMethod}$s"); - - // Category decorator - registerJXPathDecorator(locale, Category.class, "${echotypeLabel}$s ${speciesLabel}$s ${processedAgeLabel}$s ${processedLengthLabel}$s"); - - // CategoryMeaning decorator - registerJXPathDecorator(locale, CategoryMeaning.class, "${name}$s"); - - // CategoryRef decorator - registerJXPathDecorator(locale, CategoryRef.class, "${genusSpecies}$s"); - - // CategoryType decorator - registerJXPathDecorator(locale, CategoryType.class, "${name}$s"); - - // CellMethod decorator - registerJXPathDecorator(locale, CellMethod.class, "${name}$s"); - - // CellType decorator - registerJXPathDecorator(locale, CellType.class, "${name}$s"); - - // DataMetadata decorator - registerJXPathDecorator(locale, DataMetadata.class, "${name}$s - ${standardName}$s"); - - // DataProtocol decorator - registerJXPathDecorator(locale, DataProtocol.class, "${description}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]"); - - // DataQuality decorator - registerJXPathDecorator(locale, DataQuality.class, "${qualityDataFlagValues}$s - ${flagMeanings}$s"); - - // DataType decorator - registerJXPathDecorator(locale, DataType.class, "${name}$s"); - - // DepthStratum decorator - registerJXPathDecorator(locale, DepthStratum.class, "${id}$s - ${meaning}$s"); - - // Echotype decorator - registerJXPathDecorator(locale, Echotype.class, "${id}$s - ${name}$s"); - - // EchotypeCategory decorator - registerJXPathDecorator(locale, EchotypeCategory.class, "${name}$s"); - - // Gear decorator - registerJXPathDecorator(locale, Gear.class, "${name}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]"); - - // GearCaracteristic decorator - registerJXPathDecorator(locale, GearCharacteristic.class, "${name}$s"); - - // GearMetadata decorator - registerJXPathDecorator(locale, GearMetadata.class, "${name}$s (${operationEvent/name}$s)"); - - // GearCharacteristicValue decorator - registerJXPathDecorator(locale, GearCharacteristicValue.class, "${dataValue}$s"); - - // GearMetadataValue decorator - registerJXPathDecorator(locale, GearMetadataValue.class, "${dataValue}$s"); - - // Impacte decorator - registerJXPathDecorator(locale, Impacte.class, "${measurementUnit}$s - ${species/genusSpecies}"); - - // LengthAgeKey decorator - registerJXPathDecorator(locale, LengthAgeKey.class, "Age ${age}$s - Length ${length}"); - - // MeasurementMetadata decorator - registerJXPathDecorator(locale, MeasurementMetadata.class, "${name}$s"); - - // MeasureType decorator - registerJXPathDecorator(locale, MeasureType.class, "${name}$s"); - - // Mission decorator - registerJXPathDecorator(locale, Mission.class, "${name}$s"); - - // OperationEvent decorator - registerJXPathDecorator(locale, OperationEvent.class, "${name}$s"); - - // OperationMetadata decorator - registerJXPathDecorator(locale, OperationMetadata.class, "${name}$s"); - - // ReferenceDatum decorator - registerJXPathDecorator(locale, ReferenceDatum.class, "${id}$s"); - - // ReferenceDatumType decorator - registerJXPathDecorator(locale, ReferenceDatumType.class, "${name}$s"); - - // ReferencingMethod decorator - registerJXPathDecorator(locale, ReferencingMethod.class, "${name}$s"); - - // SampleDataType decorator - registerJXPathDecorator(locale, SampleDataType.class, "${name}$s"); - - // SampleType decorator - registerJXPathDecorator(locale, SampleType.class, "${name}$s - level ${level}$s"); - - // SexCategory decorator - registerJXPathDecorator(locale, SexCategory.class, "${name}$s"); - - // SizeCategory decorator - registerJXPathDecorator(locale, SizeCategory.class, "${name}$s"); - - // Species decorator - registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s (${baracoudaCode}$s)"); - - // SpeciesCategory decorator - registerJXPathDecorator(locale, SpeciesCategory.class, "${species/genusSpecies}$s ${sizeCategoryLabel}$s ${ageCategoryLabel}$s ${sexCategoryLabel}$s"); - - // Strata decorator - registerJXPathDecorator(locale, Strata.class, "Latitude <${minLatitude}$s - ${maxLatitude}$s>, Longitude <${minLongitude}$s - ${maxLongitude}$s>"); - - //TODO - // TSParameters decorator - registerJXPathDecorator(locale, TSParameters.class, "${}$s"); - - // Vessel decorator - registerJXPathDecorator(locale, Vessel.class, "${name}$s"); - - // VesselType decorator - registerJXPathDecorator(locale, VesselType.class, "${name}$s"); - - // LengthWeightKey decorator - registerJXPathDecorator(locale, LengthWeightKey.class, "Species ${species/genusSpecies}$s - a=${aParameter}$s, b=${bParameter}$s"); - - // Cell decorator - registerJXPathDecorator(locale, Cell.class, "${name}$s"); - - // Data decorator - registerJXPathDecorator(locale, Data.class, "${dataValue}$s"); - - // DataAcquisition decorator - registerJXPathDecorator(locale, DataAcquisition.class, "${acousticInstrument/id}$s "); - - // DataProcessing decorator - registerJXPathDecorator(locale, DataProcessing.class, "${id}$s"); - - // Operation decorator - registerJXPathDecorator(locale, Operation.class, "${startDate}$td/%1$tm/%1$tY - ${endDate}$td/%2$tm/%2$tY"); - - // OperationMetadataValue decorator - registerJXPathDecorator(locale, OperationMetadataValue.class, "${operationMetadata/name} - ${dataValue}$s"); - - // Result decorator - registerJXPathDecorator(locale, Result.class, "${resultvalue}$s"); - - // Sample decorator - registerJXPathDecorator(locale, Sample.class, "${resultvalue}$s"); - - // SampleData decorator - registerJXPathDecorator(locale, SampleData.class, "${resultvalue}$s"); - - // Transect decorator - registerJXPathDecorator(locale, Transect.class, "${title}$s - Vessel ${vessel/name}$s"); - - // Transit decorator - registerJXPathDecorator(locale, Transit.class, "${startTime}$td/%1$tm/%1$tY - ${endTime}$td/%2$tm/%2$tY"); - - // Voyage decorator - registerJXPathDecorator(locale, Voyage.class, "${name}$s [ ${startDate}$td/%2$tm/%2$tY - ${endDate}$td/%3$tm/%3$tY ]"); - } -} Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseEntityHelper.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseEntityHelper.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseEntityHelper.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,155 +0,0 @@ -package fr.ifremer.echobase; - -/* - * #%L - * EchoBase :: Entities - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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 org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.Transaction; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaContextFactory; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.TopiaRuntimeException; -import org.nuiton.topia.framework.TopiaContextImplementor; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.Properties; - -/** - * helper about topia context and jdbc connections. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class EchoBaseEntityHelper { - - /** Logger. */ - private static final Log log = LogFactory.getLog(EchoBaseEntityHelper.class); - - public static Connection newJDBCConnection(JdbcConfiguration configuration) throws SQLException { - - String jdbcUrl = configuration.getUrl(); - String login = configuration.getLogin(); - String password = configuration.getPassword(); - - Connection conn = DriverManager.getConnection(jdbcUrl, login, password); - - if (log.isDebugEnabled()) { - log.debug("connexion reussie pour l'utilisateur " + login + - " at [" + jdbcUrl + ']'); - } - - return conn; - } - - public static TopiaContext newTransactionFromRootContext(TopiaContext otherTx) throws TopiaException { - TopiaContext tx = ((TopiaContextImplementor) otherTx).getRootContext().beginTransaction(); - return tx; - } - - public static void releaseRootContext(TopiaContext context) { - - TopiaContextImplementor rootContext = ((TopiaContextImplementor) context).getRootContext(); - - if (log.isInfoEnabled()) { - log.info("release database " + - rootContext.getConfig().get(TopiaContextFactory.CONFIG_URL)); - } - try { - releaseContext(rootContext); - } catch (TopiaException e) { - // we don't want this to throw an exception, wants to close - // all possible opened contexts - if (log.isErrorEnabled()) { - log.error("Could not close context " + rootContext, e); - } - } - } - - public static void releaseContext(TopiaContext rootContext) throws TopiaException { - if (rootContext != null && !rootContext.isClosed()) { - rootContext.closeContext(); - } - } - - public static void checkJDBCConnection(JdbcConfiguration configuration) throws SQLException { - - Connection conn = null; - try { - - conn = newJDBCConnection(configuration); - - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - if (log.isErrorEnabled()) { - log.error("Could not close properly connection to " - + configuration.getUrl(), e); - } - } - } - } - } - - public static JdbcConfiguration newJdbcConfiguration(Properties dbConf) { - - JdbcConfiguration result = new JdbcConfiguration(); - result.setUrl(dbConf.getProperty(TopiaContextFactory.CONFIG_URL)); - result.setLogin(dbConf.getProperty(TopiaContextFactory.CONFIG_USER)); - result.setPassword(dbConf.getProperty(TopiaContextFactory.CONFIG_PASS)); - return result; - } - - public static void closeConnection(TopiaContext transaction) { - if (transaction == null) { - if (log.isTraceEnabled()) { - log.trace("no transaction to close"); - } - } else if (transaction.isClosed()) { - if (log.isTraceEnabled()) { - log.trace("transaction " + transaction + " is already closed"); - } - } else { - if (log.isDebugEnabled()) { - log.debug("closing transaction " + transaction); - } - - try { - Transaction tx = ((TopiaContextImplementor) transaction).getHibernate().getTransaction(); - if (!tx.wasCommitted() && !tx.wasRolledBack()) { - if (log.isDebugEnabled()) { - log.debug("rollback transaction!"); - } - tx.rollback(); - } - transaction.closeContext(); - } catch (TopiaException e) { - throw new TopiaRuntimeException(e); - } - } - } -} Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseTopiaRootContextFactory.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseTopiaRootContextFactory.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseTopiaRootContextFactory.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,270 +0,0 @@ -/* - * #%L - * Extranet NF-Logement :: Entities - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Cerqual - * %% - * 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.echobase; - -import com.google.common.base.Charsets; -import com.google.common.base.Preconditions; -import com.google.common.collect.Sets; -import com.google.common.io.Closeables; -import fr.ifremer.echobase.entities.EchoBaseDAOHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaContextFactory; -import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.TopiaRuntimeException; -import org.nuiton.util.RecursiveProperties; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.Properties; -import java.util.Set; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EchoBaseTopiaRootContextFactory { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(EchoBaseTopiaRootContextFactory.class); - - - public static final String T3_EMBEDDED_DB_PROPERTIES = - "/echobase-TopiaContextImpl.properties"; - - public static final String USER_DB_PROPERTIES = - "/echobase-workingdb.properties"; - - public static final String INTERNAL_DB_PROPERTIES = - "/echobase-internaldb.properties"; - - - public TopiaContext newEmbeddedDatabase(File dir) { - - return newEmbeddedDatabase(dir, "/topia-h2.properties"); - } - - public TopiaContext newEmbeddedDatabase(File dir, String configPath) { - - File databaseFile = new File(dir, "db"); - - String databaseAbsolutePath = databaseFile.getAbsolutePath(); - - // prepare call to topia-context factory - Properties properties = new Properties(); - InputStream input = null; - try { - input = getClass().getResourceAsStream(configPath); - Preconditions.checkNotNull(input, "Could not find resource " + - configPath); - properties.load(input); - input.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - Closeables.closeQuietly(input); - } - String dbUrl = "jdbc:h2:file:" + databaseAbsolutePath + - "/echobase;LOG=0;CACHE_SIZE=65536;LOCK_MODE=0;UNDO_LOG=0"; - properties.setProperty(TopiaContextFactory.CONFIG_URL, dbUrl); - - if (log.isInfoEnabled()) { - log.info("Use embedded db at " + dbUrl); - } - // add entities to the context - properties.setProperty( - TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, - EchoBaseDAOHelper.getImplementationClassesAsString()); - - - TopiaContext rootContext; - try { - rootContext = TopiaContextFactory.getContext(properties); - } catch (TopiaNotFoundException e) { - throw new TopiaRuntimeException(e); - } - - if (log.isDebugEnabled()) { - log.debug("will output database in " + databaseAbsolutePath); - } - - return rootContext; - } - - public TopiaContext newDatabaseFromConfig(EchoBaseConfiguration config) { - - Properties properties = config.getProperties(); - - return newDatabaseFromProperties(properties); - } - - public TopiaContext newDatabaseFromProperties(Properties properties) { - - if (log.isDebugEnabled()) { - log.debug("Database settings are :"); - Set<String> keysToDisplay = Sets.newHashSet( - TopiaContextFactory.CONFIG_DRIVER, - TopiaContextFactory.CONFIG_DIALECT, - TopiaContextFactory.CONFIG_URL, - TopiaContextFactory.CONFIG_USER - ); - for (String key : keysToDisplay) { - log.debug(String.format("%s=%s", key, properties.getProperty(key))); - } - } - - // add entities to the context - String classesKey = TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES; - String classesValue = EchoBaseDAOHelper.getImplementationClassesAsString(); - properties.setProperty(classesKey, classesValue); - - TopiaContext rootContext; - try { - rootContext = TopiaContextFactory.getContext(properties); - } catch (TopiaNotFoundException e) { - throw new TopiaRuntimeException(e); - } - - return rootContext; - } - - /** - * Open a new topia root context from given configuration. - * - * @param configuration topia configuration - * @return the new fresh root context - */ - public TopiaContext newDb(Properties configuration) { - try { - if (log.isInfoEnabled()) { - log.info("Starts a db at : " + - configuration.get(TopiaContextFactory.CONFIG_URL)); - } - TopiaContext result = TopiaContextFactory.getContext(configuration); - return result; - } catch (TopiaNotFoundException e) { - throw new TopiaRuntimeException("Could not init db", e); - } - } - - /** - * Open a new topia root context from the given jdbc configuration. - * - * @param jdbcConfiguration jdbc configuration - * @return the new fresh root context - */ - public TopiaContext newDb(JdbcConfiguration jdbcConfiguration) { - - URL dbConfigFile = getClass().getResource(USER_DB_PROPERTIES); - - Properties result = null; - try { - InputStreamReader reader = - new InputStreamReader(dbConfigFile.openStream(), - Charsets.UTF_8); - try { - result = new RecursiveProperties(); - - result.setProperty("configuration.url", jdbcConfiguration.getUrl()); - result.setProperty("configuration.login", jdbcConfiguration.getLogin()); - result.setProperty("configuration.password", jdbcConfiguration.getPassword()); - result.load(reader); - - reloadProperty(result, TopiaContextFactory.CONFIG_URL); - reloadProperty(result, TopiaContextFactory.CONFIG_USER); - reloadProperty(result, TopiaContextFactory.CONFIG_PASS); - - result.remove("configuration.url"); - result.remove("configuration.login"); - result.remove("configuration.password"); - } finally { - reader.close(); - } - } catch (IOException e) { - throw new IllegalStateException( - "Could not load database configuration", e); - } - - // add entities mapping - result.put( - TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, - EchoBaseDAOHelper.getImplementationClassesAsString() - ); - - return newDb(result); - } - - /** - * Open a new topia root context for the internal db of t3 (this should be - * a h2 db used only for security). - * - * @param configuration application configuration where to find db directory - * @return the new fresh root context of the internal db - */ - public TopiaContext newInternalDb(EchoBaseConfiguration configuration) { - - URL dbConfigFile = getClass().getResource(INTERNAL_DB_PROPERTIES); - - File internalDbDirectory = configuration.getInternalDbDirectory(); - Properties result = null; - - try { - InputStreamReader reader = - new InputStreamReader(dbConfigFile.openStream(), - Charsets.UTF_8); - try { - result = new RecursiveProperties(); - - String key = - EchoBaseConfigurationOption.INTERNAL_DB_DIRECTORY.getKey(); - - result.setProperty(key, internalDbDirectory.getAbsolutePath()); - result.load(reader); - reloadProperty(result, TopiaContextFactory.CONFIG_URL); - result.remove(key); - } finally { - reader.close(); - } - } catch (IOException e) { - throw new IllegalStateException( - "Could not load internal database configuration", e); - } - - // add entities mapping - result.put(TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, - EchoBaseDAOHelper.getImplementationClassesAsString() - ); - return newDb(result); - } - - public static void reloadProperty(Properties properties, String propertyName) { - Object o = properties.getProperty(propertyName); - properties.put(propertyName, o); - } -} Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/JdbcConfiguration.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/JdbcConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/JdbcConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,67 +0,0 @@ -/* - * #%L - * T3 :: Domain - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 - 2012 IRD, Codelutin, Tony Chemit - * %% - * 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.echobase; - -import java.io.Serializable; - -public class JdbcConfiguration implements Serializable { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_URL = "url"; - - public static final String PROPERTY_LOGIN = "login"; - - public static final String PROPERTY_PASSWORD = "password"; - - protected String url; - - protected String login; - - protected String password; - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getLogin() { - return login; - } - - public void setLogin(String login) { - this.login = login; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - -} Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,284 +0,0 @@ -package fr.ifremer.echobase.entities; -/* - * #%L - * EchoBase :: Entities - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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 com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.nuiton.topia.persistence.metadata.AssociationMeta; -import org.nuiton.topia.persistence.metadata.DbMeta; -import org.nuiton.topia.persistence.metadata.TableMeta; - -import java.util.Arrays; -import java.util.List; - -import static org.nuiton.i18n.I18n.n_; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since TODO - */ -public class EchoBaseDbMeta extends DbMeta<EchoBaseEntityEnum> { - - public static EchoBaseDbMeta newDbMeta() { - return new EchoBaseDbMeta(new EchoBasePersistenceHelper() - ); - } - - private static final List<EchoBaseEntityEnum> REFERENCE_TYPES = ImmutableList.copyOf(Arrays.asList( - - // with no dep - EchoBaseEntityEnum.SexCategory, - EchoBaseEntityEnum.AgeCategory, - EchoBaseEntityEnum.SizeCategory, - EchoBaseEntityEnum.Species, - EchoBaseEntityEnum.Calibration, - EchoBaseEntityEnum.VesselType, - EchoBaseEntityEnum.Mission, - EchoBaseEntityEnum.DepthStratum, - EchoBaseEntityEnum.EchotypeCategory, - EchoBaseEntityEnum.AreaOfOperation, - EchoBaseEntityEnum.ReferenceDatumType, - EchoBaseEntityEnum.DataType, - EchoBaseEntityEnum.DataQuality, - EchoBaseEntityEnum.CellMethod, - EchoBaseEntityEnum.CellType, - EchoBaseEntityEnum.OperationEvent, - EchoBaseEntityEnum.SampleDataType, - EchoBaseEntityEnum.SampleType, - EchoBaseEntityEnum.GearCharacteristic, - EchoBaseEntityEnum.CategoryMeaning, - EchoBaseEntityEnum.CategoryType, - EchoBaseEntityEnum.MeasureType, - EchoBaseEntityEnum.MeasurementMetadata, - EchoBaseEntityEnum.ReferencingMethod, - - // with deps - EchoBaseEntityEnum.Strata, - EchoBaseEntityEnum.AcousticInstrument, - EchoBaseEntityEnum.Vessel, - EchoBaseEntityEnum.ReferenceDatum, - EchoBaseEntityEnum.OperationMetadata, - EchoBaseEntityEnum.GearMetadata, - EchoBaseEntityEnum.GearCharacteristicValue, - EchoBaseEntityEnum.Gear, - - EchoBaseEntityEnum.SpeciesCategory, - EchoBaseEntityEnum.TSParameters, - EchoBaseEntityEnum.DataMetadata, - EchoBaseEntityEnum.CategoryRef, - EchoBaseEntityEnum.Impacte, - EchoBaseEntityEnum.DataProtocol)); - - private static final List<EchoBaseEntityEnum> DATA_TYPES = ImmutableList.copyOf(Arrays.asList( - EchoBaseEntityEnum.SampleData, - EchoBaseEntityEnum.Sample, - - EchoBaseEntityEnum.OperationMetadataValue, - EchoBaseEntityEnum.GearMetadataValue, - EchoBaseEntityEnum.Operation, - - EchoBaseEntityEnum.Data, - - EchoBaseEntityEnum.Echotype, - EchoBaseEntityEnum.Category, - EchoBaseEntityEnum.Result, - - EchoBaseEntityEnum.Cell, - EchoBaseEntityEnum.DataProcessing, - EchoBaseEntityEnum.DataAcquisition, - EchoBaseEntityEnum.Transect, - EchoBaseEntityEnum.Transit, - - EchoBaseEntityEnum.LengthAgeKey, - EchoBaseEntityEnum.LengthWeightKey, - - EchoBaseEntityEnum.Voyage)); - - - private final List<TableMeta<EchoBaseEntityEnum>> referenceTables; - - private final List<AssociationMeta<EchoBaseEntityEnum>> referenceAssociations; - - private final List<TableMeta<EchoBaseEntityEnum>> dataTables; - - private final List<AssociationMeta<EchoBaseEntityEnum>> dataAssociations; - - EchoBaseDbMeta(EchoBasePersistenceHelper persistenceHelper) { - super(persistenceHelper, - EchoBaseEntityEnum.values(), EchoBaseEntityEnum.EntityModificationLog); - - - { - // reference tables - List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - addTables(result, REFERENCE_TYPES); - referenceTables = ImmutableList.copyOf(result); - } - - { - // reference associations - List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - addAssociations(result, REFERENCE_TYPES); - referenceAssociations = ImmutableList.copyOf(result); - } - - { - // data tables - - List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - addTables(result, DATA_TYPES); - dataTables = ImmutableList.copyOf(result); - } - - { - // data associations - List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - addAssociations(result, DATA_TYPES); - dataAssociations = ImmutableList.copyOf(result); - } - - } - - public int getEntriesSize() { - return getAllTables().size() + getAllAssociations().size(); - } - - public List<TableMeta<EchoBaseEntityEnum>> getAllTables() { - - List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - - result.addAll(referenceTables); - result.addAll(dataTables); - return ImmutableList.copyOf(result); - } - - public List<AssociationMeta<EchoBaseEntityEnum>> getAllAssociations() { - List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); - result.addAll(referenceAssociations); - result.addAll(dataAssociations); - return ImmutableList.copyOf(result); - } - - public int getReferenceEntriesSize() { - return getReferenceTables().size() + getReferenceAssociations().size(); - } - - public List<TableMeta<EchoBaseEntityEnum>> getReferenceTables() { - return referenceTables; - } - - public List<AssociationMeta<EchoBaseEntityEnum>> getReferenceAssociations() { - return referenceAssociations; - } - - public List<TableMeta<EchoBaseEntityEnum>> getDataTables() { - return dataTables; - } - - public List<AssociationMeta<EchoBaseEntityEnum>> getDataAssociations() { - return dataAssociations; - } - - /** - * @return the entity types of data in correct order for replication - * purpose. - */ - public List<EchoBaseEntityEnum> getDataTypes() { - return DATA_TYPES; - } - - /** - * @return the entity types of reference in correct order for copy - * purpose (says import / export of all a database. - */ - public List<EchoBaseEntityEnum> getReferenceTypes() { - return REFERENCE_TYPES; - } - - @Override - public EchoBasePersistenceHelper getPersistenceHelper() { - return (EchoBasePersistenceHelper) super.getPersistenceHelper(); - } - - /** - * - * I18n definition (we need it for generic dbeditor, but we don't want - * ToPIA to generate all keys for all property) - * @since 1.1 - */ - static { - n_("echobase.common.admin"); - n_("echobase.common.areaOfOperation"); - n_("echobase.common.author"); - n_("echobase.common.authorEmail"); - n_("echobase.common.calibration"); - n_("echobase.common.cell"); - n_("echobase.common.data"); - n_("echobase.common.dataAcquisition"); - n_("echobase.common.dataCentre"); - n_("echobase.common.dataCentreEmail"); - n_("echobase.common.dataProcessing"); - n_("echobase.common.dataQuality"); - n_("echobase.common.datum"); - n_("echobase.common.depthStratum"); - n_("echobase.common.description"); - n_("echobase.common.distributionStatement"); - n_("echobase.common.echoBaseUser"); - n_("echobase.common.email"); - n_("echobase.common.entityId"); - n_("echobase.common.entityModificationLog"); - n_("echobase.common.entityType"); - n_("echobase.common.exportQuery"); - n_("echobase.common.id"); - n_("echobase.common.institution"); - n_("echobase.common.keywords"); - n_("echobase.common.lastModifiedDate"); - n_("echobase.common.lastModifiedUser"); - n_("echobase.common.litteratureReferences"); - n_("echobase.common.metadata"); - n_("echobase.common.mission"); - n_("echobase.common.missionAbstract"); - n_("echobase.common.modificationDate"); - n_("echobase.common.modificationText"); - n_("echobase.common.modificationUser"); - n_("echobase.common.name"); - n_("echobase.common.organisationLevelAcknowledgements"); - n_("echobase.common.organisationReferences"); - n_("echobase.common.password"); - n_("echobase.common.platform"); - n_("echobase.common.principalInvestigator"); - n_("echobase.common.principalInvestigatorEmail"); - n_("echobase.common.project"); - n_("echobase.common.referenceDatum"); - n_("echobase.common.source"); - n_("echobase.common.species"); - n_("echobase.common.sqlQuery"); - n_("echobase.common.transect"); - n_("echobase.common.transit"); - n_("echobase.common.vessel"); - n_("echobase.common.voyage"); - n_("echobase.config.data.directory.description"); - } -} Deleted: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,59 +0,0 @@ -package fr.ifremer.echobase.entities; - -/* - * #%L - * EchoBase :: Entities - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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 org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.TopiaRuntimeException; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaPersistenceHelper; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class EchoBasePersistenceHelper implements TopiaPersistenceHelper<EchoBaseEntityEnum> { - - @Override - public <E extends TopiaEntity> EchoBaseEntityEnum getEntityEnum(Class<E> type) { - return EchoBaseEntityEnum.valueOf(type); - } - - @Override - public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, Class<E> type) { - try { - return EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO(tx, type); - } catch (TopiaException e) { - throw new TopiaRuntimeException(e); - } - } - - @Override - public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, EchoBaseEntityEnum type) { - return (TopiaDAO<E>) getDAO(tx, type.getContract()); - } -} Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/EchoBaseIOUtil.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,165 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.io; + +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ZipUtil; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.util.Collection; + +/** + * Usefull methods on io. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class EchoBaseIOUtil { + + /** Logger. */ + private static final Log log = LogFactory.getLog(EchoBaseIOUtil.class); + + public static void compressZipFile(File zipFile, File directory) throws IOException { + compressZipFile(zipFile, directory, true); + } + + public static void compressZipFile(File zipFile, File directory, boolean delete) throws IOException { + try { + ZipUtil.compress(zipFile, directory); + } catch (IOException eee) { + throw new EchoBaseTechnicalException( + "Can not create zip file " + zipFile, eee); + } finally { + if (delete) { + FileUtils.deleteDirectory(directory); + } + } + } + + public static void copyFile(File destinationFile, + Collection<File> filesToMerge) throws IOException { + if (!CollectionUtils.isEmpty(filesToMerge)) { + + if (filesToMerge.size() == 1) { + + // simple copy + FileUtils.copyFile(filesToMerge.iterator().next(), destinationFile); + } else { + + // must merge all files + mergeFiles(destinationFile, filesToMerge); + } + } + } + + public static void mergeFiles(File destination, + Iterable<File> fileToMerges) throws IOException { + + BufferedWriter writer = new BufferedWriter(new FileWriter(destination)); + try { + boolean firstLine = false; + for (File toMergeFile : fileToMerges) { + BufferedReader reader = new BufferedReader(new FileReader(toMergeFile)); + try { + // pass the first line (header) + String line = reader.readLine(); + if (!firstLine) { + + // add the csv header + writer.write(line); + + firstLine = true; + } + while ((line = reader.readLine()) != null) { + writer.newLine(); + writer.write(line); + } + } finally { + reader.close(); + } + + } + } finally { + writer.close(); + } + } + + public static int countLines(File file) { + int result = 0; + + LineNumberReader reader = null; + try { + reader = new LineNumberReader( + new InputStreamReader(FileUtils.openInputStream(file)) + ); + while (reader.readLine() != null) { + } + result = reader.getLineNumber(); + reader.close(); + + } catch (IOException e) { + throw new EchoBaseTechnicalException( + "Could not count lines of file " + file, e); + } finally { + if (reader != null) { + IOUtils.closeQuietly(reader); + } + } + return result; + } + + public static void copyFile(InputFile inputFile, + File dataDirectory) throws IOException { + Preconditions.checkNotNull(inputFile); + Preconditions.checkNotNull(dataDirectory); + File source = inputFile.getFile(); + Preconditions.checkNotNull(source); + + File target = new File(dataDirectory, inputFile.getFileName()); + if (log.isInfoEnabled()) { + log.info("Copy file " + source + " to " + target); + } + FileUtils.copyFile(source, target); + + // keep target (source file will be removed at the end of this action) + inputFile.setFile(target); + } + + protected EchoBaseIOUtil() { + // no instance of helper class + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/EchoBaseIOUtil.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/InputFile.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/InputFile.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/InputFile.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,94 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.io; + +import java.io.File; +import java.io.Serializable; + +/** + * Object to receive a uploaded file. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class InputFile implements Serializable { + + private static final long serialVersionUID = 1L; + + /** Name of the file (from the client side). */ + protected String fileName; + + /** Location of the uploaded file (from the server side). */ + protected File file; + + /** Content type of the uploaded file. */ + protected String contentType; + + /** Label of the import. */ + protected String label; + + public static InputFile newFile(String label) { + return new InputFile(label); + } + + protected InputFile(String label) { + this.label = label; + } + + public String getFileName() { + return fileName; + } + + public File getFile() { + return file; + } + + public String getLabel() { + return label; + } + + public String getContentType() { + return contentType; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public void setFile(File file) { + this.file = file; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + + public void setLabel(String label) { + this.label = label; + } + + public boolean hasFile() { + return file != null; + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/io/InputFile.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java (from rev 579, trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,285 @@ +package fr.ifremer.echobase.persistence; +/* + * #%L + * EchoBase :: Entities + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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 com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import org.nuiton.topia.persistence.metadata.AssociationMeta; +import org.nuiton.topia.persistence.metadata.DbMeta; +import org.nuiton.topia.persistence.metadata.TableMeta; + +import java.util.Arrays; +import java.util.List; + +import static org.nuiton.i18n.I18n.n_; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since TODO + */ +public class EchoBaseDbMeta extends DbMeta<EchoBaseEntityEnum> { + + public static EchoBaseDbMeta newDbMeta() { + return new EchoBaseDbMeta(new EchoBasePersistenceHelper() + ); + } + + private static final List<EchoBaseEntityEnum> REFERENCE_TYPES = ImmutableList.copyOf(Arrays.asList( + + // with no dep + EchoBaseEntityEnum.SexCategory, + EchoBaseEntityEnum.AgeCategory, + EchoBaseEntityEnum.SizeCategory, + EchoBaseEntityEnum.Species, + EchoBaseEntityEnum.Calibration, + EchoBaseEntityEnum.VesselType, + EchoBaseEntityEnum.Mission, + EchoBaseEntityEnum.DepthStratum, + EchoBaseEntityEnum.EchotypeCategory, + EchoBaseEntityEnum.AreaOfOperation, + EchoBaseEntityEnum.ReferenceDatumType, + EchoBaseEntityEnum.DataType, + EchoBaseEntityEnum.DataQuality, + EchoBaseEntityEnum.CellMethod, + EchoBaseEntityEnum.CellType, + EchoBaseEntityEnum.OperationEvent, + EchoBaseEntityEnum.SampleDataType, + EchoBaseEntityEnum.SampleType, + EchoBaseEntityEnum.GearCharacteristic, + EchoBaseEntityEnum.CategoryMeaning, + EchoBaseEntityEnum.CategoryType, + EchoBaseEntityEnum.MeasureType, + EchoBaseEntityEnum.MeasurementMetadata, + EchoBaseEntityEnum.ReferencingMethod, + + // with deps + EchoBaseEntityEnum.Strata, + EchoBaseEntityEnum.AcousticInstrument, + EchoBaseEntityEnum.Vessel, + EchoBaseEntityEnum.ReferenceDatum, + EchoBaseEntityEnum.OperationMetadata, + EchoBaseEntityEnum.GearMetadata, + EchoBaseEntityEnum.GearCharacteristicValue, + EchoBaseEntityEnum.Gear, + + EchoBaseEntityEnum.SpeciesCategory, + EchoBaseEntityEnum.TSParameters, + EchoBaseEntityEnum.DataMetadata, + EchoBaseEntityEnum.CategoryRef, + EchoBaseEntityEnum.Impacte, + EchoBaseEntityEnum.DataProtocol)); + + private static final List<EchoBaseEntityEnum> DATA_TYPES = ImmutableList.copyOf(Arrays.asList( + EchoBaseEntityEnum.SampleData, + EchoBaseEntityEnum.Sample, + + EchoBaseEntityEnum.OperationMetadataValue, + EchoBaseEntityEnum.GearMetadataValue, + EchoBaseEntityEnum.Operation, + + EchoBaseEntityEnum.Data, + + EchoBaseEntityEnum.Echotype, + EchoBaseEntityEnum.Category, + EchoBaseEntityEnum.Result, + + EchoBaseEntityEnum.Cell, + EchoBaseEntityEnum.DataProcessing, + EchoBaseEntityEnum.DataAcquisition, + EchoBaseEntityEnum.Transect, + EchoBaseEntityEnum.Transit, + + EchoBaseEntityEnum.LengthAgeKey, + EchoBaseEntityEnum.LengthWeightKey, + + EchoBaseEntityEnum.Voyage)); + + + private final List<TableMeta<EchoBaseEntityEnum>> referenceTables; + + private final List<AssociationMeta<EchoBaseEntityEnum>> referenceAssociations; + + private final List<TableMeta<EchoBaseEntityEnum>> dataTables; + + private final List<AssociationMeta<EchoBaseEntityEnum>> dataAssociations; + + EchoBaseDbMeta(EchoBasePersistenceHelper persistenceHelper) { + super(persistenceHelper, + EchoBaseEntityEnum.values(), + EchoBaseEntityEnum.EntityModificationLog); + + { + // reference tables + List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + addTables(result, REFERENCE_TYPES); + referenceTables = ImmutableList.copyOf(result); + } + + { + // reference associations + List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + addAssociations(result, REFERENCE_TYPES); + referenceAssociations = ImmutableList.copyOf(result); + } + + { + // data tables + + List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + addTables(result, DATA_TYPES); + dataTables = ImmutableList.copyOf(result); + } + + { + // data associations + List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + addAssociations(result, DATA_TYPES); + dataAssociations = ImmutableList.copyOf(result); + } + + } + + public int getEntriesSize() { + return getAllTables().size() + getAllAssociations().size(); + } + + public List<TableMeta<EchoBaseEntityEnum>> getAllTables() { + + List<TableMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + + result.addAll(referenceTables); + result.addAll(dataTables); + return ImmutableList.copyOf(result); + } + + public List<AssociationMeta<EchoBaseEntityEnum>> getAllAssociations() { + List<AssociationMeta<EchoBaseEntityEnum>> result = Lists.newArrayList(); + result.addAll(referenceAssociations); + result.addAll(dataAssociations); + return ImmutableList.copyOf(result); + } + + public int getReferenceEntriesSize() { + return getReferenceTables().size() + getReferenceAssociations().size(); + } + + public List<TableMeta<EchoBaseEntityEnum>> getReferenceTables() { + return referenceTables; + } + + public List<AssociationMeta<EchoBaseEntityEnum>> getReferenceAssociations() { + return referenceAssociations; + } + + public List<TableMeta<EchoBaseEntityEnum>> getDataTables() { + return dataTables; + } + + public List<AssociationMeta<EchoBaseEntityEnum>> getDataAssociations() { + return dataAssociations; + } + + /** + * @return the entity types of data in correct order for replication + * purpose. + */ + public List<EchoBaseEntityEnum> getDataTypes() { + return DATA_TYPES; + } + + /** + * @return the entity types of reference in correct order for copy + * purpose (says import / export of all a database. + */ + public List<EchoBaseEntityEnum> getReferenceTypes() { + return REFERENCE_TYPES; + } + + @Override + public EchoBasePersistenceHelper getPersistenceHelper() { + return (EchoBasePersistenceHelper) super.getPersistenceHelper(); + } + + /** + * + * I18n definition (we need it for generic dbeditor, but we don't want + * ToPIA to generate all keys for all property) + * @since 1.1 + */ + static { + n_("echobase.common.admin"); + n_("echobase.common.areaOfOperation"); + n_("echobase.common.author"); + n_("echobase.common.authorEmail"); + n_("echobase.common.calibration"); + n_("echobase.common.cell"); + n_("echobase.common.data"); + n_("echobase.common.dataAcquisition"); + n_("echobase.common.dataCentre"); + n_("echobase.common.dataCentreEmail"); + n_("echobase.common.dataProcessing"); + n_("echobase.common.dataQuality"); + n_("echobase.common.datum"); + n_("echobase.common.depthStratum"); + n_("echobase.common.description"); + n_("echobase.common.distributionStatement"); + n_("echobase.common.echoBaseUser"); + n_("echobase.common.email"); + n_("echobase.common.entityId"); + n_("echobase.common.entityModificationLog"); + n_("echobase.common.entityType"); + n_("echobase.common.exportQuery"); + n_("echobase.common.id"); + n_("echobase.common.institution"); + n_("echobase.common.keywords"); + n_("echobase.common.lastModifiedDate"); + n_("echobase.common.lastModifiedUser"); + n_("echobase.common.litteratureReferences"); + n_("echobase.common.metadata"); + n_("echobase.common.mission"); + n_("echobase.common.missionAbstract"); + n_("echobase.common.modificationDate"); + n_("echobase.common.modificationText"); + n_("echobase.common.modificationUser"); + n_("echobase.common.name"); + n_("echobase.common.organisationLevelAcknowledgements"); + n_("echobase.common.organisationReferences"); + n_("echobase.common.password"); + n_("echobase.common.platform"); + n_("echobase.common.principalInvestigator"); + n_("echobase.common.principalInvestigatorEmail"); + n_("echobase.common.project"); + n_("echobase.common.referenceDatum"); + n_("echobase.common.source"); + n_("echobase.common.species"); + n_("echobase.common.sqlQuery"); + n_("echobase.common.transect"); + n_("echobase.common.transit"); + n_("echobase.common.vessel"); + n_("echobase.common.voyage"); + n_("echobase.config.data.directory.description"); + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseDbMeta.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java (from rev 584, trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseEntityHelper.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,154 @@ +package fr.ifremer.echobase.persistence; + +/* + * #%L + * EchoBase :: Entities + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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 org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.Transaction; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaContextFactory; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.TopiaRuntimeException; +import org.nuiton.topia.framework.TopiaContextImplementor; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +/** + * helper about topia context and jdbc connections. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class EchoBaseEntityHelper { + + /** Logger. */ + private static final Log log = LogFactory.getLog(EchoBaseEntityHelper.class); + + public static Connection newJDBCConnection(JdbcConfiguration configuration) throws SQLException { + + String jdbcUrl = configuration.getUrl(); + String login = configuration.getLogin(); + String password = configuration.getPassword(); + + Connection conn = DriverManager.getConnection(jdbcUrl, login, password); + + if (log.isDebugEnabled()) { + log.debug("connexion reussie pour l'utilisateur " + login + + " at [" + jdbcUrl + ']'); + } + + return conn; + } + + public static TopiaContext newTransactionFromRootContext(TopiaContext otherTx) throws TopiaException { + TopiaContext tx = ((TopiaContextImplementor) otherTx).getRootContext().beginTransaction(); + return tx; + } + + public static void releaseRootContext(TopiaContext context) { + + TopiaContextImplementor rootContext = ((TopiaContextImplementor) context).getRootContext(); + + if (log.isInfoEnabled()) { + log.info("release database " + + rootContext.getConfig().get(TopiaContextFactory.CONFIG_URL)); + } + try { + releaseContext(rootContext); + } catch (TopiaException e) { + // we don't want this to throw an exception, wants to close + // all possible opened contexts + if (log.isErrorEnabled()) { + log.error("Could not close context " + rootContext, e); + } + } + } + + public static void releaseContext(TopiaContext rootContext) throws TopiaException { + if (rootContext != null && !rootContext.isClosed()) { + rootContext.closeContext(); + } + } + + public static void checkJDBCConnection(JdbcConfiguration configuration) throws SQLException { + + Connection conn = null; + try { + + conn = newJDBCConnection(configuration); + + } finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + if (log.isErrorEnabled()) { + log.error("Could not close properly connection to " + + configuration.getUrl(), e); + } + } + } + } + } + +// public static JdbcConfiguration newJdbcConfiguration(Properties dbConf) { +// +// JdbcConfiguration result = new JdbcConfiguration(); +// result.setUrl(dbConf.getProperty(TopiaContextFactory.CONFIG_URL)); +// result.setLogin(dbConf.getProperty(TopiaContextFactory.CONFIG_USER)); +// result.setPassword(dbConf.getProperty(TopiaContextFactory.CONFIG_PASS)); +// return result; +// } + + public static void closeConnection(TopiaContext transaction) { + if (transaction == null) { + if (log.isTraceEnabled()) { + log.trace("no transaction to close"); + } + } else if (transaction.isClosed()) { + if (log.isTraceEnabled()) { + log.trace("transaction " + transaction + " is already closed"); + } + } else { + if (log.isDebugEnabled()) { + log.debug("closing transaction " + transaction); + } + + try { + Transaction tx = ((TopiaContextImplementor) transaction).getHibernate().getTransaction(); + if (!tx.wasCommitted() && !tx.wasRolledBack()) { + if (log.isDebugEnabled()) { + log.debug("rollback transaction!"); + } + tx.rollback(); + } + transaction.closeContext(); + } catch (TopiaException e) { + throw new TopiaRuntimeException(e); + } + } + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBaseEntityHelper.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java (from rev 573, trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,61 @@ +package fr.ifremer.echobase.persistence; + +/* + * #%L + * EchoBase :: Entities + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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 fr.ifremer.echobase.entities.EchoBaseDAOHelper; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.TopiaRuntimeException; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaPersistenceHelper; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class EchoBasePersistenceHelper implements TopiaPersistenceHelper<EchoBaseEntityEnum> { + + @Override + public <E extends TopiaEntity> EchoBaseEntityEnum getEntityEnum(Class<E> type) { + return EchoBaseEntityEnum.valueOf(type); + } + + @Override + public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, Class<E> type) { + try { + return EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO(tx, type); + } catch (TopiaException e) { + throw new TopiaRuntimeException(e); + } + } + + @Override + public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, EchoBaseEntityEnum type) { + return (TopiaDAO<E>) getDAO(tx, type.getContract()); + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchoBasePersistenceHelper.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,174 @@ +package fr.ifremer.echobase.persistence; + +import com.google.common.base.Charsets; +import fr.ifremer.echobase.EchoBaseConfiguration; +import fr.ifremer.echobase.EchoBaseConfigurationOption; +import fr.ifremer.echobase.entities.EchoBaseDAOHelper; +import fr.ifremer.echobase.entities.EchoBaseInternalDAOHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaContextFactory; +import org.nuiton.topia.TopiaNotFoundException; +import org.nuiton.topia.TopiaRuntimeException; +import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.util.RecursiveProperties; + +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.Properties; + +/** + * To deal with topia context for echobase application. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class EchobaseTopiaContexts { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(EchobaseTopiaContexts.class); + + public static final String USER_DB_PROPERTIES = + "/echobase-workingdb.properties"; + + public static final String INTERNAL_DB_PROPERTIES = + "/echobase-internaldb.properties"; + + protected EchobaseTopiaContexts() { + // should not be instanciated + } + + public static Properties loadWorkingDbConfiguration(JdbcConfiguration jdbcConfiguration) { + Properties result = new RecursiveProperties(); + + Class<?> driverType; + Class<?> dialectType; + switch (jdbcConfiguration.getDriverType()) { + case H2: + driverType = org.h2.Driver.class; + dialectType = org.hibernate.dialect.H2Dialect.class; + break; + case POSTGRESQL: + driverType = org.postgresql.Driver.class; + dialectType = org.hibernate.dialect.PostgreSQLDialect.class; + break; + default: + throw new IllegalStateException("Could not find driver..."); + } + + result.setProperty("configuration.url", jdbcConfiguration.getUrl()); + result.setProperty("configuration.login", jdbcConfiguration.getLogin()); + result.setProperty("configuration.password", jdbcConfiguration.getPassword()); + result.setProperty("configuration.driver", driverType.getName()); + result.setProperty("configuration.dialect", dialectType.getName()); + + loadProperties(result, USER_DB_PROPERTIES, + EchoBaseDAOHelper.getImplementationClassesAsString()); + + reloadProperty(result, TopiaContextFactory.CONFIG_URL, "configuration.url"); + reloadProperty(result, TopiaContextFactory.CONFIG_USER, "configuration.login"); + reloadProperty(result, TopiaContextFactory.CONFIG_PASS, "configuration.password"); + reloadProperty(result, TopiaContextFactory.CONFIG_DIALECT, "configuration.dialect"); + reloadProperty(result, TopiaContextFactory.CONFIG_DRIVER, "configuration.driver"); + + return result; + } + + public static Properties loadInternalDbconfiguration(EchoBaseConfiguration configuration) { + File internalDbDirectory = configuration.getInternalDbDirectory(); + Properties result = new RecursiveProperties(); + + String key = + EchoBaseConfigurationOption.INTERNAL_DB_DIRECTORY.getKey(); + + result.setProperty(key, internalDbDirectory.getAbsolutePath()); + + loadProperties(result, INTERNAL_DB_PROPERTIES, + EchoBaseInternalDAOHelper.getImplementationClassesAsString()); + reloadProperty(result, TopiaContextFactory.CONFIG_URL, key); + return result; + } + + /** + * Open a new topia root context from the given jdbc configuration. + * + * @param jdbcConfiguration jdbc configuration + * @return the new fresh root context + */ + public static TopiaContext newWorkingDb(JdbcConfiguration jdbcConfiguration) { + + Properties result = loadWorkingDbConfiguration(jdbcConfiguration); + + return newDb(result); + } + + /** + * Open a new topia root context for the internal db of t3 (this should be + * a h2 db used only for security). + * + * @param configuration application configuration where to find db directory + * @return the new fresh root context of the internal db + */ + public static TopiaContext newInternalDb(EchoBaseConfiguration configuration) { + + Properties result = loadInternalDbconfiguration(configuration); + return newDb(result); + } + + protected static void loadProperties(Properties result, String path, String entities) { + URL dbConfigFile = + EchobaseTopiaContexts.class.getResource(path); + + try { + InputStreamReader reader = + new InputStreamReader(dbConfigFile.openStream(), + Charsets.UTF_8); + try { + result.load(reader); + // add entities mapping + result.put(TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES, + entities + ); + } finally { + reader.close(); + } + } catch (IOException e) { + throw new IllegalStateException( + "Could not load database configuration from " + path, e); + } + } + + /** + * Open a new topia root context from given configuration. + * + * @param configuration topia configuration + * @return the new fresh root context + */ + public static TopiaContext newDb(Properties configuration) { + try { + if (log.isInfoEnabled()) { + log.info("Starts a db at : " + + configuration.get(TopiaContextFactory.CONFIG_URL)); + } + TopiaContext result = TopiaContextFactory.getContext(configuration); + return result; + } catch (TopiaNotFoundException e) { + throw new TopiaRuntimeException("Could not init db", e); + } + } + + public static void reloadProperty(Properties properties, String propertyName, String propertyNameToRemove) { + Object o = properties.getProperty(propertyName); + properties.put(propertyName, o); + properties.remove(propertyNameToRemove); + } + + public static String getDbUrl(TopiaContext rootContext) { + String result = (String) ((TopiaContextImplementor) rootContext).getConfig().get(TopiaContextFactory.CONFIG_URL); + return result; + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/EchobaseTopiaContexts.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/JdbcConfiguration.java (from rev 584, trunk/echobase-entities/src/main/java/fr/ifremer/echobase/JdbcConfiguration.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/JdbcConfiguration.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/JdbcConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,113 @@ +/* + * #%L + * T3 :: Domain + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2012 IRD, Codelutin, Tony Chemit + * %% + * 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.echobase.persistence; + +import java.io.File; +import java.io.Serializable; + +public class JdbcConfiguration implements Serializable { + + public enum DriverType { + H2, + POSTGRESQL + } + + public static JdbcConfiguration newConfig(String url, + String login, + String password, + DriverType driverType) { + JdbcConfiguration result = new JdbcConfiguration(); + result.setUrl(url); + result.setLogin(login); + result.setPassword(password); + result.setDriverType(driverType); + return result; + } + + public static JdbcConfiguration newEmbeddedConfig(File directory) { + + File databaseFile = new File(directory, "db"); + + String databaseAbsolutePath = databaseFile.getAbsolutePath(); + String url = "jdbc:h2:file:" + databaseAbsolutePath + + "/echobase;LOG=0;CACHE_SIZE=65536;LOCK_MODE=0;UNDO_LOG=0"; + JdbcConfiguration result = newConfig(url, "sa", "sa", DriverType.H2); + return result; + } + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_URL = "url"; + + public static final String PROPERTY_LOGIN = "login"; + + public static final String PROPERTY_PASSWORD = "password"; + + /** Jdbc url. */ + protected String url; + + /** Jdbc login */ + protected String login; + + /** Jdbc password */ + protected String password; + + /** Jdbc driver. */ + protected DriverType driverType; + + private JdbcConfiguration() { + // avoid constructor (use the static factory methods) + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public DriverType getDriverType() { + return driverType; + } + + public void setDriverType(DriverType driverType) { + this.driverType = driverType; + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/persistence/JdbcConfiguration.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,197 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import org.nuiton.util.StringUtil; + +import java.io.IOException; +import java.io.Serializable; + +/** + * Abstract long action configuration. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public abstract class AbstractEchobaseActionConfiguration implements Serializable, ProgressionModel { + + private static final long serialVersionUID = 1L; + + private final ProgressionModel progressionModel; + + private Exception error; + + protected AbstractEchobaseActionConfiguration() { + progressionModel = new DefaultProgressionModel(); + } + + protected AbstractEchobaseActionConfiguration(ProgressionModel progressionModel) { + this.progressionModel = progressionModel; + } + + @Override + public final long getNbSteps() { + return progressionModel.getNbSteps(); + } + + @Override + public final float getProgression() { + return progressionModel.getProgression(); + } + + @Override + public final void setProgression(float progression) { + progressionModel.setProgression(progression); + } + + @Override + public final void incrementsProgression() { + progressionModel.incrementsProgression(); + } + + @Override + public final void setNbSteps(long nbSteps) { + progressionModel.setNbSteps(nbSteps); + } + + @Override + public final long getStartTime() { + return progressionModel.getStartTime(); + } + + @Override + public final void setStartTime(long startTime) { + progressionModel.setStartTime(startTime); + } + + @Override + public final long getEndTime() { + return progressionModel.getEndTime(); + } + + @Override + public final void setEndTime(long endTime) { + progressionModel.setEndTime(endTime); + } + + public Exception getError() { + return error; + } + + public void setError(Exception error) { + this.error = error; + } + + @Override + public String getActionTime() { + return progressionModel.getActionTime(); + } + + public void beginAction() { + setStartTime(System.nanoTime()); + } + + public void endAction() { + setEndTime(System.nanoTime()); + } + + public void destroy() throws IOException { + } + + /** + * Default progression model implementation. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ + public static class DefaultProgressionModel implements ProgressionModel { + + private static final long serialVersionUID = 1L; + + private long nbSteps; + + private float stepIncrement; + + private float progression; + + private long startTime; + + private long endTime; + + @Override + public long getNbSteps() { + return nbSteps; + } + + @Override + public float getProgression() { + return progression; + } + + @Override + public void setProgression(float progression) { + this.progression = progression; + } + + @Override + public long getStartTime() { + return startTime; + } + + @Override + public void setStartTime(long startTime) { + this.startTime = startTime; + } + + @Override + public long getEndTime() { + return endTime; + } + + + @Override + public void setEndTime(long endTime) { + this.endTime = endTime; + } + + @Override + public final void incrementsProgression() { + setProgression(progression + stepIncrement); + } + + @Override + public final void setNbSteps(long nbSteps) { + + this.nbSteps = nbSteps; + stepIncrement = 100f / nbSteps; + } + + @Override + public String getActionTime() { + long sTime = getStartTime(); + long eTime = getEndTime(); + return StringUtil.convertTime(eTime - sTime); + } + } +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java (from rev 574, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,186 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; +import fr.ifremer.echobase.EchoBaseConfiguration; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; +import org.apache.commons.lang3.time.DateUtils; +import org.nuiton.topia.TopiaContext; + +import java.lang.reflect.InvocationTargetException; +import java.util.Date; +import java.util.Locale; +import java.util.Map; + +/** + * Instances of this class will be given to service factory. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class DefaultEchoBaseServiceContext implements EchoBaseServiceContext { + + protected TopiaContext internalTransaction; + + protected TopiaContext transaction; + + protected ServiceFactory serviceFactory; + + protected EchoBaseConfiguration configuration; + + protected Locale locale; + + protected EchoBaseDbMeta dbMeta; + + public static EchoBaseServiceContext newContext( + EchoBaseServiceContext serviceContext, + TopiaContext internalTransaction, + TopiaContext transaction) { + return newContext(serviceContext.getLocale(), + internalTransaction, + transaction, + serviceContext.getConfiguration(), + serviceContext.getDbMeta() + ); + } + + public static EchoBaseServiceContext newContext( + Locale locale, + TopiaContext internalTransaction, + TopiaContext transaction, + EchoBaseConfiguration configuration, + EchoBaseDbMeta dbMeta) { + return new DefaultEchoBaseServiceContext(locale, + internalTransaction, + transaction, + configuration, + dbMeta + ); + } + + protected DefaultEchoBaseServiceContext(Locale locale, + TopiaContext internalTransaction, + TopiaContext transaction, + EchoBaseConfiguration configuration, + EchoBaseDbMeta dbMeta) { + this.locale = locale; + this.internalTransaction = internalTransaction; + this.transaction = transaction; + this.configuration = configuration; + this.dbMeta = dbMeta; + this.serviceFactory = new ServiceFactory(); + } + + @Override + public TopiaContext getInternalTransaction() { + return internalTransaction; + } + + @Override + public void setInternalTransaction(TopiaContext internalTransaction) { + this.internalTransaction = internalTransaction; + } + + @Override + public TopiaContext getTransaction() { + Preconditions.checkNotNull(transaction); + return transaction; + } + + @Override + public void setTransaction(TopiaContext transaction) { + this.transaction = transaction; + } + + @Override + public Locale getLocale() { + return locale; + } + + @Override + public Date newDate() { + Date result = new Date(); + DateUtils.setMilliseconds(result, 0); + return result; + } + + @Override + public EchoBaseConfiguration getConfiguration() { + return configuration; + } + + @Override + public EchoBaseDbMeta getDbMeta() { + return dbMeta; + } + + @Override + public final <E extends EchoBaseService> E getService(Class<E> serviceClass) { + return serviceFactory.getService(serviceClass, this); + } + + public static class ServiceFactory { + + protected Map<Class<?>, EchoBaseService> services; + + public final <E extends EchoBaseService> E getService(Class<E> serviceClass, + EchoBaseServiceContext serviceContext) { + if (services == null) { + services = Maps.newHashMap(); + } + E service = (E) services.get(serviceClass); + if (service == null) { + service = newService(serviceClass, serviceContext); + services.put(serviceClass, service); + } + return service; + } + + public <E extends EchoBaseService> E newService(Class<E> clazz, + EchoBaseServiceContext serviceContext) { + // instantiate service using empty constructor + E service; + try { + service = clazz.getConstructor().newInstance(); + } catch (InstantiationException e) { + throw new EchoBaseTechnicalException(e); + } catch (IllegalAccessException e) { + throw new EchoBaseTechnicalException(e); + } catch (InvocationTargetException e) { + throw new EchoBaseTechnicalException(e); + } catch (NoSuchMethodException e) { + throw new EchoBaseTechnicalException(e); + } + + service.setServiceContext(serviceContext); + + return service; + } + + } + +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,39 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +/** + * Contract to place on each EchoBase service to push the {@code serviceContext} + * inside the service. + * + * @author tchemit <chemit@codelutin.com> + * @see EchoBaseServiceContext + * @since 0.1 + */ +public interface EchoBaseService { + + void setServiceContext(EchoBaseServiceContext serviceContext); + +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java (from rev 574, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,88 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import fr.ifremer.echobase.EchoBaseConfiguration; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; +import org.nuiton.topia.TopiaContext; + +import java.util.Date; +import java.util.Locale; + +/** + * This contract represents objects you must provide when asking for a service. + * Objects provided may be injected in services returned by + * {@link ServiceFactoryAware#getService(Class)} + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public interface EchoBaseServiceContext extends ServiceFactoryAware { + + /** + * Get the internal db current transaction. + * <p/> + * Internal db is the db with everything but not any echobase data + * (security, db connexion, sql queries ?). + * + * @return current internal db transaction + */ + TopiaContext getInternalTransaction(); + + /** + * Set the internal db current transaction. + * + * @param transaction internal db transaction to set + */ + void setInternalTransaction(TopiaContext transaction); + + /** + * Get the working db transaction. + * <p/> + * Working db contains echobase data, but nothing about technical + * stuff (security, connexon,...). + * <p/> + * This transaction can be {@code null} if no working db is used. + * + * @return the current working db transaction (or {@code null} if not setted) + */ + TopiaContext getTransaction(); + + /** + * Set the working db transaction. + * + * @param transaction working db transaction to set + */ + void setTransaction(TopiaContext transaction); + + Locale getLocale(); + + EchoBaseConfiguration getConfiguration(); + + EchoBaseDbMeta getDbMeta(); + + Date newDate(); + +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java (from rev 574, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,198 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import com.google.common.base.Preconditions; +import fr.ifremer.echobase.EchoBaseConfiguration; +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.EchoBaseDAOHelper; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; +import fr.ifremer.echobase.entities.EchoBaseInternalDAOHelper; +import fr.ifremer.echobase.entities.EchobaseInternalEntity; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * @author sletellier <letellier@codelutin.com> + * @since 0.1 + */ +public class EchoBaseServiceSupport implements EchoBaseService { + + protected EchoBaseServiceContext serviceContext; + + @Override + public void setServiceContext(EchoBaseServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public final <E extends TopiaEntity> List<E> getEntities(Class<E> entityType) { + Preconditions.checkNotNull(entityType); + try { + List<E> result = getDAO(entityType).findAll(); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException( + "Could not obtain data for type " + entityType, eee); + } + } + + public final <E extends TopiaEntity> long countEntities(Class<E> entityType) { + Preconditions.checkNotNull(entityType); + try { + long result = getDAO(entityType).count(); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException( + "Could not count data for type " + entityType, eee); + } + } + + public final <E extends TopiaEntity> E getEntityById(Class<E> entityType, String id) { + Preconditions.checkNotNull(entityType); + Preconditions.checkArgument(StringUtils.isNotEmpty(id)); + try { + E result = getDAO(entityType).findByTopiaId(id); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException( + "Could not obtain data of id [" + id + "] for type " + + entityType, eee); + } + } + + public final <E extends TopiaEntity> E getEntityByProperty(Class<E> entityType, + String propertyId, + Object propertyValue) { + Preconditions.checkNotNull(entityType); + Preconditions.checkArgument(StringUtils.isNotEmpty(propertyId)); + try { + E result = getDAO(entityType).findByProperty(propertyId, propertyValue); + return result; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException( + "Could not obtain data of property [" + propertyId + "] for type " + + entityType, eee); + } + } + + public TopiaContext getInternalTransaction() { + return serviceContext.getInternalTransaction(); + } + + protected final TopiaContext getTransaction() { + return serviceContext.getTransaction(); + } + + protected final Locale getLocale() { + return serviceContext.getLocale(); + } + + protected final EchoBaseDbMeta getDbMeta() { + return serviceContext.getDbMeta(); + } + + protected final EchoBaseConfiguration getConfiguration() { + return serviceContext.getConfiguration(); + } + + protected final Date newDate() { + return serviceContext.newDate(); + } + + protected char getCsvSeparator() { + return getConfiguration().getCsvSeparator(); + } + + public final <E extends EchoBaseService> E getService(Class<E> serviceClass) { + E result = serviceContext.getService(serviceClass); + return result; + } + +// protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(EchoBaseEntityEnum entityEnum) { +// TopiaDAO<E> dao = getDAO((Class<E>) entityEnum.getContract()); +// return dao; +// } + + protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityType) { + try { + TopiaContext tx = getTransaction(entityType); + TopiaDAO<E> dao; + if (EchobaseInternalEntity.class.isAssignableFrom(entityType)) { + dao = EchoBaseInternalDAOHelper.<E, TopiaDAO<E>>getDAO(tx, entityType); + } else { + dao = EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO(tx, entityType); + } + + return dao; + } catch (TopiaException e) { + throw new EchoBaseTechnicalException("Could not obtain dao for type " + entityType, e); + } + } + + protected final <E extends TopiaEntity, D extends TopiaDAO<E>> D getDAO(Class<E> entityType, Class<D> daoType) { + TopiaDAO<E> dao = getDAO(entityType); + Preconditions.checkState(daoType.isAssignableFrom(dao.getClass())); + return (D) dao; + } + + public final void commitTransaction(String errorMessage) { + try { + getTransaction().commitTransaction(); + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(errorMessage, eee); + } + } + + public final void commitInternalTransaction(String errorMessage) { + try { + getInternalTransaction().commitTransaction(); + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(errorMessage, eee); + } + } + + protected final void flushTransaction() throws TopiaException { + TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction(); + tx.getHibernate().flush(); + } + + protected <E extends TopiaEntity> TopiaContext getTransaction(Class<E> entitytype) { + TopiaContext result; + if (EchobaseInternalEntity.class.isAssignableFrom(entitytype)) { + result = getInternalTransaction(); + } else { + result = getTransaction(); + } + return result; + } + +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java) =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,55 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import java.io.Serializable; + +/** + * Contract for a progression model while long service actions. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public interface ProgressionModel extends Serializable { + + long getNbSteps(); + + float getProgression(); + + void setProgression(float progression); + + void incrementsProgression(); + + void setNbSteps(long nbSteps); + + long getStartTime(); + + void setStartTime(long startTime); + + long getEndTime(); + + void setEndTime(long endTime); + + String getActionTime(); +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ServiceFactoryAware.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ServiceFactoryAware.java (rev 0) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ServiceFactoryAware.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,13 @@ +package fr.ifremer.echobase.services; + +/** + * Contract to provide some services. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public interface ServiceFactoryAware { + + <S extends EchoBaseService> S getService(Class<S> serviceClass); + +} Property changes on: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/services/ServiceFactoryAware.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: trunk/echobase-entities/src/main/resources/echobase-datadb.properties =================================================================== --- trunk/echobase-entities/src/main/resources/echobase-datadb.properties 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/resources/echobase-datadb.properties 2012-09-01 11:28:26 UTC (rev 587) @@ -1,39 +0,0 @@ -### -# #%L -# T3 :: Domain -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2010 - 2012 IRD, Codelutin, Tony Chemit -# %% -# 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% -### -# DB configuration -hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect -hibernate.connection.driver_class=org.postgresql.Driver -hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider -hibernate.show_sql=false -hibernate.format_sql=false -hibernate.use_sql_comments=false -hibernate.hbm2ddl.auto=none -hibernate.connection.username=${configuration.login} -hibernate.connection.password=${configuration.password} -hibernate.connection.url=${configuration.url} - -# Migration configuration -topia.service.migration=org.nuiton.topia.migration.TopiaMigrationEngine -topia.service.migration.callback=fr.ird.t3.services.migration.T3MigrationCallback -topia.service.migration.showSql=true - Copied: trunk/echobase-entities/src/main/resources/echobase-workingdb.properties (from rev 584, trunk/echobase-entities/src/main/resources/echobase-datadb.properties) =================================================================== --- trunk/echobase-entities/src/main/resources/echobase-workingdb.properties (rev 0) +++ trunk/echobase-entities/src/main/resources/echobase-workingdb.properties 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,39 @@ +### +# #%L +# T3 :: Domain +# $Id$ +# $HeadURL$ +# %% +# Copyright (C) 2010 - 2012 IRD, Codelutin, Tony Chemit +# %% +# 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% +### +# DB configuration +hibernate.show_sql=false +hibernate.format_sql=false +hibernate.use_sql_comments=false +hibernate.hbm2ddl.auto=none +hibernate.connection.username=${configuration.login} +hibernate.connection.password=${configuration.password} +hibernate.connection.url=${configuration.url} +hibernate.connection.driver_class=${configuration.driver} +hibernate.dialect=${configuration.dialect} +hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider + +# Migration configuration +#topia.service.migration=org.nuiton.topia.migration.TopiaMigrationEngine +#topia.service.migration.callback=fr.ird.t3.services.migration.T3MigrationCallback +#topia.service.migration.showSql=true + Property changes on: trunk/echobase-entities/src/main/resources/echobase-workingdb.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/echobase-entities/src/main/resources/topia-h2.properties =================================================================== --- trunk/echobase-entities/src/main/resources/topia-h2.properties 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/main/resources/topia-h2.properties 2012-09-01 11:28:26 UTC (rev 587) @@ -1,31 +0,0 @@ -### -# #%L -# EchoBase :: Entities -# -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2011 Ifremer, Codelutin -# %% -# 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% -### -hibernate.hbm2ddl.auto=update -hibernate.show_sql=false - -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.connection.driver_class=org.h2.Driver -hibernate.connection.username=sa -hibernate.connection.password=sa -hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider Modified: trunk/echobase-entities/src/main/xmi/echobase-internal.zargo =================================================================== (Binary files differ) Modified: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDateConverterTest.java =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDateConverterTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDateConverterTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -60,10 +60,10 @@ @Test public void testConvertFromBeanUtilsConverterWithOur() throws Exception { - + EchoBaseDateConverter.initDateConverter(); EntityModificationLog bean = new EntityModificationLogImpl(); - BeanUtils.setProperty(bean,EntityModificationLog.PROPERTY_MODIFICATION_DATE, DATE); + BeanUtils.setProperty(bean, EntityModificationLog.PROPERTY_MODIFICATION_DATE, DATE); Date date = bean.getModificationDate(); assertDate(date); } @@ -73,12 +73,12 @@ Assert.assertTrue(date instanceof Date); Calendar calendar = Calendar.getInstance(); calendar.setTime((Date) date); - Assert.assertEquals(2011,calendar.get(Calendar.YEAR)); - Assert.assertEquals(10,calendar.get(Calendar.MONTH)); - Assert.assertEquals(8,calendar.get(Calendar.DAY_OF_MONTH)); - Assert.assertEquals(20,calendar.get(Calendar.HOUR_OF_DAY)); - Assert.assertEquals(54,calendar.get(Calendar.MINUTE)); - Assert.assertEquals(59,calendar.get(Calendar.SECOND)); + Assert.assertEquals(2011, calendar.get(Calendar.YEAR)); + Assert.assertEquals(10, calendar.get(Calendar.MONTH)); + Assert.assertEquals(8, calendar.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(20, calendar.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(54, calendar.get(Calendar.MINUTE)); + Assert.assertEquals(59, calendar.get(Calendar.SECOND)); } } Deleted: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,78 +0,0 @@ -/* - * #%L - * EchoBase :: Entities - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase; - -import com.google.common.collect.Lists; -import fr.ifremer.echobase.entities.EchoBaseDbMetaTest; -import fr.ifremer.echobase.entities.EchoBaseEntityEnum; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Mission; -import junit.framework.Assert; -import org.junit.Test; -import org.nuiton.util.decorator.Decorator; - -import java.util.List; -import java.util.Locale; - -/** - * To test the {@link EchoBaseDecoratorProvider}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public class EchoBaseDecoratorProviderTest { - - @Test - public void getDecoratorForReferences() throws Exception { - Locale locale = Locale.FRANCE; - EchoBaseDecoratorProvider provider = new EchoBaseDecoratorProvider(); - provider.loadDecorators(locale); - List<EchoBaseEntityEnum> expectedTypes = - Lists.newArrayList(EchoBaseDbMetaTest.getContractsOf( - Mission.class.getPackage())); - - for (EchoBaseEntityEnum type : expectedTypes) { - Decorator<?> decorator = - provider.getDecoratorByType(locale, type.getContract()); - Assert.assertNotNull("Missing decorator for type : " + type, decorator); - } - } - - @Test - public void getDecoratorForData() throws Exception { - Locale locale = Locale.FRANCE; - EchoBaseDecoratorProvider provider = new EchoBaseDecoratorProvider(); - provider.loadDecorators(locale); - List<EchoBaseEntityEnum> expectedTypes = - Lists.newArrayList(EchoBaseDbMetaTest.getContractsOf( - Voyage.class.getPackage())); - - for (EchoBaseEntityEnum type : expectedTypes) { - Decorator<?> decorator = - provider.getDecoratorByType(locale, type.getContract()); - Assert.assertNotNull("Missing decorator for type : " + type, decorator); - } - } - -} Deleted: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EchoBaseDbMetaTest.java =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EchoBaseDbMetaTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EchoBaseDbMetaTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,107 +0,0 @@ -/* - * #%L - * EchoBase :: Entities - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.entities; - -import com.google.common.collect.Lists; -import fr.ifremer.echobase.entities.data.Voyage; -import fr.ifremer.echobase.entities.references.Mission; -import junit.framework.Assert; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.topia.persistence.TopiaEntity; - -import java.util.ArrayList; -import java.util.List; - -/** - * To test the class {@link EchoBaseDbMeta}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public class EchoBaseDbMetaTest { - - - protected EchoBaseDbMeta dbMetas; - - @Before - public void setUp() throws Exception { - dbMetas = EchoBaseDbMeta.newDbMeta(); - } - - - @Test - public void getReferenceTypes() { - - List<EchoBaseEntityEnum> types = - dbMetas.getReferenceTypes(); - - List<EchoBaseEntityEnum> expectedTypes = - Lists.newArrayList(getContractsOf(Mission.class.getPackage())); - - Assert.assertNotNull(types); - - for (EchoBaseEntityEnum type : expectedTypes) { - Assert.assertTrue("Missing type : " + type, types.contains(type)); - } - Assert.assertEquals(expectedTypes.size(), types.size()); - } - - @Test - public void getDataTypes() { - - List<EchoBaseEntityEnum> types = - dbMetas.getDataTypes(); - - List<EchoBaseEntityEnum> expectedTypes = - Lists.newArrayList(getContractsOf(Voyage.class.getPackage())); - - Assert.assertNotNull(types); - - for (EchoBaseEntityEnum type : expectedTypes) { - Assert.assertTrue("Missing type : " + type, types.contains(type)); - } - Assert.assertEquals(expectedTypes.size(), types.size()); - } - - /** - * Used to get all contract of a package - * - * @param entitiesPackage package contening desired entities - * @return contracts contained in entitiesPackage - */ - public static EchoBaseEntityEnum[] getContractsOf(Package entitiesPackage) { - EchoBaseEntityEnum[] echoBaseEntityEnums = EchoBaseEntityEnum.values(); - List<EchoBaseEntityEnum> refClasses = new ArrayList<EchoBaseEntityEnum>(); - for (EchoBaseEntityEnum echoBaseEntityEnum : echoBaseEntityEnums) { - - // Get all entities in package fr.ifremer.echobase.entities.references - Class<? extends TopiaEntity> contract = echoBaseEntityEnum.getContract(); - if (entitiesPackage.equals(contract.getPackage())) { - refClasses.add(echoBaseEntityEnum); - } - } - return refClasses.toArray(new EchoBaseEntityEnum[refClasses.size()]); - } -} Copied: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java (from rev 573, trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EchoBaseDbMetaTest.java) =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java (rev 0) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,108 @@ +/* + * #%L + * EchoBase :: Entities + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.persistence; + +import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Mission; +import junit.framework.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * To test the class {@link EchoBaseDbMeta}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class EchoBaseDbMetaTest { + + + protected EchoBaseDbMeta dbMetas; + + @Before + public void setUp() throws Exception { + dbMetas = EchoBaseDbMeta.newDbMeta(); + } + + + @Test + public void getReferenceTypes() { + + List<EchoBaseEntityEnum> types = + dbMetas.getReferenceTypes(); + + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(getContractsOf(Mission.class.getPackage())); + + Assert.assertNotNull(types); + + for (EchoBaseEntityEnum type : expectedTypes) { + Assert.assertTrue("Missing type : " + type, types.contains(type)); + } + Assert.assertEquals(expectedTypes.size(), types.size()); + } + + @Test + public void getDataTypes() { + + List<EchoBaseEntityEnum> types = + dbMetas.getDataTypes(); + + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(getContractsOf(Voyage.class.getPackage())); + + Assert.assertNotNull(types); + + for (EchoBaseEntityEnum type : expectedTypes) { + Assert.assertTrue("Missing type : " + type, types.contains(type)); + } + Assert.assertEquals(expectedTypes.size(), types.size()); + } + + /** + * Used to get all contract of a package + * + * @param entitiesPackage package contening desired entities + * @return contracts contained in entitiesPackage + */ + public static EchoBaseEntityEnum[] getContractsOf(Package entitiesPackage) { + EchoBaseEntityEnum[] echoBaseEntityEnums = EchoBaseEntityEnum.values(); + List<EchoBaseEntityEnum> refClasses = new ArrayList<EchoBaseEntityEnum>(); + for (EchoBaseEntityEnum echoBaseEntityEnum : echoBaseEntityEnums) { + + // Get all entities in package fr.ifremer.echobase.entities.references + Class<? extends TopiaEntity> contract = echoBaseEntityEnum.getContract(); + if (entitiesPackage.equals(contract.getPackage())) { + refClasses.add(echoBaseEntityEnum); + } + } + return refClasses.toArray(new EchoBaseEntityEnum[refClasses.size()]); + } +} Property changes on: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/persistence/EchoBaseDbMetaTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/EchoBaseIOUtil.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/EchoBaseIOUtil.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/EchoBaseIOUtil.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,140 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.nuiton.util.ZipUtil; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; -import java.util.Collection; - -/** - * Usefull methods on io. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public class EchoBaseIOUtil { - - public static void compressZipFile(File zipFile, File directory) throws IOException { - compressZipFile(zipFile, directory, true); - } - - public static void compressZipFile(File zipFile, File directory, boolean delete) throws IOException { - try { - ZipUtil.compress(zipFile, directory); - } catch (IOException eee) { - throw new EchoBaseTechnicalException( - "Can not create zip file " + zipFile, eee); - } finally { - if (delete) { - FileUtils.deleteDirectory(directory); - } - } - } - - public static void copyFile(File destinationFile, - Collection<File> filesToMerge) throws IOException { - if (!CollectionUtils.isEmpty(filesToMerge)) { - - if (filesToMerge.size() == 1) { - - // simple copy - FileUtils.copyFile(filesToMerge.iterator().next(), destinationFile); - } else { - - // must merge all files - mergeFiles(destinationFile, filesToMerge); - } - } - } - - public static void mergeFiles(File destination, - Iterable<File> fileToMerges) throws IOException { - - BufferedWriter writer = new BufferedWriter(new FileWriter(destination)); - try { - boolean firstLine = false; - for (File toMergeFile : fileToMerges) { - BufferedReader reader = new BufferedReader(new FileReader(toMergeFile)); - try { - // pass the first line (header) - String line = reader.readLine(); - if (!firstLine) { - - // add the csv header - writer.write(line); - - firstLine = true; - } - while ((line = reader.readLine()) != null) { - writer.newLine(); - writer.write(line); - } - } finally { - reader.close(); - } - - } - } finally { - writer.close(); - } - } - - public static int countLines(File file) { - int result = 0; - - LineNumberReader reader = null; - try { - reader = new LineNumberReader( - new InputStreamReader(FileUtils.openInputStream(file)) - ); - while (reader.readLine() != null) { - } - result = reader.getLineNumber(); - reader.close(); - - } catch (IOException e) { - throw new EchoBaseTechnicalException( - "Could not count lines of file " + file, e); - } finally { - if (reader != null) { - IOUtils.closeQuietly(reader); - } - } - return result; - } - - protected EchoBaseIOUtil() { - } -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/InputFile.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,94 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase; - -import java.io.File; -import java.io.Serializable; - -/** - * Object to receive a uploaded file. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public class InputFile implements Serializable { - - private static final long serialVersionUID = 1L; - - /** Name of the file (from the client side). */ - protected String fileName; - - /** Location of the uploaded file (from the server side). */ - protected File file; - - /** Content type of the uploaded file. */ - protected String contentType; - - /** Label of the import. */ - protected String label; - - public static InputFile newFile(String label) { - return new InputFile(label); - } - - protected InputFile(String label) { - this.label = label; - } - - public String getFileName() { - return fileName; - } - - public File getFile() { - return file; - } - - public String getLabel() { - return label; - } - - public String getContentType() { - return contentType; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public void setFile(File file) { - this.file = file; - } - - public void setContentType(String contentType) { - this.contentType = contentType; - } - - public void setLabel(String label) { - this.label = label; - } - - public boolean hasFile() { - return file != null; - } -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchobaseActionConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,197 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import org.nuiton.util.StringUtil; - -import java.io.IOException; -import java.io.Serializable; - -/** - * Abstract long action configuration. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public abstract class AbstractEchobaseActionConfiguration implements Serializable, ProgressionModel { - - private static final long serialVersionUID = 1L; - - private final ProgressionModel progressionModel; - - private Exception error; - - protected AbstractEchobaseActionConfiguration() { - progressionModel = new DefaultProgressionModel(); - } - - protected AbstractEchobaseActionConfiguration(ProgressionModel progressionModel) { - this.progressionModel = progressionModel; - } - - @Override - public final long getNbSteps() { - return progressionModel.getNbSteps(); - } - - @Override - public final float getProgression() { - return progressionModel.getProgression(); - } - - @Override - public final void setProgression(float progression) { - progressionModel.setProgression(progression); - } - - @Override - public final void incrementsProgression() { - progressionModel.incrementsProgression(); - } - - @Override - public final void setNbSteps(long nbSteps) { - progressionModel.setNbSteps(nbSteps); - } - - @Override - public final long getStartTime() { - return progressionModel.getStartTime(); - } - - @Override - public final void setStartTime(long startTime) { - progressionModel.setStartTime(startTime); - } - - @Override - public final long getEndTime() { - return progressionModel.getEndTime(); - } - - @Override - public final void setEndTime(long endTime) { - progressionModel.setEndTime(endTime); - } - - public Exception getError() { - return error; - } - - public void setError(Exception error) { - this.error = error; - } - - @Override - public String getActionTime() { - return progressionModel.getActionTime(); - } - - public void beginAction() { - setStartTime(System.nanoTime()); - } - - public void endAction() { - setEndTime(System.nanoTime()); - } - - public void destroy() throws IOException { - } - - /** - * Default progression model implementation. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ - public static class DefaultProgressionModel implements ProgressionModel { - - private static final long serialVersionUID = 1L; - - private long nbSteps; - - private float stepIncrement; - - private float progression; - - private long startTime; - - private long endTime; - - @Override - public long getNbSteps() { - return nbSteps; - } - - @Override - public float getProgression() { - return progression; - } - - @Override - public void setProgression(float progression) { - this.progression = progression; - } - - @Override - public long getStartTime() { - return startTime; - } - - @Override - public void setStartTime(long startTime) { - this.startTime = startTime; - } - - @Override - public long getEndTime() { - return endTime; - } - - - @Override - public void setEndTime(long endTime) { - this.endTime = endTime; - } - - @Override - public final void incrementsProgression() { - setProgression(progression + stepIncrement); - } - - @Override - public final void setNbSteps(long nbSteps) { - - this.nbSteps = nbSteps; - stepIncrement = 100f / nbSteps; - } - - @Override - public String getActionTime() { - long sTime = getStartTime(); - long eTime = getEndTime(); - return StringUtil.convertTime(eTime - sTime); - } - } -} Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -30,6 +30,7 @@ import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EntityModificationLog; +import fr.ifremer.echobase.entities.EntityModificationLogDAO; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -131,7 +132,7 @@ List<E> result; EchoBaseEntityEnum entityEnum = tableMeta.getSource(); try { - TopiaDAO<E> dao = getDAO(entityEnum); + TopiaDAO<E> dao = (TopiaDAO<E>) getDAO(entityEnum.getContract()); // first query to count datas TopiaQuery countQuery = dao.createQuery("e"); @@ -355,7 +356,7 @@ String id = entity.getTopiaId(); try { - TopiaDAO<TopiaEntity> dao = getDAO(tableMeta.getSource()); + TopiaDAO<?> dao = getDAO(tableMeta.getSource().getContract()); TopiaEntity entityToSave; @@ -436,8 +437,7 @@ if (monitor == null) { // no monitor, means this is a creation of an object - buffer.append(l_( - l, "echobase.info.newEntityCreated", topiaId)); + buffer.append(l_(l, "echobase.info.newEntityCreated", topiaId)); } else { PropertyDiff[] propertyDiffs = monitor.getPropertyDiffs(); @@ -483,8 +483,8 @@ } } - TopiaDAO<EntityModificationLog> dao = - getDAO(EntityModificationLog.class); + EntityModificationLogDAO dao = + getDAO(EntityModificationLog.class, EntityModificationLogDAO.class); dao.create( EntityModificationLog.PROPERTY_ENTITY_TYPE, tableMeta.getSource().name(), Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DecoratorService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -26,7 +26,64 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import fr.ifremer.echobase.EchoBaseDecoratorProvider; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.ExportQuery; +import fr.ifremer.echobase.entities.WorkingDbConfiguration; +import fr.ifremer.echobase.entities.data.Category; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Data; +import fr.ifremer.echobase.entities.data.DataAcquisition; +import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.data.Echotype; +import fr.ifremer.echobase.entities.data.GearMetadataValue; +import fr.ifremer.echobase.entities.data.LengthAgeKey; +import fr.ifremer.echobase.entities.data.LengthWeightKey; +import fr.ifremer.echobase.entities.data.Operation; +import fr.ifremer.echobase.entities.data.OperationMetadataValue; +import fr.ifremer.echobase.entities.data.Result; +import fr.ifremer.echobase.entities.data.Sample; +import fr.ifremer.echobase.entities.data.SampleData; +import fr.ifremer.echobase.entities.data.Transect; +import fr.ifremer.echobase.entities.data.Transit; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AcousticInstrument; +import fr.ifremer.echobase.entities.references.AgeCategory; +import fr.ifremer.echobase.entities.references.AreaOfOperation; +import fr.ifremer.echobase.entities.references.Calibration; +import fr.ifremer.echobase.entities.references.CategoryMeaning; +import fr.ifremer.echobase.entities.references.CategoryRef; +import fr.ifremer.echobase.entities.references.CategoryType; +import fr.ifremer.echobase.entities.references.CellMethod; +import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.entities.references.DataMetadata; +import fr.ifremer.echobase.entities.references.DataProtocol; +import fr.ifremer.echobase.entities.references.DataQuality; +import fr.ifremer.echobase.entities.references.DataType; +import fr.ifremer.echobase.entities.references.DepthStratum; +import fr.ifremer.echobase.entities.references.EchotypeCategory; +import fr.ifremer.echobase.entities.references.Gear; +import fr.ifremer.echobase.entities.references.GearCharacteristic; +import fr.ifremer.echobase.entities.references.GearCharacteristicValue; +import fr.ifremer.echobase.entities.references.GearMetadata; +import fr.ifremer.echobase.entities.references.Impacte; +import fr.ifremer.echobase.entities.references.MeasureType; +import fr.ifremer.echobase.entities.references.MeasurementMetadata; +import fr.ifremer.echobase.entities.references.Mission; +import fr.ifremer.echobase.entities.references.OperationEvent; +import fr.ifremer.echobase.entities.references.OperationMetadata; +import fr.ifremer.echobase.entities.references.ReferenceDatum; +import fr.ifremer.echobase.entities.references.ReferenceDatumType; +import fr.ifremer.echobase.entities.references.ReferencingMethod; +import fr.ifremer.echobase.entities.references.SampleDataType; +import fr.ifremer.echobase.entities.references.SampleType; +import fr.ifremer.echobase.entities.references.SexCategory; +import fr.ifremer.echobase.entities.references.SizeCategory; +import fr.ifremer.echobase.entities.references.Species; +import fr.ifremer.echobase.entities.references.SpeciesCategory; +import fr.ifremer.echobase.entities.references.Strata; +import fr.ifremer.echobase.entities.references.TSParameters; +import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.entities.references.VesselType; import org.apache.commons.collections.CollectionUtils; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.decorator.Decorator; @@ -111,4 +168,186 @@ return decorator; } + static class EchoBaseDecoratorProvider extends DecoratorMulti18nProvider { + + @Override + protected void loadDecorators(Locale locale) { + + // EchoBaseUser decorator + registerJXPathDecorator(locale, EchoBaseUser.class, "${email}$s"); + + // ExportQuery decorator + registerJXPathDecorator(locale, ExportQuery.class, "${name}$s - ${description}$s"); + + // WorkingDbConfiguration decorator + registerJXPathDecorator(locale, WorkingDbConfiguration.class, "${url}$s - ${login}$s (${description}$s)"); + + // AcousticInstrument decorator + registerJXPathDecorator(locale, AcousticInstrument.class, "${id}$s"); + + // AgeCategory decorator + registerJXPathDecorator(locale, AgeCategory.class, "${name}$s"); + + // AreaOfOperation decorator + registerJXPathDecorator(locale, AreaOfOperation.class, "${name}$s"); + + // Calibration decorator + registerJXPathDecorator(locale, Calibration.class, "${date}$s - acquisition ${aquisitionMethod}$s"); + + // Category decorator + registerJXPathDecorator(locale, Category.class, "${echotypeLabel}$s ${speciesLabel}$s ${processedAgeLabel}$s ${processedLengthLabel}$s"); + + // CategoryMeaning decorator + registerJXPathDecorator(locale, CategoryMeaning.class, "${name}$s"); + + // CategoryRef decorator + registerJXPathDecorator(locale, CategoryRef.class, "${genusSpecies}$s"); + + // CategoryType decorator + registerJXPathDecorator(locale, CategoryType.class, "${name}$s"); + + // CellMethod decorator + registerJXPathDecorator(locale, CellMethod.class, "${name}$s"); + + // CellType decorator + registerJXPathDecorator(locale, CellType.class, "${name}$s"); + + // DataMetadata decorator + registerJXPathDecorator(locale, DataMetadata.class, "${name}$s - ${standardName}$s"); + + // DataProtocol decorator + registerJXPathDecorator(locale, DataProtocol.class, "${description}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]"); + + // DataQuality decorator + registerJXPathDecorator(locale, DataQuality.class, "${qualityDataFlagValues}$s - ${flagMeanings}$s"); + + // DataType decorator + registerJXPathDecorator(locale, DataType.class, "${name}$s"); + + // DepthStratum decorator + registerJXPathDecorator(locale, DepthStratum.class, "${id}$s - ${meaning}$s"); + + // Echotype decorator + registerJXPathDecorator(locale, Echotype.class, "${id}$s - ${name}$s"); + + // EchotypeCategory decorator + registerJXPathDecorator(locale, EchotypeCategory.class, "${name}$s"); + + // Gear decorator + registerJXPathDecorator(locale, Gear.class, "${name}$s [ ${validSince}$td/%2$tm/%2$tY - ${invalidSince}$td/%3$tm/%3$tY ]"); + + // GearCaracteristic decorator + registerJXPathDecorator(locale, GearCharacteristic.class, "${name}$s"); + + // GearMetadata decorator + registerJXPathDecorator(locale, GearMetadata.class, "${name}$s (${operationEvent/name}$s)"); + + // GearCharacteristicValue decorator + registerJXPathDecorator(locale, GearCharacteristicValue.class, "${dataValue}$s"); + + // GearMetadataValue decorator + registerJXPathDecorator(locale, GearMetadataValue.class, "${dataValue}$s"); + + // Impacte decorator + registerJXPathDecorator(locale, Impacte.class, "${measurementUnit}$s - ${species/genusSpecies}"); + + // LengthAgeKey decorator + registerJXPathDecorator(locale, LengthAgeKey.class, "Age ${age}$s - Length ${length}"); + + // MeasurementMetadata decorator + registerJXPathDecorator(locale, MeasurementMetadata.class, "${name}$s"); + + // MeasureType decorator + registerJXPathDecorator(locale, MeasureType.class, "${name}$s"); + + // Mission decorator + registerJXPathDecorator(locale, Mission.class, "${name}$s"); + + // OperationEvent decorator + registerJXPathDecorator(locale, OperationEvent.class, "${name}$s"); + + // OperationMetadata decorator + registerJXPathDecorator(locale, OperationMetadata.class, "${name}$s"); + + // ReferenceDatum decorator + registerJXPathDecorator(locale, ReferenceDatum.class, "${id}$s"); + + // ReferenceDatumType decorator + registerJXPathDecorator(locale, ReferenceDatumType.class, "${name}$s"); + + // ReferencingMethod decorator + registerJXPathDecorator(locale, ReferencingMethod.class, "${name}$s"); + + // SampleDataType decorator + registerJXPathDecorator(locale, SampleDataType.class, "${name}$s"); + + // SampleType decorator + registerJXPathDecorator(locale, SampleType.class, "${name}$s - level ${level}$s"); + + // SexCategory decorator + registerJXPathDecorator(locale, SexCategory.class, "${name}$s"); + + // SizeCategory decorator + registerJXPathDecorator(locale, SizeCategory.class, "${name}$s"); + + // Species decorator + registerJXPathDecorator(locale, Species.class, "${genusSpecies}$s (${baracoudaCode}$s)"); + + // SpeciesCategory decorator + registerJXPathDecorator(locale, SpeciesCategory.class, "${species/genusSpecies}$s ${sizeCategoryLabel}$s ${ageCategoryLabel}$s ${sexCategoryLabel}$s"); + + // Strata decorator + registerJXPathDecorator(locale, Strata.class, "Latitude <${minLatitude}$s - ${maxLatitude}$s>, Longitude <${minLongitude}$s - ${maxLongitude}$s>"); + + //TODO + // TSParameters decorator + registerJXPathDecorator(locale, TSParameters.class, "${}$s"); + + // Vessel decorator + registerJXPathDecorator(locale, Vessel.class, "${name}$s"); + + // VesselType decorator + registerJXPathDecorator(locale, VesselType.class, "${name}$s"); + + // LengthWeightKey decorator + registerJXPathDecorator(locale, LengthWeightKey.class, "Species ${species/genusSpecies}$s - a=${aParameter}$s, b=${bParameter}$s"); + + // Cell decorator + registerJXPathDecorator(locale, Cell.class, "${name}$s"); + + // Data decorator + registerJXPathDecorator(locale, Data.class, "${dataValue}$s"); + + // DataAcquisition decorator + registerJXPathDecorator(locale, DataAcquisition.class, "${acousticInstrument/id}$s "); + + // DataProcessing decorator + registerJXPathDecorator(locale, DataProcessing.class, "${id}$s"); + + // Operation decorator + registerJXPathDecorator(locale, Operation.class, "${startDate}$td/%1$tm/%1$tY - ${endDate}$td/%2$tm/%2$tY"); + + // OperationMetadataValue decorator + registerJXPathDecorator(locale, OperationMetadataValue.class, "${operationMetadata/name} - ${dataValue}$s"); + + // Result decorator + registerJXPathDecorator(locale, Result.class, "${resultvalue}$s"); + + // Sample decorator + registerJXPathDecorator(locale, Sample.class, "${resultvalue}$s"); + + // SampleData decorator + registerJXPathDecorator(locale, SampleData.class, "${resultvalue}$s"); + + // Transect decorator + registerJXPathDecorator(locale, Transect.class, "${title}$s - Vessel ${vessel/name}$s"); + + // Transit decorator + registerJXPathDecorator(locale, Transit.class, "${startTime}$td/%1$tm/%1$tY - ${endTime}$td/%2$tm/%2$tY"); + + // Voyage decorator + registerJXPathDecorator(locale, Voyage.class, "${name}$s [ ${startDate}$td/%2$tm/%2$tY - ${endDate}$td/%3$tm/%3$tY ]"); + } + } + } Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultEchoBaseServiceContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,149 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import com.google.common.base.Preconditions; -import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; -import org.apache.commons.lang3.time.DateUtils; -import org.nuiton.topia.TopiaContext; - -import java.util.Date; -import java.util.Locale; - -/** - * Instances of this class will be given to service factory. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class DefaultEchoBaseServiceContext implements EchoBaseServiceContext { - - protected TopiaContext internalTransaction; - - protected TopiaContext transaction; - - protected EchoBaseServiceFactory serviceFactory; - - protected EchoBaseConfiguration configuration; - - protected Locale locale; - - protected EchoBaseDbMeta dbMeta; - - public static EchoBaseServiceContext newContext( - EchoBaseServiceContext serviceContext, - TopiaContext internalTransaction, - TopiaContext transaction) { - return newContext(serviceContext.getLocale(), - internalTransaction, - transaction, - serviceContext.getConfiguration(), - serviceContext.getDbMeta(), - serviceContext.getServiceFactory() - ); - } - - public static EchoBaseServiceContext newContext( - Locale locale, - TopiaContext internalTransaction, - TopiaContext transaction, - EchoBaseConfiguration configuration, - EchoBaseDbMeta dbMeta, - EchoBaseServiceFactory serviceFactory) { - return new DefaultEchoBaseServiceContext(locale, - internalTransaction, - transaction, - configuration, - dbMeta, - serviceFactory); - } - - protected DefaultEchoBaseServiceContext(Locale locale, - TopiaContext internalTransaction, - TopiaContext transaction, - EchoBaseConfiguration configuration, - EchoBaseDbMeta dbMeta, - EchoBaseServiceFactory serviceFactory) { - this.locale = locale; - this.internalTransaction = internalTransaction; - this.transaction = transaction; - this.configuration = configuration; - this.dbMeta = dbMeta; - this.serviceFactory = serviceFactory; - } - - @Override - public TopiaContext getInternalTransaction() { - return internalTransaction; - } - - @Override - public void setInternalTransaction(TopiaContext internalTransaction) { - this.internalTransaction = internalTransaction; - } - - @Override - public TopiaContext getTransaction() { - Preconditions.checkNotNull(transaction); - return transaction; - } - - @Override - public void setTransaction(TopiaContext transaction) { - this.transaction = transaction; - } - - @Override - public Locale getLocale() { - return locale; - } - - @Override - public <E extends EchoBaseService> E newService(Class<E> clazz) { - return serviceFactory.newService(clazz, this); - } - - @Override - public Date newDate() { - Date result = new Date(); - DateUtils.setMilliseconds(result, 0); - return result; - } - - @Override - public EchoBaseConfiguration getConfiguration() { - return configuration; - } - - @Override - public EchoBaseDbMeta getDbMeta() { - return dbMeta; - } - - @Override - public EchoBaseServiceFactory getServiceFactory() { - return serviceFactory; - } -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,39 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -/** - * Contract to place on each EchoBase service to push the {@code serviceContext} - * inside the service. - * - * @author tchemit <chemit@codelutin.com> - * @see EchoBaseServiceContext - * @since 0.1 - */ -public interface EchoBaseService { - - void setServiceContext(EchoBaseServiceContext serviceContext); - -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,92 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; -import org.nuiton.topia.TopiaContext; - -import java.util.Date; -import java.util.Locale; - -/** - * This contract represents objects you must provide when asking for a service. - * Objects provided may be injected in services returned by - * {@link EchoBaseServiceFactory#newService(Class, EchoBaseServiceContext)} - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public interface EchoBaseServiceContext { - - /** - * Get the internal db current transaction. - * <p/> - * Internal db is the db with everything but not any echobase data - * (security, db connexion, sql queries ?). - * - * @return current internal db transaction - */ - TopiaContext getInternalTransaction(); - - /** - * Set the internal db current transaction. - * - * @param transaction internal db transaction to set - */ - void setInternalTransaction(TopiaContext transaction); - - /** - * Get the working db transaction. - * <p/> - * Working db contains echobase data, but nothing about technical - * stuff (security, connexon,...). - * <p/> - * This transaction can be {@code null} if no working db is used. - * - * @return the current working db transaction (or {@code null} if not setted) - */ - TopiaContext getTransaction(); - - /** - * Set the working db transaction. - * - * @param transaction working db transaction to set - */ - void setTransaction(TopiaContext transaction); - - Locale getLocale(); - - EchoBaseConfiguration getConfiguration(); - - EchoBaseDbMeta getDbMeta(); - - EchoBaseServiceFactory getServiceFactory(); - - <E extends EchoBaseService> E newService(Class<E> clazz); - - Date newDate(); - -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceFactory.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceFactory.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceFactory.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,59 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import fr.ifremer.echobase.EchoBaseTechnicalException; - -import java.lang.reflect.InvocationTargetException; - -/** - * Factory of services. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EchoBaseServiceFactory { - - public <E extends EchoBaseService> E newService(Class<E> clazz, - EchoBaseServiceContext serviceContext) { - // instantiate service using empty constructor - E service; - try { - service = clazz.getConstructor().newInstance(); - } catch (InstantiationException e) { - throw new EchoBaseTechnicalException(e); - } catch (IllegalAccessException e) { - throw new EchoBaseTechnicalException(e); - } catch (InvocationTargetException e) { - throw new EchoBaseTechnicalException(e); - } catch (NoSuchMethodException e) { - throw new EchoBaseTechnicalException(e); - } - - service.setServiceContext(serviceContext); - - return service; - } - -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/EchoBaseServiceSupport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,192 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; -import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.entities.EchoBaseDAOHelper; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; -import fr.ifremer.echobase.entities.EchoBaseEntityEnum; -import org.apache.commons.lang3.StringUtils; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; - -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * @author sletellier <letellier@codelutin.com> - * @since 0.1 - */ -public class EchoBaseServiceSupport implements EchoBaseService { - - protected EchoBaseServiceContext serviceContext; - - protected Map<Class<?>, EchoBaseService> services; - - @Override - public void setServiceContext(EchoBaseServiceContext serviceContext) { - this.serviceContext = serviceContext; - } - - public final <E extends TopiaEntity> List<E> getEntities(EchoBaseEntityEnum entityType) { - Class<E> contract = (Class<E>) entityType.getContract(); - return getEntities(contract); - } - - public final <E extends TopiaEntity> List<E> getEntities(Class<E> entityType) { - Preconditions.checkNotNull(entityType); - try { - List<E> result = getDAO(entityType).findAll(); - return result; - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException( - "Could not obtain data for type " + entityType, eee); - } - } - - public final <E extends TopiaEntity> long countEntities(Class<E> entityType) { - Preconditions.checkNotNull(entityType); - try { - long result = getDAO(entityType).count(); - return result; - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException( - "Could not count data for type " + entityType, eee); - } - } - - public final <E extends TopiaEntity> E getEntityById(Class<E> entityType, String id) { - Preconditions.checkNotNull(entityType); - Preconditions.checkArgument(StringUtils.isNotEmpty(id)); - try { - E result = getDAO(entityType).findByTopiaId(id); - return result; - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException( - "Could not obtain data of id [" + id + "] for type " + - entityType, eee); - } - } - - public final <E extends TopiaEntity> E getEntityByProperty(Class<E> entityType, - String propertyId, - Object propertyValue) { - Preconditions.checkNotNull(entityType); - Preconditions.checkArgument(StringUtils.isNotEmpty(propertyId)); - try { - E result = getDAO(entityType).findByProperty(propertyId, propertyValue); - return result; - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException( - "Could not obtain data of property [" + propertyId + "] for type " + - entityType, eee); - } - } - - public TopiaContext getInternalTransaction() { - return serviceContext.getInternalTransaction(); - } - - protected final TopiaContext getTransaction() { - return serviceContext.getTransaction(); - } - - protected final Locale getLocale() { - return serviceContext.getLocale(); - } - - protected final EchoBaseDbMeta getDbMeta() { - return serviceContext.getDbMeta(); - } - - protected final EchoBaseConfiguration getConfiguration() { - return serviceContext.getConfiguration(); - } - - protected final Date newDate() { - return serviceContext.newDate(); - } - - protected char getCsvSeparator() { - return getConfiguration().getCsvSeparator(); - } - - protected final <E extends EchoBaseService> E getService(Class<E> serviceClass) { - if (services == null) { - services = Maps.newHashMap(); - } - E service = (E) services.get(serviceClass); - if (service == null) { - service = serviceContext.newService(serviceClass); - services.put(serviceClass, service); - } - return service; - } - - protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(EchoBaseEntityEnum entityEnum) { - TopiaDAO<E> dao = getDAO((Class<E>) entityEnum.getContract()); - return dao; - } - - protected final <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityType) { - try { - TopiaDAO<E> dao = EchoBaseDAOHelper.<E, TopiaDAO<E>>getDAO( - getTransaction(), - entityType); - - return dao; - } catch (TopiaException e) { - throw new EchoBaseTechnicalException("Could not obtain dao for type " + entityType, e); - } - } - - protected final <E extends TopiaEntity, D extends TopiaDAO<E>> D getDAO(Class<E> entityType, Class<D> daoType) { - TopiaDAO<E> dao = getDAO( - entityType); - Preconditions.checkState(daoType.isAssignableFrom(dao.getClass())); - return (D) dao; - } - - public final void commitTransaction(String errorMessage) { - try { - getTransaction().commitTransaction(); - } catch (TopiaException eee) { - throw new EchoBaseTechnicalException(errorMessage, eee); - } - } - - protected final void flushTransaction() throws TopiaException { - TopiaContextImplementor tx = (TopiaContextImplementor) getTransaction(); - tx.getHibernate().flush(); - } - -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ProgressionModel.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,55 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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.echobase.services; - -import java.io.Serializable; - -/** - * Contract for a progression model while long service actions. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public interface ProgressionModel extends Serializable { - - long getNbSteps(); - - float getProgression(); - - void setProgression(float progression); - - void incrementsProgression(); - - void setNbSteps(long nbSteps); - - long getStartTime(); - - void setStartTime(long startTime); - - long getEndTime(); - - void setEndTime(long endTime); - - String getActionTime(); -} Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -111,7 +111,7 @@ } } userToCreateOrUpdate.setAdmin(user.isAdmin()); - commitTransaction("Could not create or update user"); + commitInternalTransaction("Could not create or update user"); } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); } @@ -122,7 +122,7 @@ EchoBaseUser userToDelete = getEntityById(EchoBaseUser.class, user.getTopiaId()); getDAO(EchoBaseUser.class).delete(userToDelete); - commitTransaction("Could not delete user"); + commitInternalTransaction("Could not delete user"); } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/embeddedapplication/EmbeddedApplicationService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/embeddedapplication/EmbeddedApplicationService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/embeddedapplication/EmbeddedApplicationService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,16 +25,17 @@ import com.google.common.base.Charsets; import com.google.common.base.Preconditions; -import fr.ifremer.echobase.EchoBaseIOUtil; +import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.JdbcConfiguration; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.ExportQuery; import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.services.UserService; -import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException; +import fr.ifremer.echobase.services.exportquery.ExportQueryNameAlreadyExistException; import fr.ifremer.echobase.services.exportdb.ExportDbConfiguration; import fr.ifremer.echobase.services.exportdb.ExportDbService; import fr.ifremer.echobase.services.exportquery.ExportQueryService; @@ -101,8 +102,9 @@ //FIXME Review this to works with internal and working db... // create h2 db in /db + JdbcConfiguration dbConf = JdbcConfiguration.newEmbeddedConfig(dir); TopiaContext rootContext = - new EchoBaseTopiaRootContextFactory().newEmbeddedDatabase(dir); + EchobaseTopiaContexts.newWorkingDb(dbConf); TopiaContext topiaContext = null; try { @@ -227,8 +229,7 @@ "Could not begin transaction on main db"); try { serviceContext.setTransaction(newTx); - ExportDbService exportDbService = - serviceContext.newService(ExportDbService.class); + ExportDbService exportDbService = getService(ExportDbService.class); exportDbService.exportPartialDb(exportconfiguration, false); } catch (IOException eee) { rollbackTransaction( @@ -321,7 +322,7 @@ // get user service from h2 db UserService userService = - newServiceContext.newService(UserService.class); + newServiceContext.getService(UserService.class); // create admin user userService.createDefaultUsers(); @@ -344,7 +345,7 @@ // create export sql service from h2 db ExportQueryService exportQueryService = - newServiceContext.newService(ExportQueryService.class); + newServiceContext.getService(ExportQueryService.class); // get all queries from h2 db queries = exportQueryService.getEntities(ExportQuery.class); @@ -366,7 +367,7 @@ importConfiguration.setWorkingDirectory(importTempDir); ImportDbService importDbService = - newServiceContext.newService(ImportDbService.class); + newServiceContext.getService(ImportDbService.class); importDbService.importDb(importConfiguration, admin, false, true); } Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,35 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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.echobase.services.exceptions; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class ExportQueryNameAlreadyExistException extends Exception { - - private static final long serialVersionUID = 1L; -} Deleted: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java 2012-09-01 11:28:26 UTC (rev 587) @@ -1,34 +0,0 @@ -/* - * #%L - * EchoBase :: Services - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 - 2012 Ifremer, Codelutin - * %% - * 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.echobase.services.exceptions; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class MissionNameAlreadyExistException extends Exception { - private static final long serialVersionUID = 1L; -} Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportdb/ExportDbService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,8 +25,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Sets; -import fr.ifremer.echobase.EchoBaseIOUtil; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.io.EchoBaseIOUtil; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryNameAlreadyExistException.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/ExportQueryNameAlreadyExistException.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryNameAlreadyExistException.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryNameAlreadyExistException.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,35 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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.echobase.services.exportquery; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class ExportQueryNameAlreadyExistException extends Exception { + + private static final long serialVersionUID = 1L; +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryNameAlreadyExistException.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exportquery/ExportQueryService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -28,9 +28,9 @@ import fr.ifremer.echobase.EchoBaseTechnicalException; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.ExportQuery; +import fr.ifremer.echobase.entities.ExportQueryDAO; import fr.ifremer.echobase.entities.ExportQueryImpl; import fr.ifremer.echobase.services.EchoBaseServiceSupport; -import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -68,8 +68,10 @@ public ExportQuery createOrUpdate(ExportQuery exportQuery, EchoBaseUser user) throws ExportQueryNameAlreadyExistException { try { - TopiaDAO<ExportQuery> dao = getDAO(ExportQuery.class); + ExportQueryDAO dao = getDAO(ExportQuery.class, + ExportQueryDAO.class); + // No id, creating new one entity String id = exportQuery.getTopiaId(); @@ -95,7 +97,7 @@ // } // check query does not already exists with this name - boolean queryExists = dao.existsByQuery(hql, params.toArray()); + boolean queryExists = dao.existsByQuery("SELECT COUNT(*) " + hql, params.toArray()); // boolean queryExists = dao.existByQuery(query); @@ -120,7 +122,7 @@ } // dao.update(entityToSave); - getTransaction().commitTransaction(); + commitInternalTransaction("Could not create export query"); return entityToSave; } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); @@ -133,7 +135,7 @@ ExportQuery entityToDelete = dao.findByTopiaId(topiaId); dao.delete(entityToDelete); - getTransaction().commitTransaction(); + commitInternalTransaction("Could not delete export query"); } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,8 +24,8 @@ package fr.ifremer.echobase.services.importdata; import com.google.common.collect.Lists; -import fr.ifremer.echobase.EchoBaseIOUtil; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.EchoBaseIOUtil; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.services.AbstractEchobaseActionConfiguration; import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AbstractImportDataService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -28,7 +28,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import java.util.Locale; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/AcousticImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import com.google.common.collect.Lists; import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBasePredicates; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import java.util.Locale; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CatchesImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBasePredicates; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Operation; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import java.util.Locale; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/CommonImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Transect; @@ -40,7 +40,6 @@ import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.MissionDAO; import fr.ifremer.echobase.entities.references.Vessel; -import fr.ifremer.echobase.services.exceptions.MissionNameAlreadyExistException; import fr.ifremer.echobase.services.importdata.csv.TransectImportModel; import fr.ifremer.echobase.services.importdata.csv.TransectImportRow; import fr.ifremer.echobase.services.importdata.csv.TransitImportModel; @@ -130,8 +129,7 @@ throw new MissionNameAlreadyExistException(); } Mission result = create(dao, mission); - commitTransaction("Could not create mission " + - mission.getName()); + commitTransaction("Could not create mission " + mission.getName()); return result; } catch (TopiaException eee) { throw new EchoBaseTechnicalException(eee); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ImportException.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import org.nuiton.util.csv.ImportRuntimeException; import java.util.Locale; Copied: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/MissionNameAlreadyExistException.java (from rev 573, trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/exceptions/MissionNameAlreadyExistException.java) =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/MissionNameAlreadyExistException.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/MissionNameAlreadyExistException.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,34 @@ +/* + * #%L + * EchoBase :: Services + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 - 2012 Ifremer, Codelutin + * %% + * 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.echobase.services.importdata; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class MissionNameAlreadyExistException extends Exception { + private static final long serialVersionUID = 1L; +} Property changes on: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/MissionNameAlreadyExistException.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import java.util.Locale; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/OperationImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,7 +25,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.GearMetadataValue; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,7 +25,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Category; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsImportConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import java.util.Locale; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsMapCellImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsMapCellImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsMapCellImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -26,7 +26,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Category; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsRegionCellImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -26,7 +26,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Category; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsVoyageImportService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsVoyageImportService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdata/ResultsVoyageImportService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -28,7 +28,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBasePredicates; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Echotype; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/DefaultImportStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/DefaultImportStrategy.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/DefaultImportStrategy.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ import fr.ifremer.echobase.entities.EchoBaseEntityEnum; -import fr.ifremer.echobase.entities.EchoBasePersistenceHelper; +import fr.ifremer.echobase.persistence.EchoBasePersistenceHelper; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbConfiguration.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbConfiguration.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbConfiguration.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdb; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.AbstractEchobaseActionConfiguration; import fr.ifremer.echobase.services.ProgressionModel; import org.apache.commons.io.FileUtils; Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbService.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/importdb/ImportDbService.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,7 +24,7 @@ package fr.ifremer.echobase.services.importdb; import com.google.common.collect.Lists; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EntityModificationLog; Modified: trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties =================================================================== --- trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/resources/i18n/echobase-services_en_GB.properties 2012-09-01 11:28:26 UTC (rev 587) @@ -45,5 +45,6 @@ echobase.importError.transit.notfound= echobase.importLabel.withFile=%s with file %s echobase.info.modifiedProperty=Property '%s', old value\: '%s', new value\: '%s' +echobase.info.newEntityCreated= echobase.info.onePropertyModified=One property was modified\: echobase.info.somePropertiesModified=%s properties were modified\: Modified: trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties =================================================================== --- trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/main/resources/i18n/echobase-services_fr_FR.properties 2012-09-01 11:28:26 UTC (rev 587) @@ -45,5 +45,6 @@ echobase.importError.transit.notfound=Transit non trouvé pour la campagne %s et la date %s (ligne %s) echobase.importLabel.withFile=%s avec le fichier %s echobase.info.modifiedProperty=Propriété '%s', ancienne valeur \: '%s', nouvelle valeur \: '%s' +echobase.info.newEntityCreated= echobase.info.onePropertyModified=Une propriété a été modifiée \: echobase.info.somePropertiesModified=%s propriétés ont été modifiées \: Copied: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DecoratorServiceTest.java (from rev 573, trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java) =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DecoratorServiceTest.java (rev 0) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DecoratorServiceTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,74 @@ +/* + * #%L + * EchoBase :: Entities + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * 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.echobase.services; + +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import junit.framework.Assert; +import org.junit.Test; +import org.nuiton.util.decorator.Decorator; + +import java.util.List; +import java.util.Locale; + +/** + * To test the {@link DecoratorService}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class DecoratorServiceTest extends EchoBaseTestServiceSupport { + + @Override + protected FakeEchoBaseServiceContext initContext() { + return new FakeEchoBaseServiceContext(null); + } + + @Test + public void getDecoratorForReferences() throws Exception { + Locale locale = serviceContext.getLocale(); + DecoratorService service = getService(DecoratorService.class); + List<EchoBaseEntityEnum> expectedTypes = serviceContext.getDbMeta().getReferenceTypes(); + + for (EchoBaseEntityEnum type : expectedTypes) { + Decorator<?> decorator = + service.getDecorator(locale, type.getContract(), null); + Assert.assertNotNull("Missing decorator for type : " + type, decorator); + } + } + + @Test + public void getDecoratorForData() throws Exception { + Locale locale = serviceContext.getLocale(); + DecoratorService service = getService(DecoratorService.class); + List<EchoBaseEntityEnum> expectedTypes = + serviceContext.getDbMeta().getDataTypes(); + + for (EchoBaseEntityEnum type : expectedTypes) { + Decorator<?> decorator = + service.getDecorator(locale, type.getContract(), null); + Assert.assertNotNull("Missing decorator for type : " + type, decorator); + } + } + +} Property changes on: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/DecoratorServiceTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/EchoBaseTestServiceSupport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,8 +24,7 @@ package fr.ifremer.echobase.services; import com.google.common.base.Preconditions; -import fr.ifremer.echobase.InputFile; -import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserImpl; @@ -40,6 +39,7 @@ import org.junit.Rule; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; import org.nuiton.util.StringUtil; import java.io.File; @@ -70,7 +70,6 @@ @Before public void setUp() throws Exception { - fakeServiceContext.setServiceFactory(new EchoBaseServiceFactory()); setServiceContext(fakeServiceContext); } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportDbServiceTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -48,8 +48,7 @@ @Test public void exportDb() throws IOException { - ExportDbService service = - serviceContext.newService(ExportDbService.class); + ExportDbService service = getService(ExportDbService.class); ExportDbConfiguration conf = new ExportDbConfiguration(); @@ -66,8 +65,7 @@ @Test public void exportPartialDb() throws IOException { - ExportDbService service = - serviceContext.newService(ExportDbService.class); + ExportDbService service = getService(ExportDbService.class); ExportDbConfiguration conf = new ExportDbConfiguration(); Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/ExportQueryServiceTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -45,7 +45,7 @@ @Before public void setup() { - service = serviceContext.newService(ExportQueryService.class); + service = getService(ExportQueryService.class); } @Ignore Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/FakeEchoBaseServiceContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,8 +27,9 @@ import fr.ifremer.echobase.EchoBaseConfiguration; import fr.ifremer.echobase.EchoBaseConfigurationOption; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.JdbcConfiguration; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -66,7 +67,7 @@ protected final String initDb; - protected EchoBaseServiceFactory serviceFactory; + protected final DefaultEchoBaseServiceContext.ServiceFactory serviceFactory; protected TopiaContext rootContext; @@ -82,6 +83,8 @@ public FakeEchoBaseServiceContext(String initDb) { this.initDb = initDb; + this.serviceFactory = + new DefaultEchoBaseServiceContext.ServiceFactory(); } protected File getTestSpecificDirectory(Description description) { @@ -109,8 +112,6 @@ @Override protected void starting(Description description) { super.starting(description); - EchoBaseTopiaRootContextFactory factory = - new EchoBaseTopiaRootContextFactory(); testDir = getTestSpecificDirectory(description); if (log.isInfoEnabled()) { log.info("Test dir = " + testDir); @@ -147,8 +148,12 @@ defaultProps.put(EchoBaseConfigurationOption.DATA_DIRECTORY.getKey(), testDir); configuration = new EchoBaseConfiguration(defaultProps); - rootContext = factory.newEmbeddedDatabase(testDir); -// rootContext = factory.newEmbeddedDatabase(testDir, "/" + CONFIGURATION_PATH); + JdbcConfiguration dbConf = JdbcConfiguration.newEmbeddedConfig(testDir); + Properties properties = EchobaseTopiaContexts.loadWorkingDbConfiguration(dbConf); + + //FIXME should never try to update db, tests db should always be uptodate... + properties.put("hibernate.hbm2ddl.auto", "update"); + rootContext = EchobaseTopiaContexts.newDb(properties); } @Override @@ -208,26 +213,17 @@ } @Override - public EchoBaseServiceFactory getServiceFactory() { - return serviceFactory; + public final <E extends EchoBaseService> E getService(Class<E> serviceClass) { + return serviceFactory.getService(serviceClass, this); } @Override - public <E extends EchoBaseService> E newService(Class<E> clazz) { - return serviceFactory.newService(clazz, this); - } - - @Override public Date newDate() { Date result = new Date(); DateUtils.setMilliseconds(result, 0); return result; } - public void setServiceFactory(EchoBaseServiceFactory serviceFactory) { - this.serviceFactory = serviceFactory; - } - public File getTestDir() { return testDir; } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/AbstractImportDataServiceIT.java 2012-09-01 11:28:26 UTC (rev 587) @@ -28,10 +28,7 @@ import com.google.common.collect.Sets; import fr.ifremer.echobase.EchoBaseFunctions; import fr.ifremer.echobase.EchoBaseTechnicalException; -import fr.ifremer.echobase.InputFile; -import org.nuiton.topia.persistence.csv.in.AbstractImportModel; import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.data.Cell; @@ -50,7 +47,9 @@ import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.Transit; import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.AcousticInstrument; import fr.ifremer.echobase.entities.references.CellType; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.EchoBaseTestServiceSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -58,6 +57,8 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.csv.in.AbstractImportModel; +import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; import org.nuiton.util.TimeLog; import org.nuiton.util.csv.Import; import org.nuiton.util.csv.ext.CsvReaders; @@ -176,8 +177,8 @@ protected <M extends AbstractImportConfiguration, S extends AbstractImportDataService<M>> List<CsvFileImportResult<EchoBaseEntityEnum>> doImport(M conf, - Class<S> serviceType, - int nbResults) throws ImportException { + Class<S> serviceType, + int nbResults) throws ImportException { S service = getService(serviceType); @@ -250,7 +251,7 @@ dataAcquisition = create( getDAO(DataAcquisition.class), DataAcquisition.PROPERTY_ACOUSTIC_INSTRUMENT, - getEntities(EchoBaseEntityEnum.AcousticInstrument).get(0)); + getEntities(AcousticInstrument.class).get(0)); transect.addDataAcquisition(dataAcquisition); } else { dataAcquisition = transect.getDataAcquisition().iterator().next(); Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/services/importdata/ResultsEsduCellImportServiceIT.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.services.importdata; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.csv.EchoBaseCsvUtil; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import org.nuiton.topia.persistence.csv.in.CsvFileImportResult; Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/EchoBaseDbCreator.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/EchoBaseDbCreator.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/EchoBaseDbCreator.java 2012-09-01 11:28:26 UTC (rev 587) @@ -31,9 +31,9 @@ import com.healthmarketscience.jackcess.Database; import com.healthmarketscience.jackcess.Table; import fr.ifremer.echobase.EchoBaseFunctions; -import fr.ifremer.echobase.EchoBaseIOUtil; +import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.csv.EchoBaseCsvUtil; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/EntityLoader.java 2012-09-01 11:28:26 UTC (rev 587) @@ -437,7 +437,7 @@ } EchoBaseEntityEnum target = associationMeta.getTarget(); - List<TopiaEntity> targetEntities = getEntities(target); + List<TopiaEntity> targetEntities = (List<TopiaEntity>) getEntities(target.getContract()); Map<String, TopiaEntity> targetsById = Maps.uniqueIndex(targetEntities, TopiaId.GET_TOPIA_ID); @@ -447,7 +447,7 @@ ImportToMap importer = ImportToMap.newImportToMap(model, reader); - List<E> sourceEntities = getEntities(sourceType); + List<E> sourceEntities = (List<E>) getEntities(sourceType.getContract()); Map<String, E> sourcesById = Maps.uniqueIndex(sourceEntities, TopiaId.GET_TOPIA_ID); try { @@ -485,7 +485,7 @@ Import<TopiaEntity> importer = Import.newImport(model, reader); try { - TopiaDAO<TopiaEntity> dao = getDAO(tableMeta.getSource()); + TopiaDAO<?> dao = getDAO(tableMeta.getSource().getContract()); for (TopiaEntity entity : importer) { Map<String, Object> properties = meta.prepareCreate( Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/GearMetadataLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/GearMetadataLoader.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/GearMetadataLoader.java 2012-09-01 11:28:26 UTC (rev 587) @@ -48,7 +48,7 @@ @Override protected EntityCsvModel<EchoBaseEntityEnum, GearMetadata> createCsvImportModel(TableMeta<EchoBaseEntityEnum> meta) { - List<OperationEvent> events = getEntities(EchoBaseEntityEnum.OperationEvent); + List<OperationEvent> events = getEntities(OperationEvent.class); EntityCsvModel<EchoBaseEntityEnum,GearMetadata> model = EntityCsvModel.newModel( getCsvSeparator(), Modified: trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationMetadataLoader.java =================================================================== --- trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationMetadataLoader.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/main/java/fr/ifremer/echobase/tools/loaders/OperationMetadataLoader.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,12 +24,12 @@ package fr.ifremer.echobase.tools.loaders; import fr.ifremer.echobase.EchoBaseFunctions; -import org.nuiton.topia.persistence.csv.EntityCsvModel; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.references.GearMetadata; import fr.ifremer.echobase.entities.references.OperationEvent; import fr.ifremer.echobase.entities.references.OperationMetadata; import fr.ifremer.echobase.tools.FileType; +import org.nuiton.topia.persistence.csv.EntityCsvModel; import org.nuiton.topia.persistence.metadata.TableMeta; import java.util.List; @@ -49,9 +49,9 @@ @Override protected EntityCsvModel<EchoBaseEntityEnum, OperationMetadata> createCsvImportModel(TableMeta<EchoBaseEntityEnum> meta) { - List<OperationEvent> events = getEntities(EchoBaseEntityEnum.OperationEvent); + List<OperationEvent> events = getEntities(OperationEvent.class); - EntityCsvModel<EchoBaseEntityEnum,OperationMetadata> model = EntityCsvModel.newModel( + EntityCsvModel<EchoBaseEntityEnum, OperationMetadata> model = EntityCsvModel.newModel( getCsvSeparator(), meta ); Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/AbstractToolTest.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,12 +25,12 @@ import fr.ifremer.echobase.EchoBaseConfiguration; import fr.ifremer.echobase.EchoBaseConfigurationOption; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.JdbcConfiguration; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseService; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.After; @@ -92,18 +92,16 @@ configuration = new EchoBaseConfiguration(defaultProps); - EchoBaseTopiaRootContextFactory factory = - new EchoBaseTopiaRootContextFactory(); + JdbcConfiguration dbConf = JdbcConfiguration.newEmbeddedConfig(testdir); - topiaContext = factory.newEmbeddedDatabase(testdir); + topiaContext = EchobaseTopiaContexts.newWorkingDb(dbConf); serviceContext = DefaultEchoBaseServiceContext.newContext( Locale.getDefault(), null, topiaContext.beginTransaction(), configuration, - EchoBaseDbMeta.newDbMeta(), - new EchoBaseServiceFactory() + EchoBaseDbMeta.newDbMeta() ); } @@ -117,8 +115,8 @@ } } - public <E extends EchoBaseService> E newService(Class<E> clazz) { - return serviceContext.newService(clazz); + public <E extends EchoBaseService> E getService(Class<E> clazz) { + return serviceContext.getService(clazz); } protected <E extends TopiaEntity> TopiaDAO<E> getDao(Class<E> entityClass) throws TopiaException { Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/EchoBaseDbZipCreatorIT.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/EchoBaseDbZipCreatorIT.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/EchoBaseDbZipCreatorIT.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,7 @@ */ package fr.ifremer.echobase.tools; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.BeforeClass; Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/TestHelper.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/TestHelper.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/TestHelper.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,8 @@ */ package fr.ifremer.echobase.tools; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.JdbcConfiguration; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -99,10 +100,9 @@ } public static TopiaContext getRootContext(File dbDir) { - EchoBaseTopiaRootContextFactory factory = - new EchoBaseTopiaRootContextFactory(); - TopiaContext context = factory.newEmbeddedDatabase(dbDir); + JdbcConfiguration dbConf = JdbcConfiguration.newEmbeddedConfig(dbDir); + TopiaContext context = EchobaseTopiaContexts.newWorkingDb(dbConf); return context; } Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderIT.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderIT.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/AbstractLoaderIT.java 2012-09-01 11:28:26 UTC (rev 587) @@ -118,7 +118,7 @@ FileUtil.createDirectoryIfNecessary(exportdir); // get loader - loader = newService(loaderType); + loader = getService(loaderType); if (loadDependencies) { loadDependencies(); @@ -292,7 +292,7 @@ if (log.isInfoEnabled()) { log.info("Import " + inFile); } - CsvImportResult<EchoBaseEntityEnum> csvImportResult = newService(ImportService.class).importDatas( + CsvImportResult<EchoBaseEntityEnum> csvImportResult = getService(ImportService.class).importDatas( loader.getEntityType(), inFile.getAbsolutePath(), inFile, @@ -336,43 +336,43 @@ public List<EntityLoader<?>> getEntityLoaders() { if (entityLoaders == null) { entityLoaders = Lists.newArrayList(); - entityLoaders.add(newService(SpeciesLoader.class)); - entityLoaders.add(newService(MissionLoader.class)); - entityLoaders.add(newService(AreaOfOperationLoader.class)); - entityLoaders.add(newService(AcousticInstrumentLoader.class)); - entityLoaders.add(newService(DepthStratumLoader.class)); - entityLoaders.add(newService(DataQualityLoader.class)); - entityLoaders.add(newService(ReferenceDatumTypeLoader.class)); - entityLoaders.add(newService(ReferenceDatumLoader.class)); - entityLoaders.add(newService(DataTypeLoader.class)); - entityLoaders.add(newService(CellTypeLoader.class)); - entityLoaders.add(newService(CellMethodLoader.class)); - entityLoaders.add(newService(DataMetadataLoader.class)); - entityLoaders.add(newService(TSParametersLoader.class)); - entityLoaders.add(newService(StrataLoader.class)); - entityLoaders.add(newService(EchotypeCategoryLoader.class)); - entityLoaders.add(newService(VesselTypeLoader.class)); - entityLoaders.add(newService(VesselLoader.class)); - entityLoaders.add(newService(OperationEventLoader.class)); - entityLoaders.add(newService(SampleDataTypeLoader.class)); - entityLoaders.add(newService(SampleTypeLoader.class)); - entityLoaders.add(newService(LengthAgeKeyLoader.class)); - entityLoaders.add(newService(LengthWeightKeyLoader.class)); - entityLoaders.add(newService(SexCategoryLoader.class)); - entityLoaders.add(newService(SizeCategoryLoader.class)); - entityLoaders.add(newService(OperationMetadataLoader.class)); - entityLoaders.add(newService(GearMetadataLoader.class)); - entityLoaders.add(newService(GearLoader.class)); - entityLoaders.add(newService(AgeCategoryLoader.class)); - entityLoaders.add(newService(SpeciesCategoryLoader.class)); + entityLoaders.add(getService(SpeciesLoader.class)); + entityLoaders.add(getService(MissionLoader.class)); + entityLoaders.add(getService(AreaOfOperationLoader.class)); + entityLoaders.add(getService(AcousticInstrumentLoader.class)); + entityLoaders.add(getService(DepthStratumLoader.class)); + entityLoaders.add(getService(DataQualityLoader.class)); + entityLoaders.add(getService(ReferenceDatumTypeLoader.class)); + entityLoaders.add(getService(ReferenceDatumLoader.class)); + entityLoaders.add(getService(DataTypeLoader.class)); + entityLoaders.add(getService(CellTypeLoader.class)); + entityLoaders.add(getService(CellMethodLoader.class)); + entityLoaders.add(getService(DataMetadataLoader.class)); + entityLoaders.add(getService(TSParametersLoader.class)); + entityLoaders.add(getService(StrataLoader.class)); + entityLoaders.add(getService(EchotypeCategoryLoader.class)); + entityLoaders.add(getService(VesselTypeLoader.class)); + entityLoaders.add(getService(VesselLoader.class)); + entityLoaders.add(getService(OperationEventLoader.class)); + entityLoaders.add(getService(SampleDataTypeLoader.class)); + entityLoaders.add(getService(SampleTypeLoader.class)); + entityLoaders.add(getService(LengthAgeKeyLoader.class)); + entityLoaders.add(getService(LengthWeightKeyLoader.class)); + entityLoaders.add(getService(SexCategoryLoader.class)); + entityLoaders.add(getService(SizeCategoryLoader.class)); + entityLoaders.add(getService(OperationMetadataLoader.class)); + entityLoaders.add(getService(GearMetadataLoader.class)); + entityLoaders.add(getService(GearLoader.class)); + entityLoaders.add(getService(AgeCategoryLoader.class)); + entityLoaders.add(getService(SpeciesCategoryLoader.class)); - entityLoaders.add(newService(VoyageLoader.class)); - entityLoaders.add(newService(TransitLoader.class)); - entityLoaders.add(newService(TransectLoader.class)); - entityLoaders.add(newService(DataAcquisitionLoader.class)); - entityLoaders.add(newService(DataProcessingLoader.class)); - entityLoaders.add(newService(CellLoader.class)); - entityLoaders.add(newService(OperationLoader.class)); + entityLoaders.add(getService(VoyageLoader.class)); + entityLoaders.add(getService(TransitLoader.class)); + entityLoaders.add(getService(TransectLoader.class)); + entityLoaders.add(getService(DataAcquisitionLoader.class)); + entityLoaders.add(getService(DataProcessingLoader.class)); + entityLoaders.add(getService(CellLoader.class)); + entityLoaders.add(getService(OperationLoader.class)); } return entityLoaders; } Modified: trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/CellLoaderIT.java =================================================================== --- trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/CellLoaderIT.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-tools/src/test/java/fr/ifremer/echobase/tools/loaders/CellLoaderIT.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.healthmarketscience.jackcess.Database; -import fr.ifremer.echobase.EchoBaseIOUtil; +import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.DataProcessing; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import com.google.common.collect.Sets; import com.opensymphony.xwork2.ActionContext; import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaContext; @@ -93,24 +93,24 @@ public synchronized void registerEchoBaseSession(EchoBaseSession t3Session) { Preconditions.checkNotNull(t3Session); - Preconditions.checkNotNull(t3Session.getEchoBaseUser()); + Preconditions.checkNotNull(t3Session.getUser()); if (t3Sessions == null) { t3Sessions = Sets.newHashSet(); } if (log.isInfoEnabled()) { log.info("Register user session for [" + - t3Session.getEchoBaseUser().getEmail() + "]"); + t3Session.getUser().getEmail() + "]"); } t3Sessions.add(t3Session); } public synchronized void destroyEchoBaseSession(EchoBaseSession t3Session) { Preconditions.checkNotNull(t3Session); - Preconditions.checkNotNull(t3Session.getEchoBaseUser()); + Preconditions.checkNotNull(t3Session.getUser()); Preconditions.checkNotNull(t3Sessions); if (log.isInfoEnabled()) { log.info("Destroy user session for [" + - t3Session.getEchoBaseUser().getEmail() + "]"); + t3Session.getUser().getEmail() + "]"); } // remove session from active ones t3Sessions.remove(t3Session); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationListener.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,14 +24,13 @@ package fr.ifremer.echobase.ui; import fr.ifremer.echobase.EchoBaseConfiguration; -import fr.ifremer.echobase.EchoBaseEntityHelper; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; -import fr.ifremer.echobase.entities.EchoBaseDbMeta; +import fr.ifremer.echobase.persistence.EchoBaseEntityHelper; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserImpl; import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceFactory; import fr.ifremer.echobase.services.UserService; import fr.ird.converter.FloatConverter; import org.apache.commons.beanutils.ConvertUtils; @@ -96,7 +95,7 @@ // initialize internal root context TopiaContext internalRootContext = - new EchoBaseTopiaRootContextFactory().newInternalDb(configuration); + EchobaseTopiaContexts.newInternalDb(configuration); // initialize application context EchoBaseApplicationContext applicationContext = new EchoBaseApplicationContext(); @@ -166,8 +165,7 @@ null, null, configuration, - applicationContext.getDbMeta(), - new EchoBaseServiceFactory() + applicationContext.getDbMeta() ); try { @@ -210,14 +208,11 @@ */ protected void createAdminUser(EchoBaseServiceContext serviceContext) throws TopiaException { - EchoBaseServiceFactory serviceFactory = - new EchoBaseServiceFactory(); TopiaContext transaction = serviceContext.getInternalTransaction().beginTransaction(); serviceContext.setInternalTransaction(transaction); try { - UserService service = - serviceFactory.newService(UserService.class, serviceContext); + UserService service = serviceContext.getService(UserService.class); List<EchoBaseUser> users = service.getUsers(); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseInternalDbTransactionFilter.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseInternalDbTransactionFilter.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseInternalDbTransactionFilter.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,16 +23,19 @@ */ package fr.ifremer.echobase.ui; -import fr.ifremer.echobase.EchoBaseEntityHelper; +import com.opensymphony.xwork2.ActionContext; +import fr.ifremer.echobase.persistence.EchoBaseEntityHelper; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.struts2.StrutsStatics; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; import org.nuiton.web.filter.TopiaTransactionFilter; import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; /** * Inject in each request a new transaction from the internal db. @@ -46,6 +49,12 @@ private static final Log log = LogFactory.getLog(EchoBaseInternalDbTransactionFilter.class); + public static TopiaContext getTransaction(ActionContext context) { + HttpServletRequest request = (HttpServletRequest) + context.get(StrutsStatics.HTTP_REQUEST); + return TopiaTransactionFilter.getTransaction(request); + } + @Override protected TopiaContext beginTransaction(ServletRequest request) throws TopiaRuntimeException { EchoBaseApplicationContext applicationContext = Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSession.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,9 +25,9 @@ import com.google.common.collect.Sets; import com.opensymphony.xwork2.ActionContext; -import fr.ifremer.echobase.EchoBaseEntityHelper; -import fr.ifremer.echobase.EchoBaseTopiaRootContextFactory; -import fr.ifremer.echobase.JdbcConfiguration; +import fr.ifremer.echobase.persistence.EchoBaseEntityHelper; +import fr.ifremer.echobase.persistence.EchobaseTopiaContexts; +import fr.ifremer.echobase.persistence.JdbcConfiguration; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.services.embeddedapplication.EmbeddedApplicationConfiguration; import fr.ifremer.echobase.services.exportdb.ExportDbConfiguration; @@ -36,9 +36,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.TopiaContextFactory; import org.nuiton.topia.TopiaNotFoundException; -import org.nuiton.topia.framework.TopiaContextImplementor; import javax.servlet.http.HttpSession; import java.io.Closeable; @@ -58,7 +56,7 @@ private static final Log log = LogFactory.getLog(EchoBaseSession.class); /** Key to set User connected in this session. */ - protected static final String PROPERTY_ECHO_BASE_USER = "echobaseUser"; + protected static final String PROPERTY_USER = "echobaseUser"; /** Key to keep import db configuration in this session. */ protected static final String PROPERTY_IMPORT_DB_CONFIGURATION = "importDbConfiguration"; @@ -75,7 +73,6 @@ /** Key to set root context of working db selected by user (if any). */ private static final String PROPERTY_ROOT_CONTEXT = "rootContext"; - /** * Obtain the user T3 session. * <p/> @@ -124,17 +121,27 @@ * * @return the informations of loggued user or {@code null} if not in session */ - public EchoBaseUser getEchoBaseUser() { - return get(PROPERTY_ECHO_BASE_USER, EchoBaseUser.class); + public EchoBaseUser getUser() { + return get(PROPERTY_USER, EchoBaseUser.class); } /** + * Tests if user is loggued (means the {@link #getUser} is not null). + * + * @return {@code true} if user is loggued, {@code false} otherwise + */ + public boolean isUserInSession() { + boolean result = getUser() != null; + return result; + } + + /** * Sets in this session the loggued user. * - * @param echoBaseUser the user loggued to use in this session + * @param user the user loggued to use in this session */ - public void setEchoBaseUser(EchoBaseUser echoBaseUser) { - set(PROPERTY_ECHO_BASE_USER, echoBaseUser); + public void setUser(EchoBaseUser user) { + set(PROPERTY_USER, user); } public ImportDbConfiguration getImportDbConfiguration() { @@ -182,7 +189,7 @@ TopiaContext rootContext = getRootContext(); String result = null; if (rootContext != null) { - result = (String) ((TopiaContextImplementor) rootContext).getConfig().get(TopiaContextFactory.CONFIG_URL); + result = EchobaseTopiaContexts.getDbUrl(rootContext); } return result; } @@ -202,14 +209,14 @@ * @param jdbcConfiguration the connection configuration to use * @throws TopiaNotFoundException if could not create root context */ - public void initDatabaseConfiguration(JdbcConfiguration jdbcConfiguration) throws TopiaNotFoundException { + public void initWorkingDb(JdbcConfiguration jdbcConfiguration) throws TopiaNotFoundException { // close any previous db - releaseDatabase(); + releaseWorkingDb(); // creates a new topia root context from configuration - EchoBaseTopiaRootContextFactory factory = new EchoBaseTopiaRootContextFactory(); - TopiaContext rootContext = factory.newDb(jdbcConfiguration); + TopiaContext rootContext = + EchobaseTopiaContexts.newWorkingDb(jdbcConfiguration); // store it in session set(PROPERTY_ROOT_CONTEXT, rootContext); @@ -220,7 +227,7 @@ } - public void releaseDatabase() { + public void releaseWorkingDb() { TopiaContext rootContext = getRootContext(); @@ -299,7 +306,7 @@ } public boolean isAdmin() { - EchoBaseUser user = getEchoBaseUser(); + EchoBaseUser user = getUser(); return user != null && user.isAdmin(); } @@ -315,10 +322,10 @@ public void close() { if (log.isInfoEnabled()) { - log.info("Close user session for [" + getEchoBaseUser().getEmail() + "]"); + log.info("Close user session for [" + getUser().getEmail() + "]"); } try { - releaseDatabase(); + releaseWorkingDb(); } finally { Set<String> keys = Sets.newHashSet(store.keySet()); Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSessionListener.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSessionListener.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSessionListener.java 2012-09-01 11:28:26 UTC (rev 587) @@ -0,0 +1,59 @@ +/* + * #%L + * T3 :: Web + * + * $Id$ + * $HeadURL: https://svn.mpl.ird.fr/osiris/t3/trunk/t3-web/src/main/java/fr/ird/t3/web/T3... $ + * %% + * Copyright (C) 2010 - 2012 IRD, Codelutin, Tony Chemit + * %% + * 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.echobase.ui; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; + +/** + * To listen creation or destroying of user session (this is needed to close + * nicely any resources attached to this user session such as db connexions). + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class EchoBaseSessionListener implements HttpSessionListener { + + @Override + public void sessionCreated(HttpSessionEvent se) { + // at creation time, nothing to do since we do not use directly + // the httpSession but the wrap offers by xworks + } + + @Override + public void sessionDestroyed(HttpSessionEvent se) { + EchoBaseSession session = EchoBaseSession.getEchoBaseSession(se.getSession()); + if (session.isUserInSession()) { + + // only destroy the session if a user is loggued (otherwise there + // is nothing to clear) + ServletContext servletContext = se.getSession().getServletContext(); + EchoBaseApplicationContext applicationContext = + EchoBaseApplicationContext.getApplicationContext(servletContext); + applicationContext.destroyEchoBaseSession(session); + } + } + +} Property changes on: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseSessionListener.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseWorkingDbTransactionFilter.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseWorkingDbTransactionFilter.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseWorkingDbTransactionFilter.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,8 +23,10 @@ * #L% */ +import com.opensymphony.xwork2.ActionContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.struts2.StrutsStatics; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; @@ -52,12 +54,18 @@ public static final String USER_TRANSACTION = "userTransaction"; - public static TopiaContext getTransaction(ServletRequest request) { - TopiaContext topiaContext = (TopiaContext) - request.getAttribute(USER_TRANSACTION); - return topiaContext; + public static TopiaContext getTransaction(ActionContext context) { + HttpServletRequest request = (HttpServletRequest) + context.get(StrutsStatics.HTTP_REQUEST); + return (TopiaContext) request.getAttribute(USER_TRANSACTION); } +// public static TopiaContext getTransaction(ServletRequest request) { +// TopiaContext topiaContext = (TopiaContext) +// request.getAttribute(USER_TRANSACTION); +// return topiaContext; +// } + @Override public void init(FilterConfig filterConfig) throws ServletException { super.init(filterConfig); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/AbstractWaitAndExecAction.java 2012-09-01 11:28:26 UTC (rev 587) @@ -25,7 +25,7 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.Preparable; -import fr.ifremer.echobase.EchoBaseEntityHelper; +import fr.ifremer.echobase.persistence.EchoBaseEntityHelper; import fr.ifremer.echobase.services.AbstractEchobaseActionConfiguration; import org.nuiton.topia.TopiaContext; @@ -82,14 +82,10 @@ // in more than one request TopiaContext topiaContext = - EchoBaseEntityHelper.newTransactionFromRootContext(getTransaction()); + EchoBaseEntityHelper.newTransactionFromRootContext(getServiceContext().getTransaction()); -// TopiaContextImplementor tx = -// (TopiaContextImplementor) serviceContext.getTransaction(); -// TopiaContextImplementor rootContext = tx.getRootContext(); -// TopiaContext topiaContext = rootContext.beginTransaction(); - serviceContext.setTransaction(topiaContext); try { + serviceContext.setTransaction(topiaContext); startAction(model); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/EchoBaseActionSupport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,32 +23,22 @@ */ package fr.ifremer.echobase.ui.actions; -import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.opensymphony.xwork2.ActionContext; import fr.ifremer.echobase.EchoBaseConfiguration; import fr.ifremer.echobase.I18nAble; -import fr.ifremer.echobase.InputFile; import fr.ifremer.echobase.services.DecoratorService; import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseService; import fr.ifremer.echobase.services.EchoBaseServiceContext; -import fr.ifremer.echobase.services.EchoBaseServiceFactory; +import fr.ifremer.echobase.services.ServiceFactoryAware; import fr.ifremer.echobase.ui.EchoBaseApplicationContext; +import fr.ifremer.echobase.ui.EchoBaseInternalDbTransactionFilter; import fr.ifremer.echobase.ui.EchoBaseSession; -import org.apache.commons.io.FileUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.struts2.StrutsStatics; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.framework.TopiaTransactionAware; +import fr.ifremer.echobase.ui.EchoBaseWorkingDbTransactionFilter; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.web.filter.TopiaTransactionFilter; import org.nuiton.web.struts2.BaseAction; -import javax.servlet.http.HttpServletRequest; -import java.io.File; -import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; @@ -56,29 +46,20 @@ /** * EchoBase action support. - * <p/> - * <b>Note :</b> All actions must implement this class to have a better i18n - * support, when a i18n key is not translated it has a empty translation and - * we do NOT want this behaviour in gui, prefer to return the marked - * untranslated key. * * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public class EchoBaseActionSupport extends BaseAction implements TopiaTransactionAware { +public class EchoBaseActionSupport extends BaseAction implements ServiceFactoryAware { private static final long serialVersionUID = 1L; - /** Logger. */ - private static final Log log = - LogFactory.getLog(EchoBaseActionSupport.class); + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("dd/MM/yyyy"); - private SimpleDateFormat dateFormat; + private static final SimpleDateFormat monthFormat = + new SimpleDateFormat("mm-yyyy"); - private SimpleDateFormat monthFormat; - - private transient DecoratorService decoratorService; - private static EchoBaseApplicationContext applicationContext; public static EchoBaseApplicationContext getEchoBaseApplicationContext() { @@ -89,6 +70,10 @@ return applicationContext; } + public static String getApplicationVersion() { + return getEchoBaseApplicationContext().getConfiguration().getApplicationVersion().toString(); + } + protected EchoBaseConfiguration getConfiguration() { return getEchoBaseApplicationContext().getConfiguration(); } @@ -96,30 +81,8 @@ /** EchoBase User session. */ private transient EchoBaseSession echoBaseSession; - /** - * Provides a way to get a service. - * <p/> - * Actions may <strong>not</strong> call it directly by use - * {@link #newService(Class)} instead. - */ - protected transient EchoBaseServiceFactory serviceFactory; - protected transient EchoBaseServiceContext serviceContext; - /** - * Working db transaction (may be {@code null} if user has not yet select a db). - * - * @since 1.1 - */ - protected transient TopiaContext transaction; - - /** - * Internal db transaction (can not be {@code null}). - * - * @since 1.1 - */ - protected transient TopiaContext internalTransaction; - public EchoBaseSession getEchoBaseSession() { if (echoBaseSession == null) { @@ -129,16 +92,6 @@ return echoBaseSession; } - public boolean isAdmin() { - EchoBaseSession session = getEchoBaseSession(); - boolean result = session.isAdmin(); - return result; - } - - public static String getApplicationVersion() { - return getEchoBaseApplicationContext().getConfiguration().getApplicationVersion().toString(); - } - /** * Fabrique pour récupérer le ServiceContext tel qu'il devrait être fourni * à la fabrication d'un service. @@ -149,119 +102,52 @@ if (serviceContext == null) { serviceContext = DefaultEchoBaseServiceContext.newContext( getLocale(), - getInternalTransaction(), - getTransaction(), + EchoBaseInternalDbTransactionFilter.getTransaction(getActionContext()), + EchoBaseWorkingDbTransactionFilter.getTransaction(getActionContext()), getConfiguration(), - getEchoBaseApplicationContext().getDbMeta(), - getServiceFactory() + getEchoBaseApplicationContext().getDbMeta() ); } return serviceContext; } - public EchoBaseServiceFactory getServiceFactory() { - if (serviceFactory == null) { - serviceFactory = new EchoBaseServiceFactory(); - } - return serviceFactory; - } - /** * Sub-classes should use this method to easily get a service instance. * * @param serviceClass The type of service to instantiate * @return A newly created service of the expected type with necessary data set */ - public <E extends EchoBaseService> E newService(Class<E> serviceClass) { - E service = getServiceFactory().newService(serviceClass, - getServiceContext()); + @Override + public <E extends EchoBaseService> E getService(Class<E> serviceClass) { + E service = getServiceContext().getService(serviceClass); return service; } - @Override - public TopiaContext getTransaction() { - if (transaction == null) { - HttpServletRequest request = (HttpServletRequest) - getActionContext().get(StrutsStatics.HTTP_REQUEST); - transaction = TopiaTransactionFilter.getTransaction(request); - } - return transaction; + public boolean isAdmin() { + EchoBaseSession session = getEchoBaseSession(); + boolean result = session.isAdmin(); + return result; } - public TopiaContext getInternalTransaction() { - if (transaction == null) { - HttpServletRequest request = (HttpServletRequest) - getActionContext().get(StrutsStatics.HTTP_REQUEST); - transaction = TopiaTransactionFilter.getTransaction(request); - } - return transaction; - } - - @Override - public void setTransaction(TopiaContext transaction) { - this.transaction = transaction; - } - public String formatDate(Date date) { - String result = getDateFormat().format(date); + String result = dateFormat.format(date); return result; } public String formatMonth(Date date) { - String result = getMonthFormat().format(date); + String result = monthFormat.format(date); return result; } public <E extends TopiaEntity> Map<String, String> sortAndDecorate(Collection<E> beans, String context) { - return getDecoratorService().sortAndDecorate(getLocale(), beans, context); + DecoratorService decoratorService = getService(DecoratorService.class); + return decoratorService.sortAndDecorate(getLocale(), beans, context); } - public String decorate(Object o, String context) { - return getDecoratorService().decorate(getLocale(), o, context); - } - - protected SimpleDateFormat getDateFormat() { - if (dateFormat == null) { - dateFormat = new SimpleDateFormat("dd/MM/yyyy"); - } - return dateFormat; - } - - protected SimpleDateFormat getMonthFormat() { - if (monthFormat == null) { - monthFormat = new SimpleDateFormat("mm-yyyy"); - } - return monthFormat; - } - - protected DecoratorService getDecoratorService() { - if (decoratorService == null) { - decoratorService = newService(DecoratorService.class); - } - return decoratorService; - } - protected static ActionContext getActionContext() { return ActionContext.getContext(); } - protected void copyFile(InputFile inputFile, - File dataDirectory) throws IOException { - Preconditions.checkNotNull(inputFile); - Preconditions.checkNotNull(dataDirectory); - File source = inputFile.getFile(); - Preconditions.checkNotNull(source); - - File target = new File(dataDirectory, inputFile.getFileName()); - if (log.isInfoEnabled()) { - log.info("Copy file " + source + " to " + target); - } - FileUtils.copyFile(source, target); - - // keep target (source file will be removed at the end of this action) - inputFile.setFile(target); - } - protected <E extends Enum<E> & I18nAble> Map<String, String> decorateEnums(E... enumValues) { Map<String, String> result = Maps.newLinkedHashMap(); for (E enumValue : enumValues) { Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/AbstractLoadPage.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/AbstractLoadPage.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/AbstractLoadPage.java 2012-09-01 11:28:26 UTC (rev 587) @@ -88,7 +88,7 @@ } else { // load table metas - DbEditorService dbEditorService = newService(DbEditorService.class); + DbEditorService dbEditorService = getService(DbEditorService.class); tableMeta = dbEditorService.getTableMeta(entityType); } } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ExportTable.java 2012-09-01 11:28:26 UTC (rev 587) @@ -95,7 +95,7 @@ @Override public String execute() throws Exception { - ExportService exportService = newService(ExportService.class); + ExportService exportService = getService(ExportService.class); TableMeta<EchoBaseEntityEnum> table = serviceContext.getDbMeta().getTable(entityType); String content = exportService.exportData(table, exportAsSeen); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java 2012-09-01 11:28:26 UTC (rev 587) @@ -92,7 +92,7 @@ log.debug("sord = " + ascendantOrder); } - DbEditorService service = newService(DbEditorService.class); + DbEditorService service = getService(DbEditorService.class); datas = service.getDatas( entityType, Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntity.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntity.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntity.java 2012-09-01 11:28:26 UTC (rev 587) @@ -74,7 +74,7 @@ @Override public String execute() throws Exception { - DbEditorService service = newService(DbEditorService.class); + DbEditorService service = getService(DbEditorService.class); TableMeta<EchoBaseEntityEnum> table = serviceContext.getDbMeta().getTable(entityType); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetForeignEntities.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetForeignEntities.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetForeignEntities.java 2012-09-01 11:28:26 UTC (rev 587) @@ -58,7 +58,7 @@ @Override public String execute() throws Exception { - DbEditorService service = newService(DbEditorService.class); + DbEditorService service = getService(DbEditorService.class); List<? extends TopiaEntity> foreignEntities = service.getForeignDatas(entityType.getContract()); entities = sortAndDecorate(foreignEntities, null); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ImportTable.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ImportTable.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/ImportTable.java 2012-09-01 11:28:26 UTC (rev 587) @@ -127,14 +127,14 @@ @InputConfig(methodName = "input") public String execute() throws Exception { - ImportService importService = newService(ImportService.class); + ImportService importService = getService(ImportService.class); try { result = importService.importDatas(getEntityType(), importFileFileName, importFile, createIfNotFound, - getEchoBaseSession().getEchoBaseUser()); + getEchoBaseSession().getUser()); } catch (Exception eee) { Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/SaveEntity.java 2012-09-01 11:28:26 UTC (rev 587) @@ -70,7 +70,7 @@ @Override public String execute() throws Exception { - DbEditorService service = newService(DbEditorService.class); + DbEditorService service = getService(DbEditorService.class); TableMeta<EchoBaseEntityEnum> tableMeta = service.getTableMeta(entityType); Map<String, String> properties = Maps.newHashMap(); List<String> columnNames = tableMeta.getColumnNames(); @@ -94,7 +94,7 @@ service.saveEntity(tableMeta, properties, - getEchoBaseSession().getEchoBaseUser()); + getEchoBaseSession().getUser()); return SUCCESS; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Build.java 2012-09-01 11:28:26 UTC (rev 587) @@ -53,7 +53,7 @@ @Override public void prepare() throws Exception { super.prepare(); - service = newService(EmbeddedApplicationService.class); + service = getService(EmbeddedApplicationService.class); } @Override Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Configure.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Configure.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/embeddedApplication/Configure.java 2012-09-01 11:28:26 UTC (rev 587) @@ -93,7 +93,7 @@ actionModel.setWarLocation(warLocation); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); List<Voyage> allVoyages = service.getEntities(Voyage.class); if (CollectionUtils.isEmpty(allVoyages)) { Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Export.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Export.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportDb/Export.java 2012-09-01 11:28:26 UTC (rev 587) @@ -53,7 +53,7 @@ @Override public void prepare() throws Exception { super.prepare(); - service = newService(ExportDbService.class); + service = getService(ExportDbService.class); } @Override Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DownloadExportQueryResult.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DownloadExportQueryResult.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/DownloadExportQueryResult.java 2012-09-01 11:28:26 UTC (rev 587) @@ -81,7 +81,7 @@ @Override public String execute() throws Exception { - ExportQueryService service = newService(ExportQueryService.class); + ExportQueryService service = getService(ExportQueryService.class); contentType = "text/csv"; String content = service.createCsvFileContent(sql); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ExportQueryResult.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ExportQueryResult.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ExportQueryResult.java 2012-09-01 11:28:26 UTC (rev 587) @@ -71,7 +71,7 @@ public String execute() throws Exception { // obtain columNames from the request - ExportQueryService service = newService(ExportQueryService.class); + ExportQueryService service = getService(ExportQueryService.class); try { columnNames = service.getColumnNames(sql); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/GetExportQueryResult.java 2012-09-01 11:28:26 UTC (rev 587) @@ -74,7 +74,7 @@ @Override public String execute() throws Exception { - ExportQueryService service = newService(ExportQueryService.class); + ExportQueryService service = getService(ExportQueryService.class); datas = service.executeSql(sql, pager); return SUCCESS; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/ManageExportQuery.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,7 +27,7 @@ import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.ExportQuery; import fr.ifremer.echobase.services.exportquery.ExportQueryService; -import fr.ifremer.echobase.services.exceptions.ExportQueryNameAlreadyExistException; +import fr.ifremer.echobase.services.exportquery.ExportQueryNameAlreadyExistException; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -67,7 +67,7 @@ public ExportQueryService getService() { if (service == null) { - service = newService(ExportQueryService.class); + service = getService(ExportQueryService.class); } return service; } @@ -120,7 +120,7 @@ if (safeSql) { try { query = getService().createOrUpdate(getQuery(), - getEchoBaseSession().getEchoBaseUser() + getEchoBaseSession().getUser() ); result = SUCCESS; @@ -138,7 +138,7 @@ getQuery().setTopiaId(null); getQuery().setName(getQuery().getName() + "-clone"); query = getService().createOrUpdate(getQuery(), - getEchoBaseSession().getEchoBaseUser() + getEchoBaseSession().getUser() ); return SUCCESS; } @@ -217,7 +217,7 @@ query = getService().getExportQuery(selectedQueryId); EchoBaseUser echoBaseUser = - getEchoBaseSession().getEchoBaseUser(); + getEchoBaseSession().getUser(); canUpdateQuery = echoBaseUser.isAdmin() || echoBaseUser.getEmail().equals( query.getLastModifiedUser()); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/exportQuery/NewLibreOfficeQuery.java 2012-09-01 11:28:26 UTC (rev 587) @@ -68,7 +68,7 @@ log.info("Incoming query = " + libreOfficeQuery); } - ExportQueryService service = newService(ExportQueryService.class); + ExportQueryService service = getService(ExportQueryService.class); resultQuery = service.processLibreOfficeSqlQuery(libreOfficeQuery); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractConfigureImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -24,7 +24,9 @@ package fr.ifremer.echobase.ui.actions.importData; import com.opensymphony.xwork2.interceptor.annotations.InputConfig; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.EchoBaseIOUtil; +import fr.ifremer.echobase.io.InputFile; +import fr.ifremer.echobase.services.DecoratorService; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.services.importdata.AbstractImportConfiguration; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; @@ -95,7 +97,7 @@ for (InputFile inputFile : importModel.getInputFiles()) { if (inputFile.hasFile()) { - copyFile(inputFile, dataDirectory); + EchoBaseIOUtil.copyFile(inputFile, dataDirectory); } } setInSession(importModel); @@ -117,7 +119,10 @@ protected <E extends TopiaEntity> Map<String, String> loadSortAndDecorate(EchoBaseServiceSupport service, Class<E> beanType) { + DecoratorService decoratorService = + service.getService(DecoratorService.class); + List<E> beans = service.getEntities(beanType); - return getDecoratorService().sortAndDecorate(getLocale(), beans, null); + return decoratorService.sortAndDecorate(getLocale(), beans, null); } } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/AbstractLaunchImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -88,7 +88,7 @@ super.prepare(); - service = newService(serviceType); + service = getService(serviceType); } @Override @@ -99,7 +99,7 @@ try { result = service.doImport(model, - getEchoBaseSession().getEchoBaseUser()); + getEchoBaseSession().getUser()); addActionMessage(_("echobase.info.import.succeded")); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureAcousticImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -61,7 +61,7 @@ super.input(); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); voyages = loadSortAndDecorate(service, Voyage.class); cellPositionReferences = decorateEnums(CellPositionReference.values()); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCatchesImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -58,7 +58,7 @@ super.input(); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); voyages = loadSortAndDecorate(service, Voyage.class); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureCommonImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -71,7 +71,7 @@ super.input(); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); missions = loadSortAndDecorate(service, Mission.class); voyages = loadSortAndDecorate(service, Voyage.class); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureOperationImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -58,7 +58,7 @@ super.input(); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); voyages = loadSortAndDecorate(service, Voyage.class); return INPUT; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/ConfigureResultsImport.java 2012-09-01 11:28:26 UTC (rev 587) @@ -69,7 +69,7 @@ super.input(); EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); voyages = loadSortAndDecorate(service, Voyage.class); vessels = loadSortAndDecorate(service, Vessel.class); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/CreateMission.java 2012-09-01 11:28:26 UTC (rev 587) @@ -26,7 +26,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.MissionImpl; -import fr.ifremer.echobase.services.exceptions.MissionNameAlreadyExistException; +import fr.ifremer.echobase.services.importdata.MissionNameAlreadyExistException; import fr.ifremer.echobase.services.importdata.CommonImportService; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.apache.commons.logging.Log; @@ -64,14 +64,14 @@ try { CommonImportService service = - newService(CommonImportService.class); + getService(CommonImportService.class); Mission missionSaved = service.createMission(mission); if (log.isInfoEnabled()) { log.info("Created mission : " + missionSaved.getTopiaId()); } - getTransaction().commitTransaction(); - addActionMessage(_("echobase.information.mission.created", missionSaved.getName())); + addActionMessage( + _("echobase.information.mission.created", missionSaved.getName())); result = SUCCESS; } catch (MissionNameAlreadyExistException e) { addFieldError("mission.name", Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetDataProcessingsForVoyage.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetDataProcessingsForVoyage.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetDataProcessingsForVoyage.java 2012-09-01 11:28:26 UTC (rev 587) @@ -64,7 +64,7 @@ } else { ResultsImportService service = - newService(ResultsImportService.class); + getService(ResultsImportService.class); Voyage voyage = service.getEntityById(Voyage.class, voyageId); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVesselsForVoyage.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVesselsForVoyage.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importData/GetVesselsForVoyage.java 2012-09-01 11:28:26 UTC (rev 587) @@ -27,6 +27,7 @@ import com.google.common.collect.Maps; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.entities.references.Vessel; +import fr.ifremer.echobase.services.DecoratorService; import fr.ifremer.echobase.services.EchoBaseServiceSupport; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.apache.commons.lang3.StringUtils; @@ -66,7 +67,7 @@ if (StringUtils.isNotEmpty(voyageId)) { EchoBaseServiceSupport service = - newService(EchoBaseServiceSupport.class); + getService(EchoBaseServiceSupport.class); Voyage voyage = service.getEntityById(Voyage.class, voyageId); @@ -74,10 +75,12 @@ "Could not find voyage with id " + voyageId); if (!voyage.isTransitEmpty()) { + DecoratorService decoratorService = + service.getService(DecoratorService.class); Decorator<Vessel> decorator = - getDecoratorService().getDecorator(getLocale(), - Vessel.class, - null); + decoratorService.getDecorator(getLocale(), + Vessel.class, + null); Set<Vessel> allVessels = voyage.getAllVessels(); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Configure.java 2012-09-01 11:28:26 UTC (rev 587) @@ -23,7 +23,8 @@ */ package fr.ifremer.echobase.ui.actions.importDb; -import fr.ifremer.echobase.InputFile; +import fr.ifremer.echobase.io.EchoBaseIOUtil; +import fr.ifremer.echobase.io.InputFile; import fr.ifremer.echobase.services.importdb.ImportDbConfiguration; import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.apache.commons.io.FileUtils; @@ -91,7 +92,7 @@ } InputFile input = configuration.getInput(); - copyFile(input, dataDirectory); + EchoBaseIOUtil.copyFile(input, dataDirectory); // store configuration in session getEchoBaseSession().setImportDbConfiguration(configuration); Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/importDb/Import.java 2012-09-01 11:28:26 UTC (rev 587) @@ -55,7 +55,7 @@ super.prepare(); - service = newService(ImportDbService.class); + service = getService(ImportDbService.class); } @Override @@ -65,7 +65,7 @@ model.getInput().getFileName()); } - service.importDb(model, getEchoBaseSession().getEchoBaseUser(), true, false); + service.importDb(model, getEchoBaseSession().getUser(), true, false); } @Override Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/ConnectToDbInformations.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/ConnectToDbInformations.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/ConnectToDbInformations.java 2012-09-01 11:28:26 UTC (rev 587) @@ -94,7 +94,7 @@ jdbcDriver = properties.getProperty(TopiaContextFactory.CONFIG_DRIVER); EmbeddedApplicationService service = - newService(EmbeddedApplicationService.class); + getService(EmbeddedApplicationService.class); String pilotName; Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Create.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Create.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Create.java 2012-09-01 11:28:26 UTC (rev 587) @@ -48,7 +48,7 @@ public UserService getUserService() { if (userService == null) { - userService = newService(UserService.class); + userService = getService(UserService.class); } return userService; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Delete.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Delete.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Delete.java 2012-09-01 11:28:26 UTC (rev 587) @@ -54,7 +54,7 @@ public UserService getUserService() { if (userService == null) { - userService = newService(UserService.class); + userService = getService(UserService.class); } return userService; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/GetUsers.java 2012-09-01 11:28:26 UTC (rev 587) @@ -72,7 +72,7 @@ public String execute() throws Exception { List<EchoBaseUser> allUsers = - newService(UserService.class).getUsers(pager); + getService(UserService.class).getUsers(pager); users = new Map[allUsers.size()]; Binder<EchoBaseUser, EchoBaseUser> binder = Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/LoginAction.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/LoginAction.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/LoginAction.java 2012-09-01 11:28:26 UTC (rev 587) @@ -60,7 +60,7 @@ public UserService getUserService() { if (userService == null) { - userService = newService(UserService.class); + userService = getService(UserService.class); } return userService; } @@ -96,7 +96,7 @@ EchoBaseSession userSession = getEchoBaseSession(); // user is authorized, keep it in his echoBaseSession - userSession.setEchoBaseUser(user); + userSession.setUser(user); // add locale in echoBaseSession if required Object o = session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE); @@ -119,12 +119,11 @@ EchoBaseSession userSession = getEchoBaseSession(); - // remove user from session - userSession.setEchoBaseUser(null); - // remove echoBaseSession from application session + getEchoBaseApplicationContext().destroyEchoBaseSession(userSession); + + // clean it from ActionContext (we never know...) EchoBaseSession.removeEchoBaseSession(getActionContext()); -// ActionContext.getContext().getSession().remove(EchoBaseSession.SESSION_PARAMETER); return SUCCESS; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Update.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Update.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/user/Update.java 2012-09-01 11:28:26 UTC (rev 587) @@ -54,7 +54,7 @@ public UserService getUserService() { if (userService == null) { - userService = newService(UserService.class); + userService = getService(UserService.class); } return userService; } Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckLogguedInterceptor.java 2012-09-01 11:28:26 UTC (rev 587) @@ -59,7 +59,7 @@ EchoBaseActionSupport action = (EchoBaseActionSupport) invocation.getAction(); EchoBaseSession echoBaseSession = action.getEchoBaseSession(); - boolean userLoggued = echoBaseSession.getEchoBaseUser() != null; + boolean userLoggued = echoBaseSession.getUser() != null; if (!userLoggued) { Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckUserIsAdmin.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckUserIsAdmin.java 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/interceptors/CheckUserIsAdmin.java 2012-09-01 11:28:26 UTC (rev 587) @@ -45,7 +45,7 @@ EchoBaseSession echoBaseSession = action.getEchoBaseSession(); - EchoBaseUser user = echoBaseSession.getEchoBaseUser(); + EchoBaseUser user = echoBaseSession.getUser(); Preconditions.checkNotNull(user, "No user found is session"); return user.isAdmin(); Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml 2012-08-31 13:09:10 UTC (rev 586) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/web.xml 2012-09-01 11:28:26 UTC (rev 587) @@ -31,12 +31,16 @@ <filter> <filter-name>internalDbTransaction</filter-name> - <filter-class>fr.ifremer.echobase.ui.EchoBaseInternalDbTransactionFilter</filter-class> + <filter-class> + fr.ifremer.echobase.ui.EchoBaseInternalDbTransactionFilter + </filter-class> </filter> <filter> <filter-name>workingDbTransaction</filter-name> - <filter-class>fr.ifremer.echobase.ui.EchoBaseWorkingDbTransactionFilter</filter-class> + <filter-class> + fr.ifremer.echobase.ui.EchoBaseWorkingDbTransactionFilter + </filter-class> </filter> <filter> @@ -84,10 +88,19 @@ </filter-mapping> <listener> - <description>Init</description> - <listener-class>fr.ifremer.echobase.ui.EchoBaseApplicationListener</listener-class> + <description>Application listener</description> + <listener-class> + fr.ifremer.echobase.ui.EchoBaseApplicationListener + </listener-class> </listener> + <listener> + <description>Session listener</description> + <listener-class> + fr.ifremer.echobase.ui.EchoBaseSessionListener + </listener-class> + </listener> + <welcome-file-list> <welcome-file>/</welcome-file> <welcome-file>index.jsp</welcome-file>
participants (1)
-
tchemit@users.forge.codelutin.com