This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 028920cbed3e19cc92159676616305152aa7fa0f Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Nov 6 14:59:24 2015 +0100 migration de l'écran de calcul des données (refs #7679) --- .../java/fr/ird/observe/ui/admin/AdminStep.java | 3 +- .../ui/admin/consolidate/ConsolidateModel.java | 45 ------ .../ui/admin/consolidate/ConsolidateUIHandler.java | 159 +++++++++------------ .../observe-application-swing_fr_FR.properties | 3 + .../consolidate/ConsolidateDataService.java | 2 + .../java/fr/ird/observe/services/dto/IdDtos.java | 20 +++ .../services/ObserveServiceFactoryRest.java | 7 + .../service/seine/NonTargetCatchServiceTopia.java | 4 +- 8 files changed, 103 insertions(+), 140 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java index 4d514ab..6317db5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java @@ -137,7 +137,8 @@ public enum AdminStep implements WizardExtStep { false, false, DbMode.USE_LOCAL, - DbMode.USE_REMOTE + DbMode.USE_REMOTE, + DbMode.USE_SERVER ), /** pour lancer la generation des rapports */ diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java index d98f842..8629c23 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java @@ -22,13 +22,8 @@ package fr.ird.observe.ui.admin.consolidate; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.dto.seine.SetSeineDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; -import org.nuiton.decorator.Decorator; /** * Modele pour preparer une validation de donnees d'une base. @@ -41,14 +36,6 @@ public class ConsolidateModel extends AdminActionModel { /** la source de données où effectuer la consolidation des données */ private ObserveSwingDataSource source; - private Decorator<ProgramDto> programDecorator; - - private Decorator<TripSeineDto> tripDecorator; - - private Decorator<SetSeineDto> setDecorator; - - private Decorator<ActivitySeineDto> activityDecorator; - public ConsolidateModel() { super(AdminStep.CONSOLIDATE); } @@ -61,38 +48,6 @@ public class ConsolidateModel extends AdminActionModel { this.source = source; } - public Decorator<ProgramDto> getProgramDecorator() { - return programDecorator; - } - - public void setProgramDecorator(Decorator<ProgramDto> programDecorator) { - this.programDecorator = programDecorator; - } - - public Decorator<TripSeineDto> getTripDecorator() { - return tripDecorator; - } - - public void setTripDecorator(Decorator<TripSeineDto> tripDecorator) { - this.tripDecorator = tripDecorator; - } - - public Decorator<SetSeineDto> getSetDecorator() { - return setDecorator; - } - - public void setSetDecorator(Decorator<SetSeineDto> setDecorator) { - this.setDecorator = setDecorator; - } - - public Decorator<ActivitySeineDto> getActivityDecorator() { - return activityDecorator; - } - - public void setActivityDecorator(Decorator<ActivitySeineDto> activityDecorator) { - this.activityDecorator = activityDecorator; - } - @Override public void destroy() { super.destroy(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java index b523e9b..31e1e31 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java @@ -21,28 +21,31 @@ */ package fr.ird.observe.ui.admin.consolidate; -import fr.ird.observe.ui.DecoratorService; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.dto.seine.SetSeineDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceDtos; +import fr.ird.observe.services.service.actions.consolidate.ConsolidateActivitySeineDataResult; +import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; +import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataRequest; +import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataResult; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.admin.AdminUIModel; import fr.ird.observe.ui.admin.config.SelectDataUI; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.Date; -import java.util.List; +import java.util.Set; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.t; @@ -91,11 +94,10 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { // avoid multi-cast return; } - //FIXME -// DataSelectionModel value = (DataSelectionModel) evt.getNewValue(); -// if (log.isDebugEnabled()) { -// log.debug("selection model changed to " + value); -// } + DataSelectionModel value = (DataSelectionModel) evt.getNewValue(); + if (log.isDebugEnabled()) { + log.debug("selection model changed to " + value); + } updateSelectionModel(selectTabUI); } }; @@ -130,73 +132,58 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { // une erreur ou une annulation return init; } - //FIXME -// java.util.Set<String> tripIds = model.getSelectionDataModel().getSelectedData(); -// List<TripSeineDto> toUpdate = new ArrayList<TripSeineDto>(tripIds.size()); - -// ConsolidateDataService service = -// ObserveServiceHelper.getConsolidateDataService(); - - ObserveSwingDataSource source = getStepModel().getSource(); - String txName = "consolidateData"; - - //FIXME -// TopiaContext tx = source.beginTransaction(txName); -// try { -// TopiaDAO<TripSeine> dao = source.getDAO(tx, TripSeine.class); -// for (String mareeId : tripIds) { -// -// if (Entities.isSeineId(mareeId)) { -// -// TripSeine trip = (TripSeine) tx.findByTopiaId(mareeId); -// -// boolean needUpdate = service.consolidateTrip(this, tx, trip); -// if (needUpdate) { -// -// // on met a jour la maree en base -// dao.update(trip); -// -// // on conserve une reference sur la maree mise à jour -// toUpdate.add(trip); -// } -// -// } -// -// } -// -// // on commite si quelque chose a ete mise a jour -// boolean needCommit = !toUpdate.isEmpty(); -// -// if (needCommit) { -// -// sendMessage(t("observe.message.consolidate.save.changes", -// toUpdate.size())); -// source.commitTransaction(tx, txName); -// } -// -// } catch (Exception eee) { -// try { -// source.rollbackTransaction(tx, txName); -// } catch (DataSourceException e1) { -// -// // une autre erreur lors du rollback, qui ne doit pas empecher -// // de continuer le traitement -// if (log.isErrorEnabled()) { -// log.error(e1); -// } -// } -// throw eee; -// } finally { -// -// // clean service -// service.clear(); -// -// // toujours fermer la transaction -// source.closeTransaction(tx, txName); -// } - - sendMessage(t("observe.message.consolidate.operation.done", - new Date())); + Set<ReferenceDto> trips = model.getSelectionDataModel().getSelectedData(); + ImmutableSet<String> tripIds = ImmutableSet.copyOf( + Iterables.transform( + Iterables.filter(trips, IdDtos.<ReferenceDto>newTripSeinePredicate()), + ReferenceDtos.getIdFunction())); + + + ObserveSwingDataSource dataSource = getStepModel().getSource(); + + try { + + ConsolidateDataService consolidateDataService = dataSource.newService(ConsolidateDataService.class); + + ConsolidateTripSeineDataRequest request = new ConsolidateTripSeineDataRequest(); + request.setTripSeineIds(tripIds); + request.setFailIfLenghtWeightParameterNotFound(false); + + ImmutableSet<ConsolidateTripSeineDataResult> results = consolidateDataService.consolidateTripSeines(request); + + if (results.isEmpty()) { + + sendMessage(t("observe.message.consolidate.noChanges")); + + } else { + + for (ConsolidateTripSeineDataResult tripSeineDataResult : results) { + + String tripSeineLabel = tripSeineDataResult.getTripSeineLabel(); + + sendMessage(t("observe.message.consolidate.trip", tripSeineLabel)); + + for (ConsolidateActivitySeineDataResult activitySeineDataResult : tripSeineDataResult.getConsolidateActivitySeineDataResults()) { + + sendMessage(t("observe.message.consolidate.activity", activitySeineDataResult.getActivitySeineLabel())); + + } + + } + + sendMessage(t("observe.message.consolidate.save.changes", results.size())); + } + + sendMessage(t("observe.message.consolidate.operation.done", + new Date())); + + } finally { + + dataSource.close(); + + } + + return WizardState.SUCCESSED; } @@ -209,18 +196,6 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { openSource(source); - DecoratorService dProvider = getDecoratorService(); - ConsolidateModel stepModel = getStepModel(); - - Decorator<ProgramDto> p = dProvider.getDecoratorByType(ProgramDto.class); - Decorator<TripSeineDto> m = dProvider.getDecoratorByType(TripSeineDto.class); - Decorator<ActivitySeineDto> a = dProvider.getDecoratorByType(ActivitySeineDto.class); - Decorator<SetSeineDto> c = dProvider.getDecoratorByType(SetSeineDto.class); - stepModel.setProgramDecorator(p); - stepModel.setTripDecorator(m); - stepModel.setActivityDecorator(a); - stepModel.setSetDecorator(c); - return null; } diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index ff24e33..4a76daf 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -1443,8 +1443,11 @@ observe.message.can.not.write.data=Vous n'êtes pas autorisé à écrire des don observe.message.cant.add.echantillonRejetThon=<html><body><strong>Impossible d'ajouter des échantillons de rejet thons</strong>(pas de rejet thon monté sur le pont)</body></html> observe.message.cant.add.echantillonTargetCatch=<html><body><strong>Impossible d'ajouter des échantillons thons</strong> (pas de capture thon)</body></html> observe.message.cant.add.nonTargetSample=<html><body><strong>Impossible d'ajouter des échantillons</strong>(pas de rejet faune)</body></html> +observe.message.consolidate.activity=Données calculées pour l'activité %1$s +observe.message.consolidate.noChanges=Aucune donnée nodifiée. observe.message.consolidate.operation.done=Opération de calcul des données terminée à %1$s. observe.message.consolidate.save.changes=Sauvegarde des modifications sur la(es) %1$s marée(s) modifiée(s). +observe.message.consolidate.trip=Données calculées pour la marée %1$s observe.message.creating.referentiel=L'objet est en cours de création. observe.message.db.closed=%1$s a été fermé observe.message.db.loaded=%1$s chargé diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java index bc05d4b..c406a7e 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/consolidate/ConsolidateDataService.java @@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; +import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; /** @@ -48,6 +49,7 @@ public interface ConsolidateDataService extends ObserveService{ @ReadDataPermission @WriteDataPermission @PostRequest + @Write ImmutableSet<ConsolidateTripSeineDataResult> consolidateTripSeines(ConsolidateTripSeineDataRequest consolidateTripSeineDataRequest); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java index 5a3dc17..625bfeb 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/IdDtos.java @@ -33,6 +33,26 @@ public class IdDtos extends AbstractIdDtos { return Iterables.find(source, newIdPredicate(id)); } + public static <BeanType extends IdDto> Predicate<BeanType> newTripSeinePredicate() { + return new Predicate<BeanType>() { + + @Override + public boolean apply(BeanType input) { + return isTripSeine(input) ; + } + }; + } + + public static <BeanType extends IdDto> Predicate<BeanType> newTripLonglinePredicate() { + return new Predicate<BeanType>() { + + @Override + public boolean apply(BeanType input) { + return isTripLongline(input) ; + } + }; + } + public static boolean isTrip(IdDto dto) { return isTripSeine(dto) || isTripLongline(dto); } diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index 918a6c3..b3034ed 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -23,9 +23,12 @@ package fr.ird.observe.services; */ import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; import com.google.common.base.Strings; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.reflect.Reflection; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -51,7 +54,11 @@ import org.apache.commons.logging.LogFactory; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; import java.util.Collection; +import java.util.List; /** * Created on 16/08/15. diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java index fc9a0d1..932f94c 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/NonTargetCatchServiceTopia.java @@ -85,7 +85,7 @@ public class NonTargetCatchServiceTopia extends ObserveServiceTopia implements N SetSeineNonTargetCatchDto setSeineNonTargetCatchDto = form.getForm(); // on cherche si il y a des échantillons sur les captures - if (setSeine.sizeNonTargetCatch() > 0) { + if (setSeine.sizeNonTargetSample() > 0) { NonTargetSample nonTargetSample = Iterables.get(setSeine.getNonTargetSample(), 0); if (nonTargetSample != null) { @@ -129,7 +129,7 @@ public class NonTargetCatchServiceTopia extends ObserveServiceTopia implements N // on supprime les échantillons qui ne correspondent plus a des capture - if (setSeine.sizeNonTargetCatch() > 0) { + if (setSeine.sizeNonTargetSample() > 0) { NonTargetSample nonTargetSample = Iterables.get(setSeine.getNonTargetSample(), 0); Set<Species> speciesCatchs = Sets.newHashSet(Iterables.transform( -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.