Tony CHEMIT pushed to branch develop-9 at ultreiaio / ird-observe Commits: f9246046 by Tony Chemit at 2021-04-12T18:09:24+02:00 Introduce models-navigation modules - - - - - 3 changed files: - models/dto/java/src/main/java/fr/ird/observe/spi/module/ObserveBusinessModule.java - models/persistence/java/src/main/i18n/getters/java.getter - models/persistence/java/src/main/java/fr/ird/observe/entities/tree/TreeBuilderSupport.java Changes: ===================================== models/dto/java/src/main/java/fr/ird/observe/spi/module/ObserveBusinessModule.java ===================================== @@ -42,6 +42,10 @@ public interface ObserveBusinessModule { return gearType != null && Objects.equals(gearType, program.getGearType()); } + default boolean accept(GearType gearType) { + return Objects.equals(getGearType(), gearType); + } + /** * @return accepted gear type for this module ({@code null} value means does not use gear type). */ ===================================== models/persistence/java/src/main/i18n/getters/java.getter ===================================== @@ -1,3 +1,4 @@ +observe.data.Data.program observe.error.DuplicateLengthWeightParameterException observe.error.LengthLengthParameterNotFoundException observe.error.LengthWeightParameterNotFoundException ===================================== models/persistence/java/src/main/java/fr/ird/observe/entities/tree/TreeBuilderSupport.java ===================================== @@ -22,10 +22,8 @@ package fr.ird.observe.entities.tree; * #L% */ -import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; import fr.ird.observe.dto.data.ps.common.TripReference; import fr.ird.observe.dto.decoration.DecoratorServiceSupport; import fr.ird.observe.dto.referential.ReferentialDto; @@ -33,6 +31,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.referential.common.PersonReference; import fr.ird.observe.dto.referential.common.ProgramReference; import fr.ird.observe.dto.referential.common.VesselReference; +import fr.ird.observe.entities.Entity; import fr.ird.observe.entities.ObserveTopiaPersistenceContextSupport; import fr.ird.observe.entities.referential.common.Person; import fr.ird.observe.entities.referential.common.Program; @@ -44,6 +43,7 @@ import fr.ird.observe.spi.module.ObserveBusinessProject; import fr.ird.observe.spi.module.ps.BusinessModule; import fr.ird.observe.tree.ToolkitTreeNode; import fr.ird.observe.tree.ToolkitTreeNodeBean; +import fr.ird.observe.tree.ToolkitTreeNodeBuildChildrenInterceptor; import fr.ird.observe.tree.io.ToolkitTreeFlatModel; import fr.ird.observe.tree.io.ToolkitTreeFlatModelRootRequest; import fr.ird.observe.tree.io.ToolkitTreeFlatModelWriter; @@ -57,6 +57,8 @@ import java.util.Map; import java.util.TreeMap; import java.util.stream.Collectors; +import static io.ultreia.java4all.i18n.I18n.t; + /** * Created on 12/04/2021. * @@ -95,40 +97,35 @@ class TreeBuilderSupport implements WithPermission { fr.ird.observe.spi.module.ll.BusinessModule llBusinessModule = project.getLlBusinessModule(); boolean acceptPsModule = request.acceptedModule(psBusinessModule); boolean acceptLlModule = request.acceptedModule(llBusinessModule); - List<ProgramReference> programList = Program.toReferenceSet(referentialLocale, Program.getDao(persistenceContext).getProgramList(request, tripCountByProgram, acceptPsModule, acceptLlModule).stream(), now).toList(); - programById = Maps.uniqueIndex(programList, ProgramReference::getId); + List<Program> programList = Program.getDao(persistenceContext).getProgramList(request, tripCountByProgram, acceptPsModule, acceptLlModule); + programById = Program.uniqueIndex(referentialLocale, persistenceContext); personById = Person.uniqueIndex(referentialLocale, persistenceContext); vesselById = Vessel.uniqueIndex(referentialLocale, persistenceContext); - decoratorService.installDecorator(ProgramReference.class, programList.stream()); if (acceptPsModule) { - List<ProgramReference> psProgramList = programList.stream().filter(psBusinessModule::accept).collect(Collectors.toList()); + List<Program> psProgramList = programList.stream().filter(p -> psBusinessModule.accept(p.getGearType())).collect(Collectors.toList()); log.info(String.format("Found %d PS program(s).", psProgramList.size())); - for (ProgramReference program : psProgramList) { - builder.addReference("ps:", program).put("$$tripCount", tripCountByProgram.get(program.getId())); + for (Program program : psProgramList) { + String id = program.getTopiaId(); + addEntity(builder, "ps:", program).put("$$tripCount", tripCountByProgram.get(id)); if (loadTrip) { - ArrayListMultimap<String, TripReference> psTripByProgram = ArrayListMultimap.create(); - List<TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(persistenceContext).getChildren(referentialLocale, program.getId(), programById, personById, vesselById); - trips.forEach(t -> psTripByProgram.put(t.getProgram().getId(), t)); + List<TripReference> trips = fr.ird.observe.entities.data.ps.common.Trip.SPI.getDao(persistenceContext).getChildren(referentialLocale, id, programById, personById, vesselById); decoratorService.installDecorator(TripReference.class, trips.stream()); - String prefix = "ps:" + program.getId(); - List<TripReference> tripList = psTripByProgram.get(program.getId()); - tripList.forEach(r -> builder.addReference(prefix, r)); + String prefix = "ps:" + id; + trips.forEach(r -> builder.addReference(prefix, r)); } } } if (acceptLlModule) { - List<ProgramReference> llProgramList = programList.stream().filter(llBusinessModule::accept).collect(Collectors.toList()); + List<Program> llProgramList = programList.stream().filter(p -> llBusinessModule.accept(p.getGearType())).collect(Collectors.toList()); log.info(String.format("Found %d LL program(s).", llProgramList.size())); - for (ProgramReference program : llProgramList) { - builder.addReference("ll:", program).put("$$tripCount", tripCountByProgram.get(program.getId())); + for (Program program : llProgramList) { + String id = program.getTopiaId(); + addEntity(builder, "ll:", program).put("$$tripCount", tripCountByProgram.get(id)); if (loadTrip) { - ArrayListMultimap<String, fr.ird.observe.dto.data.ll.common.TripReference> llTripByProgram = ArrayListMultimap.create(); - List<fr.ird.observe.dto.data.ll.common.TripReference> trips = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(persistenceContext).getChildren(referentialLocale, program.getId(), programById, personById, vesselById); + List<fr.ird.observe.dto.data.ll.common.TripReference> trips = fr.ird.observe.entities.data.ll.common.Trip.SPI.getDao(persistenceContext).getChildren(referentialLocale, id, programById, personById, vesselById); decoratorService.installDecorator(fr.ird.observe.dto.data.ll.common.TripReference.class, trips.stream()); - trips.forEach(t -> llTripByProgram.put(t.getProgram().getId(), t)); - String prefix = "ll:" + program.getId(); - List<fr.ird.observe.dto.data.ll.common.TripReference> tripList = llTripByProgram.get(program.getId()); - tripList.forEach(r -> builder.addReference(prefix, r)); + String prefix = "ll:" + id; + trips.forEach(r -> builder.addReference(prefix, r)); } } } @@ -143,6 +140,13 @@ class TreeBuilderSupport implements WithPermission { return builder.build(); } + + public Map<String, Object> addEntity(ToolkitTreeFlatModelWriter builder, String prefix, Entity entity) { + Map<String, Object> states = builder.addShortId(prefix, entity.getTopiaId(), entity.getLastUpdateDate()); + states.put(ToolkitTreeNodeBuildChildrenInterceptor.$$_DATA, entity); + return states; + } + protected Long countReferential(Class<? extends ReferentialDto> dtoType) { return PersistenceBusinessProject.fromReferentialDto(dtoType).getDao(persistenceContext).count(); } @@ -156,15 +160,16 @@ class TreeBuilderSupport implements WithPermission { protected void interceptProgram(ToolkitTreeNode node) { ToolkitTreeNodeBean userObject = node.getUserObject(); - ProgramReference reference = userObject.popState("$$reference"); - userObject.copy(reference.toShortDto()); + Program entity = userObject.popState(ToolkitTreeNodeBuildChildrenInterceptor.$$_DATA); Integer tripCount = userObject.popState("$$tripCount"); - userObject.addState(ToolkitTreeNodeBean.STATE_TEXT, reference.getLongLabel()); + String label = String.format("[%s] %s %s", entity.getGearType().getPrefix(), t("observe.data.Data.program"), entity.getLabel(referentialLocale)); + userObject.addState(ToolkitTreeNodeBean.STATE_TEXT, label); userObject.addState(ToolkitTreeNodeBean.STATE_COUNT, tripCount == null ? 0 : tripCount); - userObject.addState(ToolkitTreeNodeBean.STATE_ENABLED, reference.isEnabled()); + userObject.addState(ToolkitTreeNodeBean.STATE_ENABLED, entity.isEnabled()); userObject.addState(ToolkitTreeNodeBean.STATE_EDITABLE, canWriteData()); } + @Override public final Permission getCredentials() { return permission.getCredentials(); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/f9246046c9fbba60b847318646... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/f9246046c9fbba60b847318646... You're receiving this email because of your account on gitlab.com.