This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit be439f17d21f3cc4ba9f97e9bff8ed1bf671c55f Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Nov 25 17:42:17 2016 +0100 refs #8554 optimisation des chargements des branchlines --- .../swing/db/ObserveSwingDataSource.java.orig | 717 --------------------- .../DataSourceMigrationForVersion_5_1.java | 1 + ...V5_1_19_ano_8554_brancheline_add_section-H2.sql | 3 + ...V5_1_19_ano_8554_brancheline_add_section-PG.sql | 3 + .../observe/ObserveTopiaApplicationContext.java | 27 +- entities/src/main/xmi/observe-longline.zargo | Bin 93999 -> 95950 bytes entities/src/main/xmi/observe.ini | 1 + .../topia/ObserveServiceContextTopia.java.orig | 147 ----- .../data/longline/BranchlineServiceTopia.java | 1 + .../SetLonglineDetailCompositionServiceTopia.java | 23 +- .../service/sql/batch/tables/TopiaSqlTables.java | 25 +- 11 files changed, 69 insertions(+), 879 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java.orig b/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java.orig deleted file mode 100644 index be50300..0000000 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java.orig +++ /dev/null @@ -1,717 +0,0 @@ -package fr.ird.observe.application.swing.db; - -/*- - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.SetMultimap; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceEvent; -import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceListener; -import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceInitializer; -import fr.ird.observe.services.ObserveServicesProvider; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; -import fr.ird.observe.services.configuration.ObserveDataSourceInformation; -import fr.ird.observe.services.configuration.ObserveDataSourceType; -import fr.ird.observe.services.configuration.rest.ObserveDataSourceConfigurationRest; -import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2; -import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG; -import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaSupport; -import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; -import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; -import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; -import fr.ird.observe.services.dto.ObserveDbUserDto; -import fr.ird.observe.services.dto.ObserveSpeciesListConfiguration; -import fr.ird.observe.services.dto.ReferenceMap; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import fr.ird.observe.services.runner.ObserveServiceMainFactory; -import fr.ird.observe.services.service.BabModelVersionException; -import fr.ird.observe.services.service.DataSourceService; -import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseNotFoundException; -import fr.ird.observe.services.service.LastUpdateDateService; -import fr.ird.observe.services.service.PingService; -import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; -import fr.ird.observe.services.service.actions.report.ReportService; -import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; -import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; -import fr.ird.observe.services.service.actions.validate.ValidateService; -<<<<<<< 86666a581338524c1d4bf38cbc81acea1f4cb45b -import fr.ird.observe.services.service.data.NavigationService; -======= ->>>>>>> clean code -import fr.ird.observe.services.service.data.TripManagementService; -import fr.ird.observe.services.service.data.longline.ActivityLongLineEncounterService; -import fr.ird.observe.services.service.data.longline.ActivityLongLineSensorUsedService; -import fr.ird.observe.services.service.data.longline.ActivityLonglineService; -import fr.ird.observe.services.service.data.longline.BranchlineService; -import fr.ird.observe.services.service.data.longline.SetLonglineCatchService; -import fr.ird.observe.services.service.data.longline.SetLonglineDetailCompositionService; -import fr.ird.observe.services.service.data.longline.SetLonglineGlobalCompositionService; -import fr.ird.observe.services.service.data.longline.SetLonglineService; -import fr.ird.observe.services.service.data.longline.TdrService; -import fr.ird.observe.services.service.data.longline.TripLonglineGearUseService; -import fr.ird.observe.services.service.data.longline.TripLonglineService; -import fr.ird.observe.services.service.data.seine.ActivitySeineService; -import fr.ird.observe.services.service.data.seine.FloatingObjectService; -import fr.ird.observe.services.service.data.seine.NonTargetCatchService; -import fr.ird.observe.services.service.data.seine.NonTargetSampleService; -import fr.ird.observe.services.service.data.seine.ObjectObservedSpeciesService; -import fr.ird.observe.services.service.data.seine.ObjectSchoolEstimateService; -import fr.ird.observe.services.service.data.seine.RouteService; -import fr.ird.observe.services.service.data.seine.SchoolEstimateService; -import fr.ird.observe.services.service.data.seine.SetSeineService; -import fr.ird.observe.services.service.data.seine.TargetCatchService; -import fr.ird.observe.services.service.data.seine.TargetSampleService; -import fr.ird.observe.services.service.data.seine.TransmittingBuoyOperationService; -import fr.ird.observe.services.service.data.seine.TripSeineGearUseService; -import fr.ird.observe.services.service.data.seine.TripSeineService; -import fr.ird.observe.services.service.referential.ObserveReferentialCache; -import fr.ird.observe.services.service.referential.ReferentialService; -import fr.ird.observe.services.service.sql.SqlScriptProducerService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.beans.AbstractSerializableBean; -import org.nuiton.version.Version; - -import javax.swing.JOptionPane; -import javax.swing.event.EventListenerList; -import java.io.Closeable; -import java.io.File; -import java.util.Locale; -import java.util.Set; -import java.util.stream.Collectors; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class ObserveSwingDataSource extends AbstractSerializableBean implements Closeable, ObserveServicesProvider { - - private static final long serialVersionUID = 1L; - - private static final Log log = LogFactory.getLog(ObserveSwingDataSource.class); - - /** le conteneur de listeners */ - protected final EventListenerList listenerList; - - protected final ObserveDataSourceConfiguration configuration; - - protected final ObserveReferentialCache referentialCache; - - protected ObserveDataSourceConnection connection; - - // indique que la connexion a expiré mais que la source n'est pas complétement fermer - private boolean expired; - - public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { - this.configuration = configuration; - this.listenerList = new EventListenerList(); - this.referentialCache = new ObserveReferentialCache(); - this.expired = false; - } - - public ObserveDataSourceConfiguration getConfiguration() { - return configuration; - } - - public ObserveDataSourceConnection getConnection() { - return connection; - } - - public String getLabel() { - return configuration.getLabel(); - } - - public boolean isSqlDataSource() { - return ObserveDataSourceType.SQL == configuration.getType(); - } - - public boolean canWriteData() { - return connection != null && connection.canWriteData(); - } - - public Version getVersion() { - Version result = null; - if (connection != null) { - result = connection.getVersion(); - } - return result; - } - - public boolean canReadReferential() { - return connection != null && connection.canReadReferential(); - } - - public boolean canReadData() { - return connection != null && connection.canReadData(); - } - - public boolean canWriteReferential() { - return connection != null && connection.canWriteReferential(); - } - - public ObserveDataSourceInformation getInformation() { - return new ObserveDataSourceInformation( - canReadReferential(), - canWriteReferential(), - canReadData(), - canWriteData(), - getVersion(), - getVersion(), - ImmutableList.of()); - } - - public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { - - checkIsNotAlreadyOpen(); - - fireNewMessage(t("observe.storage.message.opening", getLabel())); - fireOpening(); - - - DataSourceService dataSourceService = newDataSourceService(); - - connection = dataSourceService.open(configuration); - - fireNewMessage(t("observe.storage.message.opened", getLabel())); - fireOpened(); - } - - public void create(DataSourceCreateConfigurationDto createDto) - throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, - DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException, BabModelVersionException { - - checkIsNotAlreadyOpen(); - - fireNewMessage(t("observe.storage.message.creating", getLabel())); - fireOpening(); - - DataSourceService dataSourceService = newDataSourceService(); - - connection = dataSourceService.create(configuration, createDto); - - fireNewMessage(t("observe.storage.message.created", getLabel())); - fireOpened(); - } - - @Override - public void close() { - - checkIsOpen(); - - fireNewMessage(t("observe.storage.message.closing", getLabel())); - fireClosing(); - - referentialCache.close(); - - try { - // si la connection a expirée la source a deja été fermer pas le serveur - if (!expired) { - DataSourceService dataSourceService = newDataSourceService(); - - dataSourceService.close(); - } - } finally { - connection = null; - expired = false; - - fireNewMessage(t("observe.storage.message.closed", getLabel())); - fireClosed(); - } - - } - - public void destroy() throws DatabaseDestroyNotAuthorizedException { - - checkIsOpen(); - - fireNewMessage(t("observe.storage.message.destroying", getLabel())); - fireClosing(); - - referentialCache.close(); - - DataSourceService dataSourceService = newDataSourceService(); - - dataSourceService.destroy(); - - connection = null; - - fireNewMessage(t("observe.storage.message.destroyed", getLabel())); - fireClosed(); - - } - - public Set<ObserveDbUserDto> getUsers() { - - checkIsNotOpen(); - - DataSourceService dataSourceService = newDataSourceService(); - - return dataSourceService.getUsers(getConfiguration()); - } - - - public void applySecurity(Set<ObserveDbUserDto> users) { - - checkIsNotOpen(); - - DataSourceService dataSourceService = newDataSourceService(); - - dataSourceService.applySecurity(getConfiguration(), users); - } - - public void migrateData(ObserveDataSourceInformation dataSourceInformation, Version targetVersion) { - - checkIsNotOpen(); - - Version dbVersion = dataSourceInformation.getVersion(); - if (!dataSourceInformation.getMigrations().isEmpty()) { - - if (dbVersion.before(dataSourceInformation.getMinnimumVersion())) { - - JOptionPane.showMessageDialog( - null, - t("observe.storage.migrate.not.possible.before.version.3.0.message", targetVersion, dbVersion), - t("observe.storage.migrate.not.possible.before.version.3.0.title", targetVersion), - JOptionPane.WARNING_MESSAGE); - - } else { - - int answer = JOptionPane.showConfirmDialog( - null, - t("observe.storage.migrate.askUser.message", dbVersion, targetVersion, dataSourceInformation.getMigrations()), - t("observe.storage.migrate.askUser.title", targetVersion), - JOptionPane.YES_NO_OPTION, - JOptionPane.WARNING_MESSAGE); - - if (answer == JOptionPane.YES_OPTION) { - - DataSourceService dataSourceService = newDataSourceService(); - - - if (log.isInfoEnabled()) { - log.info("Migrate data source " + getLabel() + " in " + dbVersion + " to " + targetVersion); - } - - dataSourceService.migrateData(getConfiguration()); - } - } - } - - } - - public ImmutableMap<Class<?>, ReferentialReferenceSet<?>> updateReferentialReferenceSetsCache(String referentialReferenceSetsRequestName) { - - ReferentialService referentialService = newReferentialService(); - return referentialCache.loadReferenceSets(referentialService, referentialReferenceSetsRequestName); - - } - - protected <D extends ReferentialDto> ReferentialReferenceSet<D> getReferentialReferenceSet(Class<D> type) { - - checkIsOpen(); - - ReferentialService referentialService = newReferentialService(); - return referentialCache.getReferentialReferenceSet(referentialService, type); - } - - public <D extends ReferentialDto> Set<ReferentialReference<D>> getReferentialReferences(Class<D> type) { - - ReferentialReferenceSet<D> referentialReferenceSet = getReferentialReferenceSet(type); - return referentialReferenceSet.getReferences(); - - } - - public <D extends ReferentialDto> ReferentialReference<D> getReferentialReference(Class<D> type, String id) { - - ReferentialReferenceSet<D> referentialReferenceSet = getReferentialReferenceSet(type); - return referentialReferenceSet.getReferenceById(id); - - } - - public boolean isOpen() { - return connection != null; - } - - @Override - public SetLonglineService newSetLonglineService() { - return newService(SetLonglineService.class); - } - - public ObserveDataSourceInformation checkCanConnect() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - - checkIsNotAlreadyOpen(); - - DataSourceService dataSourceService = newDataSourceService(); - - return dataSourceService.checkCanConnect(configuration); - - } - - public boolean isLocal() { - return configuration instanceof ObserveDataSourceConfigurationTopiaH2; - } - - public boolean isRemote() { - return configuration instanceof ObserveDataSourceConfigurationTopiaPG; - } - - public boolean isServer() { - return configuration instanceof ObserveDataSourceConfigurationRest; - } - - public void addObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) { - listenerList.add(ObserveSwingDataSourceListener.class, listener); - } - - public ObserveSwingDataSourceListener[] getObserveSwingDataSourceListener() { - return listenerList.getListeners(ObserveSwingDataSourceListener.class); - } - - public void removeObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) { - if (log.isInfoEnabled()) { - log.info("removing listener " + listener); - } - listenerList.remove(ObserveSwingDataSourceListener.class, listener); - } - - public void removeObserveSwingDataSourceListeners() { - // remove all listeners - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - removeObserveSwingDataSourceListener(listener); - } - } - - public void fireNewMessage(String message) { - fireNewMessage(message, ObserveSwingDataSourceEvent.MessageLevel.INFO); - } - - public void fireNewMessage(String message, ObserveSwingDataSourceEvent.MessageLevel level) { - ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this, message, level); - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - listener.onNewMessage(evt); - } - } - - public boolean isExpired() { - return expired; - } - - public void expired() { - this.expired = true; - } - - protected ObserveServiceInitializer getObserveServiceInitializer() { - - ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); - - ObserveSwingApplicationConfig config = context.getConfig(); - - Locale locale = config.getLocale(); - - File tmpDirectory = config.getTmpDirectory(); - - ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); - - ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(configuration, connection); - - ObserveSpeciesListConfiguration speciesListConfiguration = new ObserveSpeciesListConfiguration(); - speciesListConfiguration.setSpeciesListLonglineCatchId(config.getSpeciesListLonglineCatchId()); - speciesListConfiguration.setSpeciesListLonglineDepredatorId(config.getSpeciesListLonglineDepredatorId()); - speciesListConfiguration.setSpeciesListLonglineEncounterId(config.getSpeciesListLonglineEncounterId()); - speciesListConfiguration.setSpeciesListSeineNonTargetCatchId(config.getSpeciesListSeineNonTargetCatchId()); - speciesListConfiguration.setSpeciesListSeineObjectObservedSpeciesId(config.getSpeciesListSeineObjectObservedSpeciesId()); - speciesListConfiguration.setSpeciesListSeineObjectSchoolEstimateId(config.getSpeciesListSeineObjectSchoolEstimateId()); - speciesListConfiguration.setSpeciesListSeineSchoolEstimateId(config.getSpeciesListSeineSchoolEstimateId()); - speciesListConfiguration.setSpeciesListSeineTargetCatchId(config.getSpeciesListSeineTargetCatchId()); - boolean showSql = config.isShowSql(); - if (showSql && configurationAndConnection.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaSupport) { - ObserveDataSourceConfigurationTopiaSupport configuration = (ObserveDataSourceConfigurationTopiaSupport) configurationAndConnection.getConfiguration(); - configuration.setTraceSql(true); - } - return ObserveServiceInitializer.create( - locale, - referentialLocale, - tmpDirectory, - speciesListConfiguration, - configurationAndConnection); - } - - protected void fireOpening() { - ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - listener.onOpening(evt); - } - } - - protected void fireOpened() { - ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - listener.onOpened(evt); - } - } - - protected void fireClosing() { - ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - listener.onClosing(evt); - } - } - - protected void fireClosed() { - ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); - for (ObserveSwingDataSourceListener listener : getObserveSwingDataSourceListener()) { - listener.onClosed(evt); - } - } - - protected void checkIsOpen() { - Preconditions.checkState(isOpen(), "Connection is not open"); - } - - protected void checkIsNotAlreadyOpen() { - Preconditions.checkState(!isOpen(), "Connection is already open"); - } - - protected void checkIsNotOpen() { - Preconditions.checkState(!isOpen(), "Connection is open"); - } - - private <S extends ObserveService> S newService(Class<S> serviceType) { - - ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); - - ObserveServiceMainFactory serviceFactory = ObserveSwingApplicationContext.get().getMainServiceFactory(); - return serviceFactory.newService(observeServiceInitializer, serviceType); - } - - @Override - public LastUpdateDateService newLastUpdateDateService() { - return newService(LastUpdateDateService.class); - } - - @Override - public SqlScriptProducerService newSqlScriptProducerService() { - return newService(SqlScriptProducerService.class); - } - - @Override - public ValidateService newValidateService() { - return newService(ValidateService.class); - } - - @Override - public ReportService newReportService() { - return newService(ReportService.class); - } - - @Override - public PingService newPingService() { - return newService(PingService.class); - } - - @Override - public TripManagementService newTripManagementService() { - return newService(TripManagementService.class); - } - - @Override - public ConsolidateDataService newConsolidateDataService() { - return newService(ConsolidateDataService.class); - } - - @Override - public UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService() { - return newService(UnidirectionalReferentialSynchronizeLocalService.class); - } - - @Override - public ReferentialSynchronizeService newReferentialSynchronizeService() { - return newService(ReferentialSynchronizeService.class); - } - - @Override - public ReferentialSynchronizeDiffService newReferentialSynchronizeDiffService() { - return newService(ReferentialSynchronizeDiffService.class); - } - - @Override - public DataSourceService newDataSourceService() { - return newService(DataSourceService.class); - } - - @Override - public NavigationService newNavigationService() { - return newService(NavigationService.class); - } - - @Override - public ReferentialService newReferentialService() { - return newService(ReferentialService.class); - } - - @Override - public TripSeineService newTripSeineService() { - return newService(TripSeineService.class); - } - - @Override - public RouteService newRouteService() { - return newService(RouteService.class); - } - - @Override - public FloatingObjectService newFloatingObjectService() { - return newService(FloatingObjectService.class); - } - - @Override - public ActivitySeineService newActivitySeineService() { - return newService(ActivitySeineService.class); - } - - @Override - public SetSeineService newSetSeineService() { - return newService(SetSeineService.class); - } - - @Override - public TripLonglineService newTripLonglineService() { - return newService(TripLonglineService.class); - } - - @Override - public ActivityLonglineService newActivityLonglineService() { - return newService(ActivityLonglineService.class); - } - - @Override - public SetLonglineGlobalCompositionService newSetLonglineGlobalCompositionService() { - return newService(SetLonglineGlobalCompositionService.class); - } - - @Override - public SetLonglineDetailCompositionService newSetLonglineDetailCompositionService() { - return newService(SetLonglineDetailCompositionService.class); - } - - @Override - public TransmittingBuoyOperationService newTransmittingBuoyOperationService() { - return newService(TransmittingBuoyOperationService.class); - } - - @Override - public BranchlineService newBranchlineService() { - return newService(BranchlineService.class); - } - - @Override - public SetLonglineCatchService newSetLonglineCatchService() { - return newService(SetLonglineCatchService.class); - } - - @Override - public ActivityLongLineEncounterService newActivityLongLineEncounterService() { - return newService(ActivityLongLineEncounterService.class); - } - - @Override - public TripLonglineGearUseService newTripLonglineGearUseService() { - return newService(TripLonglineGearUseService.class); - } - - @Override - public ActivityLongLineSensorUsedService newActivityLongLineSensorUsedService() { - return newService(ActivityLongLineSensorUsedService.class); - } - - @Override - public TdrService newTdrService() { - return newService(TdrService.class); - } - - @Override - public TripSeineGearUseService newTripSeineGearUseService() { - return newService(TripSeineGearUseService.class); - } - - @Override - public NonTargetCatchService newNonTargetCatchService() { - return newService(NonTargetCatchService.class); - } - - @Override - public NonTargetSampleService newNonTargetSampleService() { - return newService(NonTargetSampleService.class); - } - - @Override - public ObjectObservedSpeciesService newObjectObservedSpeciesService() { - return newService(ObjectObservedSpeciesService.class); - } - - @Override - public ObjectSchoolEstimateService newObjectSchoolEstimateService() { - return newService(ObjectSchoolEstimateService.class); - } - - @Override - public SchoolEstimateService newSchoolEstimateService() { - return newService(SchoolEstimateService.class); - } - - @Override - public TargetCatchService newTargetCatchService() { - return newService(TargetCatchService.class); - } - - @Override - public TargetSampleService newTargetSampleService() { - return newService(TargetSampleService.class); - } - - public ReferenceMap getReferentialMap(SetMultimap<Class<? extends ReferentialDto>, String> referentialIds) { - ReferenceMap result = new ReferenceMap(); - for (Class<? extends ReferentialDto> dtoType : referentialIds.keySet()) { - Set<String> ids = referentialIds.get(dtoType); - Set<? extends ReferentialReference<? extends ReferentialDto>> references = - getReferentialReferenceSet(dtoType).getReferences().stream() - .filter(r -> ids.contains(r.getId())) - .collect(Collectors.toSet()); - result.put(dtoType, references); - } - return result; - } -} diff --git a/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_5_1.java b/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_5_1.java index f11f4b9..333d4e2 100644 --- a/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_5_1.java +++ b/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_5_1.java @@ -87,6 +87,7 @@ public class DataSourceMigrationForVersion_5_1 extends AbstractObserveMigrationC addScript("16", "evol_8377_speciesFate_add_discard", queries); addScript("17", "evol_8376_vesselActivitySeine_add_allowFad", queries); addScript("18", "evol_8404_lengthLengthParameter", queries); + addScript("19", "ano_8554_brancheline_add_section", queries); } private void evol8391(TopiaSqlSupport topiaSqlSupport, List<String> queries) { diff --git a/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-H2.sql b/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-H2.sql new file mode 100644 index 0000000..85da596 --- /dev/null +++ b/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-H2.sql @@ -0,0 +1,3 @@ +ALTER TABLE observe_longline.branchline ADD COLUMN set VARCHAR(255); +ALTER TABLE observe_longline.branchline ADD CONSTRAINT FK_BRANCHLINE_SET FOREIGN KEY(set) REFERENCES observe_longline.set(topiaid); +UPDATE observe_longline.branchline main SET set = (SELECT s.topiaid FROM observe_longline.set s INNER JOIN observe_longline.section section ON section.set = s.topiaid INNER JOIN observe_longline.basket basket ON basket.section = section.topiaid INNER JOIN observe_longline.branchline branchline ON branchline.basket = basket.topiaid WHERE branchline.topiaid = main.topiaid); diff --git a/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-PG.sql b/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-PG.sql new file mode 100644 index 0000000..6a43c1d --- /dev/null +++ b/entities-migration/src/main/resources/db/migration/5.1/V5_1_19_ano_8554_brancheline_add_section-PG.sql @@ -0,0 +1,3 @@ +ALTER TABLE observe_longline.branchline ADD COLUMN set character varying(255); +ALTER TABLE observe_longline.branchline ADD CONSTRAINT FK_BRANCHLINE_SET FOREIGN KEY(set) REFERENCES observe_longline.set(topiaid); +UPDATE observe_longline.branchline main SET set = (SELECT s.topiaid FROM observe_longline.set s INNER JOIN observe_longline.section section ON section.set = s.topiaid INNER JOIN observe_longline.basket basket ON basket.section = section.topiaid INNER JOIN observe_longline.branchline branchline ON branchline.basket = basket.topiaid WHERE branchline.topiaid = main.topiaid); diff --git a/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 2efe028..4fe9930 100644 --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -41,6 +41,7 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; import org.nuiton.topia.persistence.support.TopiaMetadataModelSupport; import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTablesFactory; import org.nuiton.util.StringUtil; @@ -258,9 +259,7 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat if (tripSeineTables == null) { log.info("Loading tripSeineTables."); - tripSeineTables = topiaSqlTablesFactory.newReplicateEntityTables( - new TripReplicateTablesPredicate(), - ObserveEntityEnum.TripSeine); + tripSeineTables = topiaSqlTablesFactory.newReplicateEntityTables(new TripReplicateTablesPredicate(), ObserveEntityEnum.TripSeine); } return tripSeineTables; @@ -296,9 +295,25 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat if (tripLonglineTables == null) { log.info("Loading tripLonglineTables."); - tripLonglineTables = topiaSqlTablesFactory.newReplicateEntityTables( - new TripReplicateTablesPredicate(), - ObserveEntityEnum.TripLongline); + tripLonglineTables = topiaSqlTablesFactory.newReplicateEntityTables(new TripReplicateTablesPredicate(), ObserveEntityEnum.TripLongline); + + TopiaSqlTable table = tripLonglineTables.getTable("observe_longline.branchline"); + + table = new TopiaSqlTable( + table.getMetadataEntity(), + table.getAssociationMetadataEntity(), + table.getSchemaName(), + table.getTableName(), + table.getFromClause(), + table.getWhereClauseAlias(), + ImmutableSet.of(" INNER JOIN observe_longline.set set ON set.topiaId = activity.set", + " INNER JOIN observe_longline.branchline branchline ON branchline.set = set.topiaId"), + null + ); + + tripLonglineTables.replaceTable("observe_longline.branchline", table); + + } return tripLonglineTables; diff --git a/entities/src/main/xmi/observe-longline.zargo b/entities/src/main/xmi/observe-longline.zargo index 57dd558..6aa2afa 100644 Binary files a/entities/src/main/xmi/observe-longline.zargo and b/entities/src/main/xmi/observe-longline.zargo differ diff --git a/entities/src/main/xmi/observe.ini b/entities/src/main/xmi/observe.ini index 51d0247..da8daf1 100644 --- a/entities/src/main/xmi/observe.ini +++ b/entities/src/main/xmi/observe.ini @@ -54,6 +54,7 @@ branchlineLength.sqlType = numeric catchLongline.dbName = catch hookSize.sqlType = numeric settingIdentifier.notNull = true +setLongline.dbName = set snapWeight.sqlType = numeric swivelWeight.sqlType = numeric tracelineLength.sqlType = numeric diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceContextTopia.java.orig b/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceContextTopia.java.orig deleted file mode 100644 index 6fa5e73..0000000 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/ObserveServiceContextTopia.java.orig +++ /dev/null @@ -1,147 +0,0 @@ -package fr.ird.observe.services.topia; - -/* - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ird.observe.ObserveTopiaApplicationContext; -import fr.ird.observe.ObserveTopiaPersistenceContext; -import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceFactory; -import fr.ird.observe.services.ObserveServiceInitializer; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; -import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaSupport; -import fr.ird.observe.services.configuration.topia.ObserveDataSourceConnectionTopia; -import fr.ird.observe.services.dto.constants.ReferentialLocale; - -import java.io.File; -import java.util.Date; -import java.util.Locale; - -/** - * Contexte d'un service ToPIA. - * - * Created on 16/08/15. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class ObserveServiceContextTopia { - - protected final ObserveServiceInitializer observeServiceInitializer; - - protected final ObserveServiceFactory mainServiceFactory; - - protected final ObserveServiceFactory serviceFactory; - - protected ObserveTopiaPersistenceContext topiaPersistenceContext; - - protected ObserveTopiaApplicationContext topiaApplicationContext; - - public ObserveServiceContextTopia(ObserveServiceInitializer observeServiceInitializer, - ObserveServiceFactory mainServiceFactory, - ObserveServiceFactory serviceFactory) { - this.observeServiceInitializer = observeServiceInitializer; - this.mainServiceFactory = mainServiceFactory; - this.serviceFactory = serviceFactory; - } - - public ObserveTopiaApplicationContext getTopiaApplicationContext() { - return topiaApplicationContext; - } - - public void setTopiaApplicationContext(ObserveTopiaApplicationContext topiaApplicationContext) { - this.topiaApplicationContext = topiaApplicationContext; - } - - public Locale getApplicationLocale() { - return observeServiceInitializer.getApplicationLocale(); - } - - public ReferentialLocale getReferentialLocale() { - return observeServiceInitializer.getReferentialLocale(); - } - - public File getTemporaryDirectoryRoot() { - return observeServiceInitializer.getTemporaryDirectoryRoot(); - } - - public boolean withDataSourceConnection() { - return observeServiceInitializer.withDataSourceConnection(); - } - - public ObserveDataSourceConnectionTopia getDataSourceConnection() { - return (ObserveDataSourceConnectionTopia) observeServiceInitializer.getDataSourceConnection(); - } - - public ObserveDataSourceConfigurationTopiaSupport getDataSourceConfiguration() { - return (ObserveDataSourceConfigurationTopiaSupport) observeServiceInitializer.getDataSourceConfiguration(); - } - - public Date now() { - return new Date(); - } - - public <S extends ObserveService> S newService(Class<S> serviceType) { - return serviceFactory.newService(observeServiceInitializer, serviceType); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { - ObserveServiceInitializer newObserveServiceInitializer = ObserveServiceInitializer.create(observeServiceInitializer); - newObserveServiceInitializer.setDataSourceConnection(dataSourceConnection); - newObserveServiceInitializer.setDataSourceConfiguration(null); - return mainServiceFactory.newService(newObserveServiceInitializer, serviceType); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - ObserveServiceInitializer newObserveServiceInitializer = ObserveServiceInitializer.create(observeServiceInitializer); - newObserveServiceInitializer.setDataSourceConnection(null); - newObserveServiceInitializer.setDataSourceConfiguration(dataSourceConfiguration); - return mainServiceFactory.newService(newObserveServiceInitializer, serviceType); - } - - public ObserveTopiaPersistenceContext getTopiaPersistenceContext() { - return topiaPersistenceContext; - } - - public void setTopiaPersistenceContext(ObserveTopiaPersistenceContext topiaPersistenceContext) { - this.topiaPersistenceContext = topiaPersistenceContext; - } - -<<<<<<< 86666a581338524c1d4bf38cbc81acea1f4cb45b -// public void closeTopiaPersistenceContext() { -// topiaPersistenceContext.close(); -// topiaPersistenceContext = null; -// } -// -// public File createTemporaryDirectory(String prefix) { -// Set<PosixFilePermission> posixFilePermissions = PosixFilePermissions.fromString("rwxr-x---"); -// FileAttribute<Set<PosixFilePermission>> fileAttribute = PosixFilePermissions.asFileAttribute(posixFilePermissions); -// try { -// return Files.createTempDirectory(getTemporaryDirectoryRoot().toPath(), prefix, fileAttribute).toFile(); -// } catch (IOException e) { -// throw new RuntimeException("Could not create temporary directory with preifx: " + prefix, e); -// } -// } - -======= ->>>>>>> clean code -} diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/BranchlineServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/BranchlineServiceTopia.java index bad2ec5..6305519 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/BranchlineServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/BranchlineServiceTopia.java @@ -58,6 +58,7 @@ public class BranchlineServiceTopia extends ObserveServiceTopia implements Branc checkLastUpdateDate(setLongline, dto); Branchline entity = loadOrCreateEntityFromDataDto(dto); + entity.setSetLongline(setLongline); copyDataDtoToEntity(dto, entity); diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/SetLonglineDetailCompositionServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/SetLonglineDetailCompositionServiceTopia.java index b9a6f6f..84ba0fd 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/SetLonglineDetailCompositionServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/longline/SetLonglineDetailCompositionServiceTopia.java @@ -26,8 +26,6 @@ import fr.ird.observe.entities.longline.Basket; import fr.ird.observe.entities.longline.Branchline; import fr.ird.observe.entities.longline.Section; import fr.ird.observe.entities.longline.SetLongline; -import fr.ird.observe.services.service.data.longline.SetLonglineDetailCompositionService; -import fr.ird.observe.services.topia.ObserveServiceTopia; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -35,6 +33,8 @@ import fr.ird.observe.services.dto.longline.SectionDto; import fr.ird.observe.services.dto.longline.SetLonglineDetailCompositionDto; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; import fr.ird.observe.services.dto.result.SaveResultDto; +import fr.ird.observe.services.service.data.longline.SetLonglineDetailCompositionService; +import fr.ird.observe.services.topia.ObserveServiceTopia; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -118,13 +118,22 @@ public class SetLonglineDetailCompositionServiceTopia extends ObserveServiceTopi checkLastUpdateDate(entity, dto); copyDataDtoToEntity(dto, entity); - SaveResultDto result = saveEntity(entity); - - for (Section section : entity.getSection()) { - section.setSetLongline(entity); + if (entity.isSectionNotEmpty()) { + for (Section section : entity.getSection()) { + section.setSetLongline(entity); + if (section.isBasketNotEmpty()) { + for (Basket basket : section.getBasket()) { + if (basket.isBranchlineNotEmpty()) { + for (Branchline branchline : basket.getBranchline()) { + branchline.setSetLongline(entity); + } + } + } + } + } } - return result; + return saveEntity(entity); } diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java index 44b6f73..7837867 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java @@ -54,8 +54,8 @@ public class TopiaSqlTables implements Iterable<TopiaSqlTable> { /** Logger. */ private static final Log log = LogFactory.getLog(TopiaSqlTables.class); - protected final ImmutableMap<String, TopiaSqlTable> tablesByFullyTableName; - protected final ImmutableSet<TopiaSqlTable> orderedTables; + protected ImmutableMap<String, TopiaSqlTable> tablesByFullyTableName; + protected ImmutableSet<TopiaSqlTable> orderedTables; public TopiaSqlTables(ImmutableMap<String, TopiaSqlTable> tablesByFullyTableName, ImmutableSet<TopiaSqlTable> orderedTables) { @@ -93,6 +93,27 @@ public class TopiaSqlTables implements Iterable<TopiaSqlTable> { return new TopiaSqlTables(tablesByFullyTableName, reverseSet); } + public void replaceTable(String tableName, TopiaSqlTable table) { + ImmutableMap.Builder<String, TopiaSqlTable> tablesByFullyTableName2 = ImmutableMap.builder(); + ImmutableSet.Builder<TopiaSqlTable> orderedTables2 = ImmutableSet.builder(); + for (Map.Entry<String, TopiaSqlTable> entry : tablesByFullyTableName.entrySet()) { + String name = entry.getKey(); + TopiaSqlTable topiaSqlTable = entry.getValue(); + if (tableName.equals(name)) { + topiaSqlTable = table; + } + tablesByFullyTableName2.put(name, topiaSqlTable); + } + for (TopiaSqlTable orderedTable : orderedTables) { + if (tableName.equals(orderedTable.getFullyTableName())) { + orderedTable = table; + } + orderedTables2.add(orderedTable); + } + tablesByFullyTableName =tablesByFullyTableName2.build(); + orderedTables =orderedTables2.build(); + } + /** * Created on 02/01/16. * -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.