This is an automated email from the git hooks/post-receive script. New commit to branch feature/7677 in repository observe. See http://git.codelutin.com/observe.git commit a11a7595b8faf1851413a2055b7869ce7261d5fc Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Nov 4 15:19:02 2015 +0100 migration de l'écran d'export (refs #7677) --- .../java/fr/ird/observe/ui/admin/AdminStep.java | 3 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 3 +- .../ird/observe/ui/admin/export/ExportModel.java | 82 +++++++------- .../observe/ui/admin/export/ExportUIHandler.java | 121 ++++++++++++--------- .../fr/ird/observe/ui/admin/export/TripEntry.java | 26 ++--- .../ui/admin/export/TripToExportTableModel.java | 13 +-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 5 + .../ui/tree/DataSelectionTreeCellRenderer.java | 15 +-- 8 files changed, 143 insertions(+), 125 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java index 5c233bf..482f17d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java @@ -211,7 +211,8 @@ public enum AdminStep implements WizardExtStep { false, false, DbMode.USE_LOCAL, - DbMode.USE_REMOTE + DbMode.USE_REMOTE, + DbMode.USE_SERVER ), /** pour afficher après les opération un ecran de résumé */ diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index a53212f..088c30c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -1110,7 +1110,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // avec des droits d'écriture de données // validate &= centralSourceModel.isValid() && // centralSourceModel.getPgConfig().isCanWriteData(); - validate &= centralSourceModel.getDataSourceInformation().canWriteData(); + validate &= centralSourceModel.getDataSourceInformation() != null + && centralSourceModel.getDataSourceInformation().canWriteData(); } if (containsOperation(AdminStep.IMPORT_GPS)) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java index 5964f15..4b79bbe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java @@ -21,6 +21,8 @@ */ package fr.ird.observe.ui.admin.export; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -28,10 +30,12 @@ import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import org.nuiton.decorator.Decorator; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * Le modèle d'une opération d'export de données observers. @@ -50,11 +54,11 @@ public class ExportModel extends AdminActionModel { /** les données exportables */ protected List<TripEntry> data; - protected Decorator<ProgramDto> programDecorator; + protected Decorator<ReferenceDto> programDecorator; - protected Decorator<TripSeineDto> tripSeineDecorator; + protected Decorator<ReferenceDto> tripSeineDecorator; - protected Decorator<TripLonglineDto> tripLonglineDecorator; + protected Decorator<ReferenceDto> tripLonglineDecorator; protected ObserveSwingDataSource source; @@ -94,33 +98,27 @@ public class ExportModel extends AdminActionModel { return data; } - //FIXME -// public void setData(DataSelectionModel selectionModel) { -// -// List<TripEntry> tripEntries = new ArrayList<TripEntry>(); -// -// for (List<String> tripIds : selectionModel.getSelectedDataByProgram().values()) { -// -// if (CollectionUtils.isNotEmpty(tripIds)) { -// -// for (String tripId : tripIds) { -// -// Trip trip = (Trip) selectionModel.getEntityCache(tripId); -// -// boolean exists = existingTripIds.contains(trip.getTopiaId()); -// -// TripEntry entry = new TripEntry(trip, exists); -// tripEntries.add(entry); -// -// } -// -// } -// -// } -// -// this.data = ImmutableList.copyOf(tripEntries); -// -// } + public void setData(DataSelectionModel selectionModel) { + + List<TripEntry> tripEntries = Lists.newArrayList(); + + for (Map.Entry<ReferenceDto<ProgramDto>, List<ReferenceDto>> entry : selectionModel.getSelectedDataByProgram().entrySet()) { + + ReferenceDto<ProgramDto> program = entry.getKey(); + + for (ReferenceDto trip : entry.getValue()) { + + boolean exists = existingTrips.contains(trip); + + TripEntry tripEntry = new TripEntry(program, trip, exists); + + tripEntries.add(tripEntry); + } + } + + this.data = ImmutableList.copyOf(tripEntries); + + } public ObserveSwingDataSource getSource() { return source; @@ -138,28 +136,30 @@ public class ExportModel extends AdminActionModel { this.centralSource = centralSource; } - public void setProgramDecorator(Decorator<ProgramDto> programDecorator) { + public void setProgramDecorator(Decorator<ReferenceDto> programDecorator) { this.programDecorator = programDecorator; } - public void setTripSeineDecorator(Decorator<TripSeineDto> mareeDecorator) { + public void setTripSeineDecorator(Decorator<ReferenceDto> mareeDecorator) { this.tripSeineDecorator = mareeDecorator; } - public void setTripLonglineDecorator(Decorator<TripLonglineDto> tripLonglineDecorator) { + public void setTripLonglineDecorator(Decorator<ReferenceDto> tripLonglineDecorator) { this.tripLonglineDecorator = tripLonglineDecorator; } - public String decorate(TripSeineDto trip) { - return tripSeineDecorator.toString(trip); - } + public String decorate(ReferenceDto referenceDto) { + String decor= null; - public String decorate(TripLonglineDto trip) { - return tripLonglineDecorator.toString(trip); - } + if (ProgramDto.class.isAssignableFrom(referenceDto.getType())) { + decor = programDecorator.toString(referenceDto); + } else if (TripSeineDto.class.isAssignableFrom(referenceDto.getType())) { + decor = tripSeineDecorator.toString(referenceDto); + } else if (TripLonglineDto.class.isAssignableFrom(referenceDto.getType())) { + decor = tripLonglineDecorator.toString(referenceDto); + } - public String decorate(ProgramDto program) { - return programDecorator.toString(program); + return decor; } public List<TripEntry> getSelectedTrips() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 806b023..4d3798f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -21,11 +21,14 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -33,6 +36,7 @@ import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.admin.AdminUIModel; import fr.ird.observe.ui.admin.config.SelectDataUI; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.swing.editor.MyDefaultCellEditor; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; @@ -95,8 +99,7 @@ public class ExportUIHandler extends AdminTabUIHandler { // } selectTabUI.getSelectionModel().clearSelection(); - // FIXME -// selectTabUI.getSelectionRenderer().setExistingTripIds(model.getExportModel().getExistingTripIds()); + selectTabUI.getSelectionRenderer().setExistingTrips(model.getExportModel().getExistingTrips()); updateSelectionModel(selectTabUI); } }); @@ -195,9 +198,9 @@ public class ExportUIHandler extends AdminTabUIHandler { DecoratorService decoratorProvider = getDecoratorService(); ExportModel stepModel = model.getExportModel(); - Decorator<ProgramDto> pDecorator = decoratorProvider.getDecoratorByType(ProgramDto.class); - Decorator<TripLonglineDto> tripLonglineDecorator = decoratorProvider.getDecoratorByType(TripLonglineDto.class); - Decorator<TripSeineDto> tripSeineDecorator = decoratorProvider.getDecoratorByType(TripSeineDto.class); + Decorator<ReferenceDto> pDecorator = decoratorProvider.getDecoratorByType(ReferenceDto.class, ProgramDto.class.getSimpleName()); + Decorator<ReferenceDto> tripLonglineDecorator = decoratorProvider.getDecoratorByType(ReferenceDto.class, TripLonglineDto.class.getSimpleName()); + Decorator<ReferenceDto> tripSeineDecorator = decoratorProvider.getDecoratorByType(ReferenceDto.class, TripSeineDto.class.getSimpleName()); stepModel.setProgramDecorator(pDecorator); stepModel.setTripSeineDecorator(tripSeineDecorator); stepModel.setTripLonglineDecorator(tripLonglineDecorator); @@ -227,9 +230,8 @@ public class ExportUIHandler extends AdminTabUIHandler { sendMessage(t("observe.message.exportData.prepare.data")); // récupération des couples (program, marees) sur la base temporaire - //FIXME -// DataSelectionModel selectionModel = model.getSelectionDataModel(); -// stepModel.setData(selectionModel); + DataSelectionModel selectionModel = model.getSelectionDataModel(); + stepModel.setData(selectionModel); List<TripEntry> entries = stepModel.getData(); @@ -269,53 +271,64 @@ public class ExportUIHandler extends AdminTabUIHandler { ObserveSwingDataSource centralSource = stepModel.getCentralSource(); ObserveSwingDataSource source = stepModel.getSource(); + ReferenceDto<ProgramDto> program = tripEntry.getProgram(); + ReferenceDto trip = tripEntry.getTrip(); + String tripId = trip.getId(); - //FIXME -// Trip trip = tripEntry.getTrip(); -// String tripId = trip.getTopiaId(); -// -// String tripDecorated = stepModel.decorate(trip); -// String programDecorated = stepModel.decorate(trip.getProgram()); -// -// if (tripEntry.isExist()) { -// -// //TODO afficher un message de confirmation pour l'écrasement des marées sur la base distante -// // on supprime les marées à écraser de la base distante -// -// if (log.isInfoEnabled()) { -// log.info(tripId + " -- " + t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); -// } -// sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); -// -// getDataService().deleteTrip(centralSource, tripId); -// -// } -// -// if (log.isInfoEnabled()) { -// log.info(tripId + " -- " + t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); -// } -// sendMessage(t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); -// -// try { -// replicateData(source, centralSource, tripId); -// } catch (Exception e) { -// //FIXME 20100726 : il faut supprimer tous les objets crées pour cette marée -// -//// tx = beginTransaction(centralSource, txName); -//// -//// // on supprime la maree qui n'a pas pu etre importee -//// try { -//// TopiaDAO<Trip> dao = ObserveDAOHelper.getTripSeineDAO(tx); -//// // on recharge la données depuis la base centrale -//// m = dao.findByTopiaId(m.getTopiaId()); -//// dao.delete(m); -//// commitTransaction(centralSource, tx, txName); -//// } finally { -//// closeTransaction(centralSource, tx, txName); -//// } + String tripDecorated = stepModel.decorate(trip); + String programDecorated = stepModel.decorate(program); + + if (tripEntry.isExist()) { + + //TODO afficher un message de confirmation pour l'écrasement des marées sur la base distante + // on supprime les marées à écraser de la base distante + + if (log.isInfoEnabled()) { + log.info(tripId + " -- " + t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); + } + sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); + + if (TripSeineDto.class.isAssignableFrom(trip.getType())) { + + TripSeineService tripSeineService = centralSource.newService(TripSeineService.class); + + tripSeineService.delete(tripId); + + } else if (TripLonglineDto.class.isAssignableFrom(trip.getType())) { + + TripLonglineService tripLonglineService = centralSource.newService(TripLonglineService.class); + + tripLonglineService.delete(tripId); + + } + + } + + if (log.isInfoEnabled()) { + log.info(tripId + " -- " + t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); + } + sendMessage(t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); + + try { + replicateData(source, centralSource, tripId); + } catch (Exception e) { + //FIXME 20100726 : il faut supprimer tous les objets crées pour cette marée + +// tx = beginTransaction(centralSource, txName); // -// throw e; -// } +// // on supprime la maree qui n'a pas pu etre importee +// try { +// TopiaDAO<Trip> dao = ObserveDAOHelper.getTripSeineDAO(tx); +// // on recharge la données depuis la base centrale +// m = dao.findByTopiaId(m.getTopiaId()); +// dao.delete(m); +// commitTransaction(centralSource, tx, txName); +// } finally { +// closeTransaction(centralSource, tx, txName); +// } + + throw e; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java index 3e96d54..32a35bf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripEntry.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.referential.ProgramDto; import java.io.Serializable; @@ -31,25 +31,25 @@ public class TripEntry implements Serializable { private static final long serialVersionUID = 1L; - //FIXME -// protected final Trip trip; + protected final ReferenceDto<ProgramDto> program; + + protected final ReferenceDto trip; protected final boolean exist; - public TripEntry(TripLonglineDto trip, boolean exist) { -// this.trip = trip; + public TripEntry(ReferenceDto<ProgramDto> program, ReferenceDto trip, boolean exist) { + this.program = program; + this.trip = trip; this.exist = exist; } - public TripEntry(TripSeineDto trip, boolean exist) { -// this.trip = trip; - this.exist = exist; + public ReferenceDto<ProgramDto> getProgram() { + return program; } - //FIXME -// public Trip getTrip() { -// return trip; -// } + public ReferenceDto getTrip() { + return trip; + } public boolean isExist() { return exist; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripToExportTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripToExportTableModel.java index d05c654..7a9f61b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripToExportTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/TripToExportTableModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.ReferenceDto; import javax.swing.table.AbstractTableModel; import java.util.HashSet; @@ -39,9 +39,8 @@ public class TripToExportTableModel extends AbstractTableModel { protected static final Class<?>[] COLUMN_CLASSES = { Boolean.class, - ProgramDto.class, - //FIXME -// Trip.class, + ReferenceDto.class, //program + ReferenceDto.class, // trip Boolean.class }; @@ -115,12 +114,10 @@ public class TripToExportTableModel extends AbstractTableModel { value = selected.contains(rowIndex); break; case 1: - //FIXME -// value = tripEntry.getTrip().getProgram(); + value = tripEntry.getProgram(); break; case 2: - //FIXME -// value = tripEntry.getTrip(); + value = tripEntry.getTrip(); break; case 3: value = tripEntry.isExist(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 961c0ec..424329a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -1638,6 +1638,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setSecurityModel(getSecurityModel()); dst.setAdminAction(getAdminAction()); dst.setConnexionStatus(getConnexionStatus()); + dst.setDataSourceInformation(getDataSourceInformation()); } public void firePgConfigChanged(String propertyName, @@ -1918,4 +1919,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { public ObserveDataSourceInformation getDataSourceInformation() { return dataSourceInformation; } + + public void setDataSourceInformation(ObserveDataSourceInformation dataSourceInformation) { + this.dataSourceInformation = dataSourceInformation; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeCellRenderer.java index 763b6fa..f668715 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeCellRenderer.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.tree; +import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -49,14 +50,14 @@ public class DataSelectionTreeCellRenderer extends AbstractObserveTreeCellRender private static final Log log = LogFactory.getLog(DataSelectionTreeCellRenderer.class); - protected List<String> existingTripIds; + protected List<ReferenceDto> existingTrips; - public List<String> getExistingTripIds() { - return existingTripIds; + public List<ReferenceDto> getExistingTrips() { + return existingTrips; } - public void setExistingTripIds(List<String> existingMareeIds) { - this.existingTripIds = existingMareeIds; + public void setExistingTrips(List<ReferenceDto> existingTrips) { + this.existingTrips = existingTrips; } public DataSelectionTreeCellRenderer() { @@ -110,9 +111,9 @@ public class DataSelectionTreeCellRenderer extends AbstractObserveTreeCellRender if (TripSeineDto.class.equals(node.getInternalClass())) { - if (existingTripIds != null) { + if (existingTrips != null) { - if (existingTripIds.contains(node.getId())) { + if (existingTrips.contains(((TripSeineNode)node).getEntity())) { text = t("observe.comon.exist.on.remote", text); exist = true; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.