Author: kmorin Date: 2013-01-18 19:07:24 +0100 (Fri, 18 Jan 2013) New Revision: 227 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/227 Log: use actions to save protocols, cruises and programs Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 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/operation/EditFishingOperationUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 18:07:24 UTC (rev 227) @@ -186,8 +186,7 @@ } #saveButton { - actionIcon: save; - text: "tutti.action.save"; + action: {saveCruiseAction}; enabled: {model.isModify() && model.isValid()}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 18:07:24 UTC (rev 227) @@ -72,6 +72,8 @@ <EditCruiseUIModel id='model' initializer='getContextValue(EditCruiseUIModel.class)'/> + <SaveCruiseAction id='saveCruiseAction' constructorParams='handler'/> + <SwingValidatorMessageTableModel id='errorTableModel'/> <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' @@ -211,7 +213,7 @@ <cell columns='6'> <JPanel layout='{new GridLayout(1, 0)}'> <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> + <JButton id='saveButton'/> </JPanel> </cell> </row> 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-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 18:07:24 UTC (rev 227) @@ -276,26 +276,6 @@ context.setScreen(TuttiScreen.SELECT_CRUISE); } - public void save() { - - EditCruiseUIModel model = getModel(); - - Cruise bean = model.toBean(); - - Cruise saved; - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createCruise(bean); - } else { - saved = persistenceService.saveCruise(bean); - } - - context.setProgramId(saved.getProgram().getId()); - context.setCruiseId(saved.getId()); - - context.setScreen(TuttiScreen.SELECT_CRUISE); - } - public static final String cruiseNameFormat = "%1$s_%2$s"; public void generateCampaignName() { Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227) @@ -0,0 +1,52 @@ + +package fr.ifremer.tutti.ui.swing.content.cruise; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * + * @author kmorin <kmorin@codelutin.com> + */ +public class SaveCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUIHandler> { + + public SaveCruiseAction(EditCruiseUIHandler handler) { + super(handler, + "saveCruise", + "save", + _("tutti.action.save.cruise"), + _("tutti.action.save.cruise.tip"), + true + ); + } + + @Override + protected void doAction(ActionEvent event) { + TuttiUIContext context = getContext(); + EditCruiseUIModel model = getModel(); + PersistenceService persistenceService = context.getService(PersistenceService.class); + + Cruise bean = model.toBean(); + + Cruise saved; + if (TuttiEntities.isNew(bean)) { + + saved = persistenceService.createCruise(bean); + } else { + saved = persistenceService.saveCruise(bean); + } + + context.setProgramId(saved.getProgram().getId()); + context.setCruiseId(saved.getId()); + + context.setScreen(TuttiScreen.SELECT_CRUISE); + } + +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 18:07:24 UTC (rev 227) @@ -408,7 +408,6 @@ #saveButton { action: {saveFishingOperationAction}; - text: "tutti.action.save"; } #cancelButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-18 18:07:24 UTC (rev 227) @@ -60,9 +60,8 @@ } #saveButton { - text: "tutti.action.save"; + action: {saveProgramAction}; enabled: {model.isModify() && model.isValid()}; - actionIcon: save; } #cancelButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 18:07:24 UTC (rev 227) @@ -61,6 +61,8 @@ <EditProgramUIModel id='model' initializer='getContextValue(EditProgramUIModel.class)'/> + <SaveProgramAction id='saveProgramAction' constructorParams='handler'/> + <SwingValidatorMessageTableModel id='errorTableModel'/> <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' @@ -110,7 +112,7 @@ <cell columns='2'> <JPanel layout='{new GridLayout(1, 0)}'> <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> + <JButton id='saveButton'/> </JPanel> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 18:07:24 UTC (rev 227) @@ -134,21 +134,4 @@ context.setScreen(TuttiScreen.SELECT_CRUISE); } - public void save() { - - EditProgramUIModel model = getModel(); - - Program bean = model.toBean(); - - Program saved; - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createProgram(bean); - } else { - saved = persistenceService.saveProgram(bean); - } - - context.setProgramId(saved.getId()); - context.setScreen(TuttiScreen.SELECT_CRUISE); - } } Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java (from rev 226, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-01-18 18:07:24 UTC (rev 227) @@ -0,0 +1,58 @@ + +package fr.ifremer.tutti.ui.swing.content.program; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import java.awt.event.ActionEvent; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import static org.nuiton.i18n.I18n._; + +/** + * + * @author kmorin <kmorin@codelutin.com> + * @since 1.0 + */ +public class SaveProgramAction extends AbstractTuttiAction<EditProgramUIModel, EditProgramUIHandler> { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(SaveProgramAction.class); + + public SaveProgramAction(EditProgramUIHandler handler) { + super(handler, + "saveProgram", + "save", + _("tutti.action.save.program"), + _("tutti.action.save.program.tip"), + true + ); + } + + @Override + protected void doAction(ActionEvent event) { + TuttiUIContext context = getContext(); + PersistenceService persistenceService = context.getService(PersistenceService.class); + EditProgramUIModel model = getModel(); + + Program bean = model.toBean(); + + Program saved; + if (TuttiEntities.isNew(bean)) { + + saved = persistenceService.createProgram(bean); + } else { + saved = persistenceService.saveProgram(bean); + } + + context.setProgramId(saved.getId()); + context.setScreen(TuttiScreen.SELECT_CRUISE); + } + +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-18 18:07:24 UTC (rev 227) @@ -52,9 +52,8 @@ } #saveButton { - text: "tutti.action.save"; enabled: {model.isModify() && model.isValid()}; - actionIcon: save; + action: {saveProtocolAction}; } #cancelButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 18:07:24 UTC (rev 227) @@ -68,6 +68,8 @@ <EditProtocolUIModel id='model' initializer='getContextValue(EditProtocolUIModel.class)'/> + <SaveProtocolAction id='saveProtocolAction' constructorParams='handler'/> + <SwingValidatorMessageTableModel id='errorTableModel'/> <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' @@ -168,7 +170,7 @@ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> + <JButton id='saveButton'/> </JPanel> </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 18:07:24 UTC (rev 227) @@ -392,70 +392,6 @@ context.setScreen(TuttiScreen.SELECT_CRUISE); } - public void save() { - - EditProtocolUIModel model = getModel(); - - TuttiProtocol bean = model.toBean(); - - // get the species protocols from the table - List<SpeciesProtocol> protocols = Lists.newArrayList(); - - for (EditProtocolSpeciesRowModel row : getTableModel().getRows()) { - if (row.isValid()) { - SpeciesProtocol protocol = row.toBean(); - protocols.add(protocol); - } - } - bean.setSpecies(protocols); - - // split the hydro grouped pmfm - List<String> hydroPmfm = bean.getHydrologyPmfmId(); - List<String> allIds = Lists.newArrayList(); - if (hydroPmfm != null) { - for (String id : hydroPmfm) { - allIds.addAll(hydroCaracteristics.get(id)); - } - } - bean.setHydrologyPmfmId(allIds); - - // find out sampling order - - TableColumnModel columnModel = getTable().getColumnModel(); - int columnCount = columnModel.getColumnCount(); - Map<Integer, SampleCategoryEnum> sampleCategoryOrders = Maps.newTreeMap(); - - for (int i = 0; i < columnCount; i++) { - - TableColumn column = columnModel.getColumn(i); - ColumnIdentifier<EditProtocolSpeciesRowModel> identifier = (ColumnIdentifier<EditProtocolSpeciesRowModel>) column.getIdentifier(); - SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier); - if (sampleCategory != null) { - - // found a sample category, keep it - sampleCategoryOrders.put(i, sampleCategory); - } - } - - List<SampleCategoryEnum> sampleOrder = - Lists.newArrayList(sampleCategoryOrders.values()); - - bean.setSampleCategoryOrder(sampleOrder); - - TuttiProtocol saved; - log.info("bean id : " + bean.getId()); - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createProtocol(bean); - } else { - saved = persistenceService.saveProtocol(bean); - } - - context.setProtocolId(saved.getId()); - - context.setScreen(TuttiScreen.SELECT_CRUISE); - } - public void addRow() { log.info("addRow 1"); Species species = (Species) ui.getSpeciesComboBox().getSelectedItem(); @@ -488,6 +424,14 @@ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); } + public Multimap<String, String> getHydroCaracteristics() { + return hydroCaracteristics; + } + + public BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>, SampleCategoryEnum> getColumToSampleCategory() { + return columToSampleCategory; + } + //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227) @@ -0,0 +1,117 @@ + +package fr.ifremer.tutti.ui.swing.content.protocol; + +import com.google.common.collect.BiMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; +import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import java.awt.event.ActionEvent; +import java.util.List; +import java.util.Map; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import static org.nuiton.i18n.I18n._; + +/** + * + * @author kmorin <kmorin@codelutin.com> + * @since 1.0 + */ +public class SaveProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SaveProtocolAction.class); + + public SaveProtocolAction(EditProtocolUIHandler handler) { + super(handler, + "saveProtocol", + "save", + _("tutti.action.save.protocol"), + _("tutti.action.save.protocol.tip"), + true + ); + } + + @Override + protected void doAction(ActionEvent event) { + EditProtocolUIModel model = getModel(); + TuttiUIContext context = getContext(); + EditProtocolUIHandler handler = getHandler(); + PersistenceService persistenceService = context.getService(PersistenceService.class); + + TuttiProtocol bean = model.toBean(); + + // get the species protocols from the table + List<SpeciesProtocol> protocols = Lists.newArrayList(); + + for (EditProtocolSpeciesRowModel row : handler.getTableModel().getRows()) { + if (row.isValid()) { + SpeciesProtocol protocol = row.toBean(); + protocols.add(protocol); + } + } + bean.setSpecies(protocols); + + // split the hydro grouped pmfm + List<String> hydroPmfm = bean.getHydrologyPmfmId(); + List<String> allIds = Lists.newArrayList(); + Multimap<String, String> hydroCaracteristics = handler.getHydroCaracteristics(); + if (hydroPmfm != null) { + for (String id : hydroPmfm) { + allIds.addAll(hydroCaracteristics.get(id)); + } + } + bean.setHydrologyPmfmId(allIds); + + // find out sampling order + + TableColumnModel columnModel = handler.getTable().getColumnModel(); + int columnCount = columnModel.getColumnCount(); + Map<Integer, SampleCategoryEnum> sampleCategoryOrders = Maps.newTreeMap(); + + BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>,SampleCategoryEnum> columToSampleCategory = handler.getColumToSampleCategory(); + for (int i = 0; i < columnCount; i++) { + + TableColumn column = columnModel.getColumn(i); + ColumnIdentifier<EditProtocolSpeciesRowModel> identifier = (ColumnIdentifier<EditProtocolSpeciesRowModel>) column.getIdentifier(); + SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier); + if (sampleCategory != null) { + + // found a sample category, keep it + sampleCategoryOrders.put(i, sampleCategory); + } + } + + List<SampleCategoryEnum> sampleOrder = + Lists.newArrayList(sampleCategoryOrders.values()); + + bean.setSampleCategoryOrder(sampleOrder); + + TuttiProtocol saved; + log.info("bean id : " + bean.getId()); + if (TuttiEntities.isNew(bean)) { + + saved = persistenceService.createProtocol(bean); + } else { + saved = persistenceService.saveProtocol(bean); + } + + context.setProtocolId(saved.getId()); + + context.setScreen(TuttiScreen.SELECT_CRUISE); + } + + +} Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 17:22:41 UTC (rev 226) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 18:07:24 UTC (rev 227) @@ -46,8 +46,14 @@ tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné tutti.action.reset.fishingOperationValidState=Réinitialiser tutti.action.save=Enregistrer +tutti.action.save.cruise=Enregistrer +tutti.action.save.cruise.tip=Enregistrer la campagne tutti.action.save.fishingOperation=Enregistrer tutti.action.save.fishingOperation.tip=Enregistrer le trait +tutti.action.save.program=Enregistrer +tutti.action.save.program.tip=Enregistrer la série de campagne +tutti.action.save.protocol=Enregistrer +tutti.action.save.protocol.tip=Enregistrer le protocol tutti.action.selectCruise=Sélectionner une campagne tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser tutti.action.site=Site