r1252 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/main/resources tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation
Author: tchemit Date: 2013-09-30 19:43:36 +0200 (Mon, 30 Sep 2013) New Revision: 1252 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1252 Log: refs #3333: [CAMPAGNE] pouvoir ajouter plusieur engins professionnels de m?\195?\170me type ?\195?\160 une campagne Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -76,6 +76,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.type.IntegerType; +import org.hibernate.type.ShortType; import org.hibernate.type.StringType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataRetrievalFailureException; @@ -334,12 +335,25 @@ Preconditions.checkNotNull(gear); Preconditions.checkNotNull(gear.getId(), "Gear 'id' must not be null or empty"); + short rankOrder; + + if (gear.getRankOrder() == null) { + rankOrder = 1; + } else { + rankOrder = gear.getRankOrder(); + } + + if (log.isInfoEnabled()) { + log.info("Get caracteristic for gear " + gear.getIdAsInt() + " - " + rankOrder); + } + CaracteristicMap result = new CaracteristicMap(); Iterator<GearPhysicalMeasurement> list = queryListTyped( "gearCaracteristics", "cruiseId", IntegerType.INSTANCE, cruise.getIdAsInt(), - "gearId", IntegerType.INSTANCE, gear.getIdAsInt()); + "gearId", IntegerType.INSTANCE, gear.getIdAsInt(), + "rankOrder", ShortType.INSTANCE, rankOrder); while (list.hasNext()) { GearPhysicalMeasurement measurement = list.next(); @@ -379,6 +393,14 @@ Preconditions.checkNotNull(gear); Preconditions.checkNotNull(gear.getId(), "Gear 'id' must not be null or empty"); + short rankOrder; + + if (gear.getRankOrder() == null) { + rankOrder = 1; + } else { + rankOrder = gear.getRankOrder(); + } + ScientificCruise scientificCruise = scientificCruiseDao.load(cruise.getIdAsInt()); if (scientificCruise == null) { throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + cruise.getId()); @@ -390,7 +412,15 @@ List<Integer> measurementsToRemove = Lists.newArrayList(); - GearPhysicalFeatures gpf = gearPhysicalFeaturesDao.getGearPhysicalfeatures(fishingTrip, gear.getIdAsInt(), true); + if (log.isInfoEnabled()) { + log.info("Save caracteristic for gear " + gear.getIdAsInt() + " - " + rankOrder); + } + GearPhysicalFeatures gpf = gearPhysicalFeaturesDao.getGearPhysicalfeatures( + fishingTrip, + gear.getIdAsInt(), + rankOrder, + true); + if (gpf.getGearPhysicalMeasurements() != null) { for (GearPhysicalMeasurement measurement : gpf.getGearPhysicalMeasurements()) { Integer pmfmId = measurement.getPmfm().getId(); Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml =================================================================== --- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-09-30 17:43:36 UTC (rev 1252) @@ -202,11 +202,12 @@ LEFT OUTER JOIN gpf.gearPhysicalMeasurements gpm WHERE sc.id = :cruiseId - AND - gpf.gear.id = :gearId + AND gpf.gear.id = :gearId + AND gpf.rankOrder = :rankOrder ]]> <query-param name="cruiseId" type="java.lang.Integer"/> <query-param name="gearId" type="java.lang.Integer"/> + <query-param name="rankOrder" type="java.lang.Short"/> </query> <query cacheable="true" name="allCruiseSecondaryVessels"> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -40,17 +40,14 @@ import fr.ifremer.tutti.ui.swing.util.CloseableUI; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.swing.editor.bean.BeanDoubleListModel; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JPopupMenu; import javax.swing.JSeparator; -import javax.swing.ListCellRenderer; import javax.swing.SwingUtilities; import java.awt.Point; import java.awt.Rectangle; @@ -326,19 +323,6 @@ gearPopupMenu.add(ui.getViewGearCaracteristicsItem(), 0); gearPopupMenu.add(ui.getEditGearCaracteristicsItem(), 0); -// DecoratorService decoratorService = -// context.getDecoratorService(); -// Decorator<Gear> decorator = getDecorator(Gear.class, DecoratorService.GEAR_WITH_RANK_ORDER); -// ListCellRenderer cellRenderer = ui.getGearList().getSelectedList().getCellRenderer(); -// ui.getGearList().getSelectedList().setCellRenderer(new DecoratorListCellRenderer(cellRenderer, decorator) { -// -// @Override -// protected Object decorateValue(Object value, int index) { -// Object result = super.decorateValue(value, index); -// return index + " - " + result; -// } -// }); - initBeanList(ui.getHeadOfMissionList(), users, model.getHeadOfMission()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -25,8 +25,11 @@ */ import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * @author kmorin <kmorin@codelutin.com> @@ -34,6 +37,10 @@ */ public class EditGearCaracteristicsAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> { + /** Logger. */ + private static final Log log = + LogFactory.getLog(EditGearCaracteristicsAction.class); + protected final PersistenceService persistenceService; public EditGearCaracteristicsAction(EditCruiseUIHandler handler) { @@ -48,6 +55,10 @@ Gear gear = getUI().getContextValue(Gear.class); gear = persistenceService.getGearWithCaracteristics(gear, getDataContext().getCruise()); + + if (log.isInfoEnabled()) { + log.info("Will edit gear " + decorate(gear, DecoratorService.GEAR_WITH_RANK_ORDER)); + } editor.getModel().setGear(gear); getUI().getMainPanelLayout().setSelected(EditCruiseUIHandler.GEAR_CARACTERISTICS_CARD); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -25,8 +25,11 @@ */ import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * @author kmorin <kmorin@codelutin.com> @@ -34,6 +37,10 @@ */ public class ViewGearCaracteristicsAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> { + /** Logger. */ + private static final Log log = + LogFactory.getLog(ViewGearCaracteristicsAction.class); + protected final PersistenceService persistenceService; public ViewGearCaracteristicsAction(EditCruiseUIHandler handler) { @@ -48,6 +55,11 @@ Gear gear = getUI().getContextValue(Gear.class); gear = persistenceService.getGearWithCaracteristics(gear, getDataContext().getCruise()); + + if (log.isInfoEnabled()) { + log.info("Will view gear " + decorate(gear, DecoratorService.GEAR_WITH_RANK_ORDER)); + } + editor.getModel().setGear(gear); getUI().getMainPanelLayout().setSelected(EditCruiseUIHandler.GEAR_CARACTERISTICS_CARD); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -450,6 +450,8 @@ TuttiLocation subStrata = bean.getSubStrata(); TuttiLocation location = bean.getLocation(); + PersistenceService persistenceService = getContext().getPersistenceService(); + Cruise cruise = bean.getCruise(); if (cruise != null) { @@ -457,7 +459,8 @@ // add a equals on id + rankOrder List<Gear> gears = Lists.newArrayList(); for (Gear gear : cruise.getGear()) { - gears.add(Gears.newGearWithRankOrder(gear)); + Gear gearWithCaracteristics = persistenceService.getGearWithCaracteristics(gear, cruise); + gears.add(Gears.newGearWithRankOrder(gearWithCaracteristics)); } ui.getGearComboBox().setData(gears); } @@ -500,7 +503,7 @@ if (objectId != null) { List<Attachment> attachments = - getContext().getPersistenceService().getAllAttachments( + persistenceService.getAllAttachments( editFishingOperationUIModel.getObjectType(), objectId); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-09-30 16:23:08 UTC (rev 1251) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-09-30 17:43:36 UTC (rev 1252) @@ -26,18 +26,20 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.TuttiCsvUtil; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.fishing.AbstractCaracteristicTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.GearUseFeatureTabUIModel; @@ -54,19 +56,26 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXDatePicker; +import org.nuiton.csv.ValueFormatter; +import org.nuiton.decorator.Decorator; import javax.swing.JButton; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JTabbedPane; import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.Serializable; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Set; import static org.nuiton.i18n.I18n._; @@ -259,16 +268,69 @@ "Could not find cruise in ui context"); ui.getMultirigAggregationField().setEnabled(cruise.getMultirigNumber() != 1); - // add a equals on id + rankOrder - List<Gear> gears = Lists.newArrayList(); - for (Gear gear : cruise.getGear()) { - gears.add(Gears.newGearWithRankOrder(gear)); - } initBeanFilterableComboBox(ui.getGearComboBox(), - gears, + Lists.<Gear>newArrayList(), null, DecoratorService.GEAR_WITH_RANK_ORDER); + final JComboBox combobox = ui.getGearComboBox().getCombobox(); + combobox.addItemListener(new ItemListener() { + + Map<Gear, String> tips = Maps.newHashMap(); + + public void itemStateChanged(ItemEvent e) { + Object item = e.getItem(); + if (e.getStateChange() == ItemEvent.SELECTED) { + if (log.isInfoEnabled()) { + log.info("itemStateChanged selected " + item + " - " + (item != null ? item.getClass() : null)); + } + + JComponent jC = (JComponent) combobox.getEditor().getEditorComponent(); + String toolTipText; + + if (item == null) { + toolTipText = ""; + } else { + + Gear gear = (Gear) item; + + if (tips.containsKey(gear)) { + + toolTipText = tips.get(gear); + } else { + + Decorator<Caracteristic> decorator = getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT); + ValueFormatter<Serializable> caracteristicValueFormatter = TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER; + StringBuilder sb = new StringBuilder("<html><body>"); + if (gear.getCaracteristics() != null && !gear.getCaracteristics().isEmpty() ) { + + // got some caracteristics + sb.append("<ul>"); + for (Map.Entry<Caracteristic, Serializable> entry : gear.getCaracteristics().entrySet()) { + Caracteristic key = entry.getKey(); + String keyStr = decorator.toString(key); + Serializable value = entry.getValue(); + String valueStr = caracteristicValueFormatter.format(value); + sb.append("<li><strong>").append(keyStr).append("</strong> :"); + sb.append(valueStr).append("</li>"); + } + sb.append("</ul>"); + } else { + + sb.append("<i>").append("Pas de caractéristiques").append("</i>"); + } + sb.append("</body></html>"); + + toolTipText = sb.toString(); + tips.put(gear, toolTipText); + } + } + + jC.setToolTipText(toolTipText); + } + } + }); + Program program = getDataContext().getProgram(); Preconditions.checkNotNull(program, "Could not find program in ui context");
participants (1)
-
tchemit@users.forge.codelutin.com