branch feature/7610 updated (90950ed -> 849801d)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7610 in repository observe. See http://git.codelutin.com/observe.git discards 90950ed modif des linkedhashset en list dans certains dto pour faire marcher les double listes (refs #7610) adds 44b61d0 gestion des noeuds de référentiel (refs #7553) adds 02fd51b refs #7553 noeuds de référentiels new 355ffec modif des linkedhashset en list dans certains dto pour faire marcher les double listes (refs #7610) new 849801d ouverture des écrans de référentiel commun (refs #7610) This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (90950ed) \ N -- N -- N refs/heads/feature/7610 (849801d) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 849801dc3dad5f2f5c441fc6907e4f9578e39c19 Author: Kevin Morin <morin@codelutin.com> Date: Wed Oct 14 18:03:45 2015 +0200 ouverture des écrans de référentiel commun (refs #7610) commit 355ffecf7eef38236a94b5ca8987f5bcb23832f4 Author: Kevin Morin <morin@codelutin.com> Date: Wed Oct 14 11:03:12 2015 +0200 modif des linkedhashset en list dans certains dto pour faire marcher les double listes (refs #7610) Summary of changes: .../java/fr/ird/observe/ui/DecoratorService.java | 7 + .../observe/ui/content/ContentUIInitializer.java | 4 +- .../ird/observe/ui/content/ContentUIManager.java | 76 ++--- .../fr/ird/observe/ui/content/ContentUIModel.java | 12 - .../observe/ui/content/ref/ContentReferenceUI.jaxx | 2 +- .../ui/content/ref/ContentReferenceUIHandler.java | 332 +++++++++++---------- .../observe/ui/content/ref/impl/GearUIHandler.java | 3 +- .../ref/impl/LengthWeightParameterUIHandler.java | 3 +- .../ui/content/ref/impl/ProgramUIHandler.java | 3 +- .../ui/content/ref/impl/SpeciesListUIHandler.java | 3 +- .../ui/content/ref/impl/SpeciesUIHandler.java | 3 +- .../ui/content/ref/impl/VesselUIHandler.java | 3 +- .../fr/ird/observe/ui/tree/DtoNodeSupport.java | 14 +- .../loadors/ReferenceCommonNodeChildLoador.java | 10 +- .../loadors/ReferenceLonglineNodeChildLoador.java | 11 +- .../loadors/ReferenceSeineNodeChildLoador.java | 12 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 4 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 13 +- .../observe-application-swing_fr_FR.properties | 52 ++-- .../v1/ReferentialServiceController.java | 5 + .../services/service/ReferentialService.java | 6 + .../java/fr/ird/observe/services/dto/DtoMap.java | 16 +- .../services/dto/referential/ReferentialDtos.java | 1 - .../services/service/ReferentialServiceTopia.java | 40 +++ 24 files changed, 356 insertions(+), 279 deletions(-) copy observe-entities/src/main/java/fr/ird/observe/entities/EntityMap.java => observe-services-model/src/main/java/fr/ird/observe/services/dto/DtoMap.java (70%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7610 in repository observe. See http://git.codelutin.com/observe.git commit 355ffecf7eef38236a94b5ca8987f5bcb23832f4 Author: Kevin Morin <morin@codelutin.com> Date: Wed Oct 14 11:03:12 2015 +0200 modif des linkedhashset en list dans certains dto pour faire marcher les double listes (refs #7610) --- .../src/main/xmi/observe-services-dto-common.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/observe-services-model/src/main/xmi/observe-services-dto-common.properties b/observe-services-model/src/main/xmi/observe-services-dto-common.properties index 3333ab3..a7eba67 100644 --- a/observe-services-model/src/main/xmi/observe-services-dto-common.properties +++ b/observe-services-model/src/main/xmi/observe-services-dto-common.properties @@ -27,10 +27,10 @@ model.tagvalue.simpleBeanWithNoInterfaceClassNameSuffix=Dto package.fr.ird.observe.services.dto.stereotype=bean -fr.ird.observe.services.dto.referential.Gear.attribute.gearCaracteristic.stereotype=unique,ordered +fr.ird.observe.services.dto.referential.Gear.attribute.gearCaracteristic.stereotype=ordered fr.ird.observe.services.dto.referential.GearCaracteristic.attribute.gearCaracteristicType.stereotype=unique,ordered -fr.ird.observe.services.dto.referential.Species.attribute.ocean.stereotype=unique,ordered -fr.ird.observe.services.dto.referential.SpeciesList.attribute.species.stereotype=unique,ordered +fr.ird.observe.services.dto.referential.Species.attribute.ocean.stereotype=ordered +fr.ird.observe.services.dto.referential.SpeciesList.attribute.species.stereotype=ordered fr.ird.observe.services.dto.ReferenceSet.attribute.reference.stereotype=unique,ordered fr.ird.observe.services.dto.TripMap.attribute.points.stereotype=unique,ordered -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7610 in repository observe. See http://git.codelutin.com/observe.git commit 849801dc3dad5f2f5c441fc6907e4f9578e39c19 Author: Kevin Morin <morin@codelutin.com> Date: Wed Oct 14 18:03:45 2015 +0200 ouverture des écrans de référentiel commun (refs #7610) --- .../observe/ui/content/ContentUIInitializer.java | 2 +- .../ird/observe/ui/content/ContentUIManager.java | 1 - .../fr/ird/observe/ui/content/ContentUIModel.java | 12 - .../observe/ui/content/ref/ContentReferenceUI.jaxx | 2 +- .../ui/content/ref/ContentReferenceUIHandler.java | 332 +++++++++++---------- .../observe/ui/content/ref/impl/GearUIHandler.java | 3 +- .../ref/impl/LengthWeightParameterUIHandler.java | 3 +- .../ui/content/ref/impl/ProgramUIHandler.java | 3 +- .../ui/content/ref/impl/SpeciesListUIHandler.java | 3 +- .../ui/content/ref/impl/SpeciesUIHandler.java | 3 +- .../ui/content/ref/impl/VesselUIHandler.java | 3 +- .../fr/ird/observe/ui/tree/DtoNodeSupport.java | 14 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 4 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 13 +- .../observe-application-swing_fr_FR.properties | 52 ++-- .../v1/ReferentialServiceController.java | 5 + .../services/service/ReferentialService.java | 6 + .../java/fr/ird/observe/services/dto/DtoMap.java | 43 +++ .../services/dto/referential/ReferentialDtos.java | 1 - .../services/service/ReferentialServiceTopia.java | 40 +++ 20 files changed, 328 insertions(+), 217 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java index 978aaab..44d811d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java @@ -26,7 +26,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.validation.ObserveSwingValidator; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; @@ -37,6 +36,7 @@ import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.util.BooleanEditor; import fr.ird.observe.ui.util.tripMap.ObserveMapPane; +import fr.ird.observe.validation.ObserveSwingValidator; import jaxx.runtime.JAXXValidator; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXWidgetUtil; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java index fdb03c5..9a31f11 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIManager.java @@ -175,7 +175,6 @@ public class ContentUIManager { // --- Referential --- // - //FIXME for (Class<? extends ReferentialDto> editType : ReferentialDtos.REFERENCE_COMMON_DTOS) { String simpleName = StringUtils.removeEnd(editType.getSimpleName(), "Dto"); String fqn = ContentReferenceUI.class.getPackage().getName() + ".impl." + simpleName + "UI"; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIModel.java index 4d9f4ea..c78578c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIModel.java @@ -100,18 +100,6 @@ public abstract class ContentUIModel<E extends IdDto> extends AbstractSerializab log.error(e); } } - //FIXME -// ObserveEntityEnum constant = ObserveEntityEnum.valueOf(beanType); -// if (constant != null) { -// try { -// setBean((E) constant.getImplementation().newInstance()); -// } catch (Exception e) { -// // ne devrait jamain arrive -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } -// } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx index a8b65ea..cd9bbfd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx @@ -84,7 +84,7 @@ viewLayout.addLayoutComponent(editView, DETAIL_VIEW); <JScrollPane id='listPane' constraints='BorderLayout.CENTER' columnHeaderView='{listHeader}'> <JList id='list' - onValueChanged='getHandler().selectBean((E)getSelectedBean(list))' + onValueChanged='getHandler().selectBean((ReferenceDto<E>)getSelectedBean(list))' onMouseClicked='if (event.getClickCount() == 2) { getHandler().modifyUI(); }'/> <BeanListHeader id='listHeader' genericType='ReferenceDto' _entityClass="getModel().getBeanType()"/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index 1adb75e..51ffcab 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -21,14 +21,15 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.validation.ValidationContext; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.DtoMap; +import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.I18nReferentialDto; @@ -36,6 +37,7 @@ import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialDtos; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; +import fr.ird.observe.services.service.DataNotFoundException; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; @@ -44,22 +46,46 @@ import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.usage.UsagesUI; import fr.ird.observe.ui.util.SpringUtilities; +import fr.ird.observe.validation.ValidationContext; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.editor.bean.BeanListHeader; import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; - -import javax.swing.*; +import org.nuiton.decorator.DecoratorUtil; +import org.nuiton.decorator.JXPathDecorator; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JToolBar; +import javax.swing.ListModel; +import javax.swing.RowSorter; +import javax.swing.SortOrder; +import javax.swing.SpringLayout; +import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; -import java.awt.*; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; import java.beans.Introspector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -119,8 +145,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content String message2 = t("observe.message.show.usage.for.delete2"); UsagesUI usagesUI = new UsagesUI(tx); - //FIXME - usagesUI.init(message, message2, null, null); + usagesUI.init(message, message2, null, usages); UIHelper.askUser(null, t("observe.title.can.not.delete.referentiel"), @@ -145,9 +170,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content String message3 = t("observe.message.show.usage.for.desactivated3"); UsagesUI usagesUI = new UsagesUI(tx); - - //FIXME - usagesUI.init(message, message2, message3, null); + usagesUI.init(message, message2, message3, usages); int reponse = UIHelper.askUser(null, t("observe.title.need.confirm.to.desactivate.referentiel"), @@ -171,7 +194,17 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content return false; } - public void selectBean(E selectedBean) { + public void selectBean(ReferenceDto<E> selectedReference) { + + FormDto<E> formDto; + if (getDataSource().canWriteReferential()) { + formDto = getReferentialService().loadToEdit(getBeanType(), selectedReference.getId()); + } else { + formDto = getReferentialService().loadToRead(getBeanType(), selectedReference.getId()); + } + + E selectedBean = formDto.getForm(); + getModel().setSelectedBean(selectedBean); // copy right now the selected bean to the model bean to respect contract @@ -179,7 +212,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(selectedBean, getBean(), true); - ReferentialDtos.copyReferentialDto(selectedBean, getBean()); + Binder<E, E> binder = BinderFactory.newBinder(getBeanType()); + binder.copy(selectedBean, getBean()); //TODO update data cache @@ -214,21 +248,10 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content * @param button le boutton qui a declanche l'action */ public void showUniqueKeys(JButton button) { - List<E> entities; - Class<E> beanType = getBeanType(); - //FIXME -// try { -// entities = getDataService().loadDecoratedEntities(getDataSource(), -// beanType); -// -// } catch (DataSourceException e) { -// ErrorDialogUI.showError(e); -// return; -// } -// -// List<Object[]> datas = new ArrayList<Object[]>(entities.size()); + ReferenceSetDto<E> entities = getReferentialService().getReferentialReferenceSet(beanType); + List<Object[]> datas = new ArrayList<>(entities.sizeReference()); String[] naturalIds = getModel().getNaturalIds(); int nbColumns = naturalIds.length + 1; @@ -238,75 +261,74 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content columns[0] = Introspector.decapitalize(beanType.getSimpleName()); DecoratorService dService = getDecoratorService(); - //FIXME -// Loador<E> binder = getLoadBinder(); -// -// Decorator<E> decorator = dService.getDecoratorByType(beanType); -// for (E e : entities) { -// Map<String, Object> values = binder.obtainProperties(e, naturalIds); -// Object[] data = new Object[nbColumns]; -// int index = 0; -// data[0] = decorator.toString(e); -// for (String property : naturalIds) { -// Object o = values.get(property); -// if (ContentReferenceUIModel.DEFAULT_PROPERTIES[0].equals(property) && o == null) { -// // cas special du code à 0, le loador ne retourne pas -// // de valeur car c'est la valeur par defaut d'un type -// // primitif, on force donc l'utilisation du zero. -// o = 0; -// } -// if ("code".equals(property) && o == null) { -// // cas special du code à 0, le loador ne retourne pas -// // de valeur car c'est la valeur par defaut d'un type -// // primitif, on force donc l'utilisation du zero. -// o = 0; -// } -// if ("gender".equals(property) && o == null) { -// // cas special du code à 0, le loador ne retourne pas -// // de valeur car c'est la valeur par defaut d'un type -// // primitif, on force donc l'utilisation du zero. -// o = 0; -// } -// Object value; -// if (o instanceof ReferenceEntity) { -// // on doit decoree la valeur -// Decorator<?> d = dService.getDecoratorByType(o.getClass()); -// value = d.toString(o); -// } else { -// value = o; -// } -// data[++index] = value; -// } -// datas.add(data); -// } -// -// JTable table = new JTable(new UniqueKeyTableModel(columns, datas)); -// -// table.setAutoCreateRowSorter(true); -// table.getRowSorter().setSortKeys(Arrays.asList( -// new RowSorter.SortKey(0, SortOrder.ASCENDING))); -// table.setFillsViewportHeight(true); -// JScrollPane pane = new JScrollPane(); -// -// getUi().decorateUniqueKeyTable(table, new DefaultTableCellRenderer(), pane); -// -// pane.setViewportView(table); -// pane.setVerticalScrollBarPolicy( -// JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); -// -// String title = t("observe.title.unique.key", -// t(DecoratorService.getEntityLabel(beanType))); -// -// pane.setBorder(new TitledBorder(title)); -// -// JPopupMenu popup = new JPopupMenu(); -// popup.setBorder(null); -// popup.add(pane); -// popup.pack(); -// Dimension dim = popup.getPreferredSize(); -// int x = (int) (button.getPreferredSize().getWidth() - dim.getWidth()); -// int y = button.getHeight(); -// popup.show(button, x, y); + Decorator<E> decorator = dService.getDecoratorByType(beanType); + + for (ReferenceDto<E> e : entities.getReference()) { + + Object[] data = new Object[nbColumns]; + int index = 0; + data[0] = decorator.toString(e); + + for (String property : naturalIds) { + Object o = e.getPropertyValue(property); + if (ContentReferenceUIModel.DEFAULT_PROPERTIES[0].equals(property) && o == null) { + // cas special du code à 0, le loador ne retourne pas + // de valeur car c'est la valeur par defaut d'un type + // primitif, on force donc l'utilisation du zero. + o = 0; + } + if ("code".equals(property) && o == null) { + // cas special du code à 0, le loador ne retourne pas + // de valeur car c'est la valeur par defaut d'un type + // primitif, on force donc l'utilisation du zero. + o = 0; + } + if ("gender".equals(property) && o == null) { + // cas special du code à 0, le loador ne retourne pas + // de valeur car c'est la valeur par defaut d'un type + // primitif, on force donc l'utilisation du zero. + o = 0; + } + Object value; + if (o instanceof ReferentialDto) { + // on doit decorer la valeur + Decorator<?> d = dService.getDecoratorByType(o.getClass()); + value = d.toString(o); + } else { + value = o; + } + data[++index] = value; + } + datas.add(data); + } + + JTable table = new JTable(new UniqueKeyTableModel(columns, datas)); + + table.setAutoCreateRowSorter(true); + table.getRowSorter().setSortKeys(Arrays.asList( + new RowSorter.SortKey(0, SortOrder.ASCENDING))); + table.setFillsViewportHeight(true); + JScrollPane pane = new JScrollPane(); + + getUi().decorateUniqueKeyTable(table, new DefaultTableCellRenderer(), pane); + + pane.setViewportView(table); + pane.setVerticalScrollBarPolicy( + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + + String title = t("observe.title.unique.key", + t(DecoratorService.getEntityLabel(beanType))); + + pane.setBorder(new TitledBorder(title)); + + JPopupMenu popup = new JPopupMenu(); + popup.setBorder(null); + popup.add(pane); + popup.pack(); + Dimension dim = popup.getPreferredSize(); + int x = (int) (button.getPreferredSize().getWidth() - dim.getWidth()); + int y = button.getHeight(); + popup.show(button, x, y); } public void showUsages() { @@ -320,17 +342,18 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content } // recherche des utilisation du bean dans la base - //FIXME -// EntityMap usages; -// try { -// usages = getDataService().findAllUsages(getDataSource(), bean); -// } catch (DataSourceException e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// return; -// } + DtoMap usages; + try { + usages = getReferentialService().findAllUsages(bean); + + } catch (DataNotFoundException e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e); + } + return; + } + DecoratorService dService = getDecoratorService(); Decorator<?> decorator = dService.getDecoratorByType(bean.getClass()); String type = DecoratorService.getEntityLabel(bean.getClass()); @@ -341,8 +364,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content ContentReferenceUI<E> ui = getUi(); UsagesUI usagesUI = new UsagesUI(ui); - //FIXME - usagesUI.init(message, null, null, null); + usagesUI.init(message, null, null, usages); UIHelper.askUser(ui, t("observe.title.show.usage"), @@ -412,6 +434,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content } }); + fillListWithReferentials(); + // UIHelper.getLayer(ui.getEditKeyTable()).setUI(ui.getEditKeyTableLayerUI()); } @@ -659,24 +683,25 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content log.debug("entity status was desactivated, looking " + "for usage"); } -// EntityMap usages = dataService.findAllUsages(dataSource, bean); -// -// if (usages.isEmpty()) { -// if (log.isInfoEnabled()) { -// log.info("No usage found, no warning to display"); -// } -// } else { -// // some usages were found -// boolean willsave = showUsagesForDesactivated(getUi(), bean, -// usages); -// if (!willsave) { -// if (log.isDebugEnabled()) { -// log.debug("User refuses to continue, skip " + -// "saving..."); -// } -// return false; -// } -// } + + DtoMap usages = getReferentialService().findAllUsages(bean); + + if (usages.isEmpty()) { + if (log.isInfoEnabled()) { + log.info("No usage found, no warning to display"); + } + } else { + // some usages were found + boolean willsave = showUsagesForDesactivated(getUi(), bean, + usages); + if (!willsave) { + if (log.isDebugEnabled()) { + log.debug("User refuses to continue, skip " + + "saving..."); + } + return false; + } + } } @@ -716,21 +741,21 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content } // recherche des utilisation du bean dans la base -// EntityMap usages = dataService.findAllUsages(getDataSource(), bean); -// -// if (usages.isEmpty()) { -// if (log.isDebugEnabled()) { -// log.debug("No usage found, no warning to display"); -// } -// } else { -// -// // some usages were found -// if (log.isDebugEnabled()) { -// log.debug("can not delete referentiel entity (found usages)"); -// } -// showUsagesForDelete(ui, bean, usages); -// return false; -// } + DtoMap usages = getReferentialService().findAllUsages(bean); + + if (usages.isEmpty()) { + if (log.isDebugEnabled()) { + log.debug("No usage found, no warning to display"); + } + } else { + + // some usages were found + if (log.isDebugEnabled()) { + log.debug("can not delete referentiel entity (found usages)"); + } + showUsagesForDelete(ui, bean, usages); + return false; + } if (!UIHelper.confirmForEntityDelete(ui, model.getBeanType(), bean)) { return false; @@ -842,19 +867,18 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content ContentReferenceUI.LIST_VIEW; } -// @Override -// protected FormDto<E> loadToEdit(String id) { -// ReferentialService referentialService = getReferentialService(); -// FormDto<E> formDto = referentialService.loadToEdit(getBeanType(), id); -// return formDto; -// } -// -// @Override -// protected FormDto<E> loadToReadDto(String id) { -// ReferentialService referentialService = getReferentialService(); -// FormDto<E> formDto = referentialService.loadToRead(getBeanType(), id); -// return formDto; -// } + protected void fillListWithReferentials() { + ReferenceSetDto referentialReferenceSet = getReferentialService().getReferentialReferenceSet(getBeanType()); + List<ReferenceDto> data = new ArrayList<>(referentialReferenceSet.getReference()); + + Decorator<ReferenceDto> decorator = ObserveSwingApplicationContext.get().getDecorator(ReferenceDto.class, + getBeanType().getSimpleName()); + DecoratorUtil.sort((JXPathDecorator<ReferenceDto>) decorator, data, 0); + + BeanListHeader list = getUi().getListHeader(); + list.setData(data); + list.putClientProperty("data", data); + } protected ReferentialService getReferentialService() { return ObserveSwingApplicationContext.get().newService(ReferentialService.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/GearUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/GearUIHandler.java index 1f3c332..f69b03b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/GearUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/GearUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class GearUIHandler extends ContentReferenceUIHandler<GearDto> { } @Override - public void selectBean(GearDto selectedBean) { + public void selectBean(ReferenceDto<GearDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/LengthWeightParameterUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/LengthWeightParameterUIHandler.java index 0e3a1d9..caac165 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/LengthWeightParameterUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/LengthWeightParameterUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.LengthWeightParameterDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class LengthWeightParameterUIHandler extends ContentReferenceUIHandler<Le } @Override - public void selectBean(LengthWeightParameterDto selectedBean) { + public void selectBean(ReferenceDto<LengthWeightParameterDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/ProgramUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/ProgramUIHandler.java index 84aac6b..e20b5d4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/ProgramUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/ProgramUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class ProgramUIHandler extends ContentReferenceUIHandler<ProgramDto> { } @Override - public void selectBean(ProgramDto selectedBean) { + public void selectBean(ReferenceDto<ProgramDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesListUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesListUIHandler.java index 7969a5f..e94f308 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesListUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesListUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class SpeciesListUIHandler extends ContentReferenceUIHandler<SpeciesListD } @Override - public void selectBean(SpeciesListDto selectedBean) { + public void selectBean(ReferenceDto<SpeciesListDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesUIHandler.java index f85adb8..ce33651 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/SpeciesUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class SpeciesUIHandler extends ContentReferenceUIHandler<SpeciesDto> { } @Override - public void selectBean(SpeciesDto selectedBean) { + public void selectBean(ReferenceDto<SpeciesDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/VesselUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/VesselUIHandler.java index 90dec36..ec88a5a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/VesselUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/impl/VesselUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.ref.impl; * #L% */ +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.ui.content.ref.ContentReferenceUI; import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; @@ -70,7 +71,7 @@ public class VesselUIHandler extends ContentReferenceUIHandler<VesselDto> { } @Override - public void selectBean(VesselDto selectedBean) { + public void selectBean(ReferenceDto<VesselDto> selectedBean) { super.selectBean(selectedBean); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java index ea710e6..a67ab87 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java @@ -126,13 +126,13 @@ public abstract class DtoNodeSupport<E extends IdDto> extends ObserveNode { protected void loadEntity(ObserveDataProvider oProvider) { //FIXME - if (oProvider.getSelectionModel() != null) { - - if (log.isDebugEnabled()) { - log.debug("try to get entity from selectionModel " + internalClass + " : " + id); - } - entity = (ReferenceDto<E>) oProvider.getSelectionModel().getEntityCache(id); - } +// if (oProvider.getSelectionModel() != null) { +// +// if (log.isDebugEnabled()) { +// log.debug("try to get entity from selectionModel " + internalClass + " : " + id); +// } +// entity = (ReferenceDto<E>) oProvider.getSelectionModel().getEntityCache(id); +// } if (entity == null) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx index a2e144b..cf668af 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx @@ -29,7 +29,7 @@ Interface graphique pour afficher la liste des usages d'une entitee donnee. fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.UIHelper - fr.ird.observe.services.dto.AbstractObserveDto + fr.ird.observe.services.dto.IdDto java.awt.Dimension java.util.List @@ -43,7 +43,7 @@ private UsagesUIHandler handler = new UsagesUIHandler(); public void init(String message, String message2, String message3, - Map<Class<? extends AbstractObserveDto>, List<? extends AbstractObserveDto>> usages) { + Map<Class<? extends IdDto>, List<? extends IdDto>> usages) { getHandler().initUI(this, message,message2, message3, usages); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java index a890a8d..8538cb2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.usage; import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; @@ -61,8 +62,8 @@ public class UsagesUIHandler { public void initUI(UsagesUI ui, String message, String message2, String message3, - Map<Class<? extends AbstractObserveDto>, - List<? extends AbstractObserveDto>> usages) { + Map<Class<? extends IdDto>, + List<? extends IdDto>> usages) { // toujours nettoyer l'ui avant tout cleanUI(ui); @@ -80,10 +81,10 @@ public class UsagesUIHandler { t("observe.message.no.usage.for.entity"))); } else { - for (Map.Entry<Class<? extends AbstractObserveDto>, - List<? extends AbstractObserveDto>> entry : usages.entrySet()) { - Class<? extends AbstractObserveDto> type = entry.getKey(); - List<? extends AbstractObserveDto> entitites = entry.getValue(); + for (Map.Entry<Class<? extends IdDto>, + List<? extends IdDto>> entry : usages.entrySet()) { + Class<? extends IdDto> type = entry.getKey(); + List<? extends IdDto> entitites = entry.getValue(); String typeTitle = DecoratorService.getEntityLabel(type); typeTitle = t(typeTitle); addUsages(ui, type, entitites, typeTitle); 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 8e3b5c9..bd4de97 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 @@ -893,16 +893,16 @@ observe.common.observer=Observateur observe.common.observerLabel= observe.common.obsolete.entity=Le référentiel %1$s est désactivé. observe.common.ocean=Océan -observe.common.ocean/label1= -observe.common.ocean/label2= -observe.common.ocean/label3= -observe.common.ocean/label4= -observe.common.ocean/label5= -observe.common.ocean/label6= -observe.common.ocean/label7= -observe.common.ocean/label8= +observe.common.ocean/label1=Océan +observe.common.ocean/label2=Océan +observe.common.ocean/label3=Océan +observe.common.ocean/label4=Océan +observe.common.ocean/label5=Océan +observe.common.ocean/label6=Océan +observe.common.ocean/label7=Océan +observe.common.ocean/label8=Océan observe.common.oceanForSpecies=Liste des océans -observe.common.oldCode3L= +observe.common.oldCode3L=ancien code \: observe.common.operation.resume=Résumé des opérations observe.common.organism=Organisme observe.common.ownership=Appartenance @@ -1012,25 +1012,25 @@ observe.common.undefined=< non défini > observe.common.undefined.tip=< non défini > observe.common.uri=URI observe.common.vessel=Bateau -observe.common.vessel/label1= -observe.common.vessel/label2= -observe.common.vessel/label3= -observe.common.vessel/label4= -observe.common.vessel/label5= -observe.common.vessel/label6= -observe.common.vessel/label7= -observe.common.vessel/label8= -observe.common.vesselActivityLongline= +observe.common.vessel/label1=Bateau +observe.common.vessel/label2=Bateau +observe.common.vessel/label3=Bateau +observe.common.vessel/label4=Bateau +observe.common.vessel/label5=Bateau +observe.common.vessel/label6=Bateau +observe.common.vessel/label7=Bateau +observe.common.vessel/label8=Bateau +observe.common.vesselActivityLongline=Activité bateau observe.common.vesselActivitySeine=Activité bateau observe.common.vesselActivitySeine.comment=Seule l'activité %1$s permet de saisir une calée. -observe.common.vesselActivitySeine/label1= -observe.common.vesselActivitySeine/label2= -observe.common.vesselActivitySeine/label3= -observe.common.vesselActivitySeine/label4= -observe.common.vesselActivitySeine/label5= -observe.common.vesselActivitySeine/label6= -observe.common.vesselActivitySeine/label7= -observe.common.vesselActivitySeine/label8= +observe.common.vesselActivitySeine/label1=Activité bateau +observe.common.vesselActivitySeine/label2=Activité bateau +observe.common.vesselActivitySeine/label3=Activité bateau +observe.common.vesselActivitySeine/label4=Activité bateau +observe.common.vesselActivitySeine/label5=Activité bateau +observe.common.vesselActivitySeine/label6=Activité bateau +observe.common.vesselActivitySeine/label7=Activité bateau +observe.common.vesselActivitySeine/label8=Activité bateau observe.common.vesselSizeCategory=Catégorie de bateau observe.common.vesselSpeed=Vitesse bateau (nd) observe.common.vesselType=Type de pêcherie diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java index cf32161..758ceb9 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.web.controller.v1; * #L% */ +import fr.ird.observe.services.dto.DtoMap; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; @@ -88,4 +89,8 @@ public class ReferentialServiceController extends ObserveAuthenticatedServiceCon service.delete(type, ids); } + @Override + public <R extends ReferentialDto> DtoMap findAllUsages(R bean) throws DataNotFoundException { + return service.findAllUsages(bean); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java index d673eeb..4e2bd25 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java @@ -23,12 +23,14 @@ package fr.ird.observe.services.service; */ import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.dto.DtoMap; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.spi.DeleteRequest; import fr.ird.observe.services.spi.PostRequest; +import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteReferentialPermission; @@ -76,4 +78,8 @@ public interface ReferentialService extends ObserveService { @DeleteRequest <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids) throws DataNotFoundException; + @ReadReferentialPermission + @ReadDataPermission + <R extends ReferentialDto> DtoMap findAllUsages(R bean) throws DataNotFoundException; + } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/DtoMap.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/DtoMap.java new file mode 100644 index 0000000..3dd3487 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/DtoMap.java @@ -0,0 +1,43 @@ +/* + * #%L + * ObServe :: Entities + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, 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% + */ +package fr.ird.observe.services.dto; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * A Dictionary of dtos + * + * @author Kevin Morin (Code Lutin) + */ +public class DtoMap extends HashMap<Class<? extends IdDto>, List<? extends IdDto>> { + + private static final long serialVersionUID = 1L; + + public DtoMap() { + } + + public DtoMap(Map<? extends Class<? extends IdDto>, ? extends List<? extends IdDto>> m) { + super(m); + } +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java index cc9b4b1..30ded33 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java @@ -2,7 +2,6 @@ package fr.ird.observe.services.dto.referential; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java index ca4c003..e036e86 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java @@ -23,16 +23,22 @@ package fr.ird.observe.services.service; */ import com.google.common.base.Optional; +import fr.ird.observe.entities.EntityMap; import fr.ird.observe.services.ObserveServiceTopia; +import fr.ird.observe.services.dto.DtoMap; import fr.ird.observe.services.dto.FormDto; +import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; +import java.util.List; /** * Created on 16/08/15. @@ -115,4 +121,38 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe deleteEntity(dtoType, entityType, ids); } + @Override + public <R extends ReferentialDto> DtoMap findAllUsages(R bean) throws DataNotFoundException { + + Class<? extends IdDto> referentialDtoType = bean.getClass(); + Class<TopiaEntity> entityType = getEntityType(referentialDtoType); + TopiaEntity entity = loadEntity(referentialDtoType, entityType, bean.getId()); + + TopiaDao<TopiaEntity> dao = getTopiaPersistenceContext().getDao(entityType); + EntityMap allUsages = new EntityMap(dao.findAllUsages(entity)); + + DtoMap result = new DtoMap(); + + for (Class<? extends TopiaEntity> type : allUsages.keySet()) { + + Class<? extends IdDto> dtoType = getDtoType(type); + List<? extends IdDto> dtos = test(dtoType, type, allUsages); + result.put(dtoType, dtos); + + } + + return result; + } + + protected <E extends TopiaEntity, I extends IdDto> List<I> test(Class<I> dtoType, + Class<E> type, + EntityMap allUsages) { + List<I> dtos = new ArrayList<>(); + List<E> entities = (List<E>) allUsages.get(type); + for (E entity : entities) { + I idDto = entityToDto(dtoType, type, entity); + dtos.add(idDto); + } + return dtos; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm