This is an automated email from the git hooks/post-receive script. New commit to branch feature/6944 in repository observe. See http://git.codelutin.com/observe.git commit 7d6df90a093a4c980f3a486de52c8b3b47c0342b Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Apr 22 14:13:33 2015 +0200 add map in trip long line ui --- .../src/main/java/fr/ird/observe/DataService.java | 24 +- .../entities/longline/TripLonglineDAOImpl.java | 141 ++++++++++ .../observe/entities/seine/TripSeineDAOImpl.java | 18 +- .../java/fr/ird/observe/tripMap/TripMapPoint.java | 12 +- .../fr/ird/observe/tripMap/TripMapPointType.java | 16 ++ .../content/open/impl/longline/TripLonglineUI.css | 8 + .../content/open/impl/longline/TripLonglineUI.jaxx | 286 +++++++++++---------- .../open/impl/longline/TripLonglineUIHandler.java | 44 ++++ .../open/impl/seine/TripSeineUIHandler.java | 2 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 20 +- observe-swing/src/main/map/style.xml | 8 +- .../resources/i18n/observe-swing_en_GB.properties | 2 + .../resources/i18n/observe-swing_es_ES.properties | 2 + .../resources/i18n/observe-swing_fr_FR.properties | 2 + 14 files changed, 419 insertions(+), 166 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/DataService.java b/observe-business/src/main/java/fr/ird/observe/DataService.java index 12d8774..6c13752 100644 --- a/observe-business/src/main/java/fr/ird/observe/DataService.java +++ b/observe-business/src/main/java/fr/ird/observe/DataService.java @@ -1723,16 +1723,30 @@ public class DataService { String txName = "loadTrip"; TopiaContext tx = beginTransaction(source, txName); + List<TripMapPoint> tripMapPoints; + try { - TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - List<TripMapPoint> tripMapPoints = dao.extractTripMapActivityPoints(id); - return tripMapPoints; + if (Entities.isSeineId(id)) { + TripSeineDAO dao = (TripSeineDAO) source.getDAO(tx, TripSeine.class); - } catch (Exception e) { + tripMapPoints = dao.extractTripMapActivityPoints(id); + + } else if (Entities.isLonglineId(id)) { + + TripLonglineDAO dao = (TripLonglineDAO) source.getDAO(tx, TripLongline.class); + + tripMapPoints = dao.extractTripMapActivityPoints(id); + + } else { + throw new ObserveTechnicalException(String.format("id '%s' is not seine id or longe line id", id)); + } + + } catch (TopiaException e) { throw new DataSourceException(e, txName); - } finally { + } finally{ closeTransaction(source, tx, txName); } + return tripMapPoints; } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/longline/TripLonglineDAOImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/longline/TripLonglineDAOImpl.java index b5bc612..5fb8b58 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/longline/TripLonglineDAOImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/longline/TripLonglineDAOImpl.java @@ -22,11 +22,15 @@ package fr.ird.observe.entities.longline; * #L% */ +import com.google.common.collect.Lists; import fr.ird.observe.entities.constants.ReferenceLocale; +import fr.ird.observe.entities.referentiel.Harbour; import fr.ird.observe.entities.referentiel.Person; import fr.ird.observe.entities.referentiel.PersonImpl; import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.VesselImpl; +import fr.ird.observe.tripMap.TripMapPoint; +import fr.ird.observe.tripMap.TripMapPointType; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.framework.TopiaSQLQuery; @@ -67,6 +71,143 @@ public class TripLonglineDAOImpl<E extends TripLongline> extends TripLonglineDAO } + public List<TripMapPoint> extractTripMapActivityPoints(String tripId) throws TopiaException { + + TripLongline tripLongline = findByTopiaId(tripId); + + List<TripMapPoint> tripMapPoints = Lists.newLinkedList(); + + // add departure harbours + Harbour departureHarbour = tripLongline.getDepartureHarbour(); + if (departureHarbour != null + && departureHarbour.getLatitude() != null + && departureHarbour.getLongitude() != null) { + TripMapPoint departurePoint = new TripMapPoint(); + departurePoint.setTime(tripLongline.getStartDate()); + departurePoint.setLatitude(departureHarbour.getLatitude()); + departurePoint.setLongitude(departureHarbour.getLongitude()); + tripMapPoints.add(departurePoint); + } + + // Add Activities + TripMapActivityPointQuery tripMapActivityPointQuery = new TripMapActivityPointQuery(tripId); + List<List<TripMapPoint>> results = tripMapActivityPointQuery.findMultipleResult(context); + for (List<TripMapPoint> result : results) { + tripMapPoints.addAll(result); + } + + // add landing harbours + Harbour landingHarbour = tripLongline.getLandingHarbour(); + if (landingHarbour != null + && landingHarbour.getLatitude() != null + && landingHarbour.getLongitude() != null) { + TripMapPoint landingPoint = new TripMapPoint(); + landingPoint.setTime(tripLongline.getEndDate()); + landingPoint.setLatitude(landingHarbour.getLatitude()); + landingPoint.setLongitude(landingHarbour.getLongitude()); + tripMapPoints.add(landingPoint); + } + + return tripMapPoints; + } + + private static class TripMapActivityPointQuery extends TopiaSQLQuery<List<TripMapPoint>> { + + private static String SQL = "SELECT" + + " a.timestamp, " + + " a.latitude," + + " a.longitude," + + " s.settingStartTimestamp," + + " s.settingStartLatitude," + + " s.settingStartLongitude," + + " s.settingEndTimestamp," + + " s.settingEndLatitude," + + " s.settingEndLongitude," + + " s.haulingStartTimestamp," + + " s.haulingStartLatitude," + + " s.haulingStartLongitude," + + " s.haulingEndTimestamp," + + " s.haulingEndLatitude," + + " s.haulingEndLongitude" + + " FROM observe_longLine.activity a" + + " LEFT OUTER JOIN observe_longLine.set s" + + " ON s.topiaId = a.set" + + " WHERE a.trip = ?" + + " ORDER BY a.timestamp"; + + protected String tripId; + + public TripMapActivityPointQuery(String tripId) { + this.tripId = tripId; + } + + @Override + protected PreparedStatement prepareQuery(Connection connection) throws SQLException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL); + preparedStatement.setString(1, tripId); + return preparedStatement; + } + + @Override + protected List<TripMapPoint> prepareResult(ResultSet resultSet) throws SQLException { + + List<TripMapPoint> result = Lists.newLinkedList(); + + // activity + TripMapPoint activity = new TripMapPoint(); + activity.setTime(resultSet.getDate(1)); + activity.setLatitude(resultSet.getFloat(2)); + activity.setLongitude(resultSet.getFloat(3)); + activity.setType(TripMapPointType.activity); + result.add(activity); + + // settingStart + if (resultSet.getString(4) != null) { + TripMapPoint settingStart = new TripMapPoint(); + settingStart.setTime(resultSet.getDate(4)); + settingStart.setLatitude(resultSet.getFloat(5)); + settingStart.setLongitude(resultSet.getFloat(6)); + settingStart.setType(TripMapPointType.settingStart); + result.add(settingStart); + } + + // settingEnd + if (resultSet.getString(7) != null) { + TripMapPoint settingEnd = new TripMapPoint(); + settingEnd.setTime(resultSet.getDate(7)); + settingEnd.setLatitude(resultSet.getFloat(8)); + settingEnd.setLongitude(resultSet.getFloat(9)); + settingEnd.setType(TripMapPointType.settingEnd); + result.add(settingEnd); + } + + // haulingStart + if (resultSet.getString(10) != null) { + TripMapPoint haulingStart = new TripMapPoint(); + haulingStart.setTime(resultSet.getDate(10)); + haulingStart.setLatitude(resultSet.getFloat(11)); + haulingStart.setLongitude(resultSet.getFloat(12)); + haulingStart.setType(TripMapPointType.haulingStart); + result.add(haulingStart); + } + + // haulingEnd + if (resultSet.getString(13) != null) { + TripMapPoint haulingEnd = new TripMapPoint(); + haulingEnd.setTime(resultSet.getDate(13)); + haulingEnd.setLatitude(resultSet.getFloat(14)); + haulingEnd.setLongitude(resultSet.getFloat(15)); + haulingEnd.setType(TripMapPointType.haulingEnd); + result.add(haulingEnd); + } + + return result; + } + } + + + + private static class StubSqlQuery<E extends TripLongline> extends TopiaSQLQuery<E> { private final String sql; diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/seine/TripSeineDAOImpl.java b/observe-entities/src/main/java/fr/ird/observe/entities/seine/TripSeineDAOImpl.java index 756d3c1..aeda497 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/seine/TripSeineDAOImpl.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/seine/TripSeineDAOImpl.java @@ -30,6 +30,7 @@ import fr.ird.observe.entities.referentiel.PersonImpl; import fr.ird.observe.entities.referentiel.Vessel; import fr.ird.observe.entities.referentiel.VesselImpl; import fr.ird.observe.tripMap.TripMapPoint; +import fr.ird.observe.tripMap.TripMapPointType; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.framework.TopiaSQLQuery; @@ -153,8 +154,21 @@ public class TripSeineDAOImpl<E extends TripSeine> extends TripSeineDAOAbstract< point.setTime(calendar.getTime()); point.setLatitude(resultSet.getFloat(3)); point.setLongitude(resultSet.getFloat(4)); - if (resultSet.getString(5) != null) { - point.setSchoolType(SchoolType.values()[resultSet.getInt(5)]); + if (resultSet.getString(5) == null) { + point.setType(TripMapPointType.activity); + } else { + SchoolType schoolType = SchoolType.values()[resultSet.getInt(5)]; + switch (schoolType) { + case libre: + point.setType(TripMapPointType.schoolLibre); + break; + case objet: + point.setType(TripMapPointType.schoolObjet); + break; + default: + point.setType(TripMapPointType.activity); + } + } return point; diff --git a/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPoint.java b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPoint.java index 247240a..9d42b39 100644 --- a/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPoint.java +++ b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPoint.java @@ -1,7 +1,5 @@ package fr.ird.observe.tripMap; -import fr.ird.observe.entities.constants.seine.SchoolType; - import java.util.Date; /** @@ -15,7 +13,7 @@ public class TripMapPoint { protected float longitude; - protected SchoolType schoolType; + protected TripMapPointType type; public Date getTime() { return time; @@ -41,11 +39,11 @@ public class TripMapPoint { this.longitude = longitude; } - public SchoolType getSchoolType() { - return schoolType; + public TripMapPointType getType() { + return type; } - public void setSchoolType(SchoolType schoolType) { - this.schoolType = schoolType; + public void setType(TripMapPointType type) { + this.type = type; } } diff --git a/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java new file mode 100644 index 0000000..500e7a2 --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java @@ -0,0 +1,16 @@ +package fr.ird.observe.tripMap; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public enum TripMapPointType { + + activity, + schoolLibre, + schoolObjet, + settingStart, + settingEnd, + haulingStart, + haulingEnd; + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.css b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.css index 703ca5c..7282179 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.css +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.css @@ -26,6 +26,14 @@ NumberEditor { numberPattern:{fr.ird.observe.ui.UIHelper.INT_6_DIGITS_PATTERN}; } +#generalTab { + title: {t("observe.tripLongline.tab.general")}; +} + +#mapTab { + title: {t("observe.tripLongline.tab.map")}; +} + #model { editable:true; modified:{validator.isChanged()}; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.jaxx b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.jaxx index 0dabc54..f011083 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.jaxx +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUI.jaxx @@ -37,6 +37,7 @@ fr.ird.observe.entities.referentiel.Ocean fr.ird.observe.entities.referentiel.longline.TripType fr.ird.observe.ui.actions.shared.DeleteDataUIAction + fr.ird.observe.ui.util.tripMap.TripMapUI org.jdesktop.swingx.JXDatePicker @@ -81,145 +82,152 @@ protected boolean canEditOcean(java.util.List<ActivityLongline> activities) { <!-- formulaire --> <JPanel id="body" layout='{new BorderLayout()}'> - <Table fill="both" constraints='BorderLayout.CENTER'> - - <!-- tripType --> - <row> - <cell anchor='west'> - <JLabel id='tripTypeLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='tripType' constructorParams='this' genericType='TripType'/> - </cell> - </row> - - <!-- captain --> - <row> - <cell anchor='west'> - <JLabel id='captainLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='captain' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- observer --> - <row> - <cell anchor='west'> - <JLabel id='observerLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='observer' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- dataEntryOperator --> - <row> - <cell anchor='west'> - <JLabel id='dataEntryOperatorLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='dataEntryOperator' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- vessel --> - <row> - <cell anchor='west'> - <JLabel id='vesselLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='vessel' constructorParams='this' genericType='Vessel'/> - </cell> - </row> - - <!-- ocean (editable uniquement si pas de route saisie) --> - <row> - <cell anchor='west'> - <JLabel id='oceanLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='ocean' genericType='Ocean' constructorParams='this'/> - </cell> - </row> - - <!-- departureHarbour --> - <row> - <cell anchor='west'> - <JLabel id='departureHarbourLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='departureHarbour' genericType='Harbour' constructorParams='this'/> - </cell> - </row> - - <!-- landingHarbour --> - <row> - <cell anchor='west'> - <JLabel id='landingHarbourLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='landingHarbour' genericType='Harbour' constructorParams='this'/> - </cell> - </row> - - <!-- homeId --> - <row> - - <cell anchor='west'> - <JLabel id='homeIdLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <JPanel layout='{new BorderLayout()}'> - <JToolBar id='homeIdToolbar' constraints='BorderLayout.WEST'> - <JButton id='resetHomeId' styleClass='resetButton'/> - </JToolBar> - <JTextField id='homeId' constraints='BorderLayout.CENTER'/> - </JPanel> - </cell> - </row> - - <!-- totalFishingOperationsNumber --> - <row> - <cell anchor='west'> - <JLabel id='totalFishingOperationsNumberLabel'/> - </cell> - <cell anchor='west' weightx="0.5"> - <NumberEditor id='totalFishingOperationsNumber' constructorParams='this'/> - </cell> - </row> - - <!-- startDate --> - <row> - <cell anchor='west'> - <JLabel id='startDateLabel'/> - </cell> - <cell anchor='west' weightx="0.5"> - <JXDatePicker id='startDate'/> - </cell> - </row> - - <!-- endDate --> - <row> - <cell anchor='west'> - <JLabel id='endDateLabel'/> - </cell> - <cell anchor='west' weightx="0.5"> - <JXDatePicker id='endDate'/> - </cell> - </row> - - <!-- comment --> - <row> - <cell columns='2' fill='both' weighty="1"> - <JScrollPane id='comment' - onFocusGained='comment2.requestFocus()'> - <JTextArea id='comment2' - onKeyReleased='getModel().getBean().setComment(comment2.getText())'/> - </JScrollPane> - </cell> - </row> - </Table> + <JTabbedPane id='tripLonglineTabPane' constraints='BorderLayout.CENTER'> + <tab id='generalTab'> + <Table fill="both"> + + <!-- tripType --> + <row> + <cell anchor='west'> + <JLabel id='tripTypeLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='tripType' constructorParams='this' genericType='TripType'/> + </cell> + </row> + + <!-- captain --> + <row> + <cell anchor='west'> + <JLabel id='captainLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='captain' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- observer --> + <row> + <cell anchor='west'> + <JLabel id='observerLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='observer' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- dataEntryOperator --> + <row> + <cell anchor='west'> + <JLabel id='dataEntryOperatorLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='dataEntryOperator' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- vessel --> + <row> + <cell anchor='west'> + <JLabel id='vesselLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='vessel' constructorParams='this' genericType='Vessel'/> + </cell> + </row> + + <!-- ocean (editable uniquement si pas de route saisie) --> + <row> + <cell anchor='west'> + <JLabel id='oceanLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='ocean' genericType='Ocean' constructorParams='this'/> + </cell> + </row> + + <!-- departureHarbour --> + <row> + <cell anchor='west'> + <JLabel id='departureHarbourLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='departureHarbour' genericType='Harbour' constructorParams='this'/> + </cell> + </row> + + <!-- landingHarbour --> + <row> + <cell anchor='west'> + <JLabel id='landingHarbourLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='landingHarbour' genericType='Harbour' constructorParams='this'/> + </cell> + </row> + + <!-- homeId --> + <row> + + <cell anchor='west'> + <JLabel id='homeIdLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <JPanel layout='{new BorderLayout()}'> + <JToolBar id='homeIdToolbar' constraints='BorderLayout.WEST'> + <JButton id='resetHomeId' styleClass='resetButton'/> + </JToolBar> + <JTextField id='homeId' constraints='BorderLayout.CENTER'/> + </JPanel> + </cell> + </row> + + <!-- totalFishingOperationsNumber --> + <row> + <cell anchor='west'> + <JLabel id='totalFishingOperationsNumberLabel'/> + </cell> + <cell anchor='west' weightx="0.5"> + <NumberEditor id='totalFishingOperationsNumber' constructorParams='this'/> + </cell> + </row> + + <!-- startDate --> + <row> + <cell anchor='west'> + <JLabel id='startDateLabel'/> + </cell> + <cell anchor='west' weightx="0.5"> + <JXDatePicker id='startDate'/> + </cell> + </row> + + <!-- endDate --> + <row> + <cell anchor='west'> + <JLabel id='endDateLabel'/> + </cell> + <cell anchor='west' weightx="0.5"> + <JXDatePicker id='endDate'/> + </cell> + </row> + + <!-- comment --> + <row> + <cell columns='2' fill='both' weighty="1"> + <JScrollPane id='comment' + onFocusGained='comment2.requestFocus()'> + <JTextArea id='comment2' + onKeyReleased='getModel().getBean().setComment(comment2.getText())'/> + </JScrollPane> + </cell> + </row> + </Table> + </tab> + <tab id="mapTab"> + <TripMapUI id="tripMap"/> + </tab> + </JTabbedPane> </JPanel> <!-- surcharge des actions (pour appliquer la css specifique) --> diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java index f8cfa5d..38cb49c 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java @@ -23,6 +23,7 @@ package fr.ird.observe.ui.content.open.impl.longline; */ import fr.ird.observe.DataService; +import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; @@ -34,6 +35,7 @@ import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.content.open.ContentOpenableUIModel; +import fr.ird.observe.ui.util.tripMap.TripMapUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaContext; @@ -43,6 +45,10 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.util.DateUtil; +import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.util.Date; import static org.nuiton.i18n.I18n.n; @@ -93,6 +99,44 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline } @Override + public void initUI() throws Exception { + super.initUI(); + + TripLonglineUI ui = getUi(); + TripMapUI tripMap = ui.getTripMap(); + ObserveConfig config = ui.getContextValue(ObserveConfig.class); + + tripMap.getHandler().setConfig(config); + + getUi().getTripLonglineTabPane().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + JTabbedPane tripLonglineTabPane = (JTabbedPane) e.getSource(); + TripLonglineUI ui = getUi(); + TripMapUI tripMap = ui.getTripMap(); + if (tripLonglineTabPane.getSelectedComponent().equals(tripMap)) { + ui.getActions().setVisible(false); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + + TripLonglineUI ui = getUi(); + TripMapUI tripMap = ui.getTripMap(); + + tripMap.getHandler().doOpenMap(ui.getDataSource(), ui.getDataService(), getSelectedId()); + } + }); + + } else { + ui.getActions().setVisible(true); + } + } + }); + + } + + @Override public void openUI() throws Exception { super.openUI(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java index fb467d8..587b34f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -112,7 +112,7 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { JTabbedPane tripSeineTabPane = (JTabbedPane) e.getSource(); TripSeineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - if (tripSeineTabPane.getSelectedComponent() == tripMap) { + if (tripSeineTabPane.getSelectedComponent().equals(tripMap)) { ui.getActions().setVisible(false); SwingUtilities.invokeLater(new Runnable() { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java index 8eb175a..d4f9c3a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java @@ -14,8 +14,8 @@ import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.entities.constants.seine.SchoolType; import fr.ird.observe.tripMap.TripMapPoint; +import fr.ird.observe.tripMap.TripMapPointType; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -60,6 +60,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; /** @@ -224,20 +225,20 @@ public class TripMapUIHandler { pointFeatureTypeBuilder.setName("point Builder"); pointFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); pointFeatureTypeBuilder.add("points", MultiPoint.class); - pointFeatureTypeBuilder.add("schoolType", String.class); + pointFeatureTypeBuilder.add("pointType", String.class); SimpleFeatureType pointFeatureType = pointFeatureTypeBuilder.buildFeatureType(); SimpleFeatureBuilder pointBuilder = new SimpleFeatureBuilder(pointFeatureType); DefaultFeatureCollection pointsFeatures = new DefaultFeatureCollection(); - for (final SchoolType schoolType : SchoolType.values()) { + for (final TripMapPointType type : TripMapPointType.values()) { Iterable<Coordinate> coordinates = Iterables.transform( Iterables.filter(tripMapPoints, new Predicate<TripMapPoint>() { @Override public boolean apply(TripMapPoint input) { - return input.getSchoolType() == schoolType; + return type.equals(input.getType()); } }), new Function<TripMapPoint, Coordinate>() { @@ -247,10 +248,13 @@ public class TripMapUIHandler { } }); - MultiPoint points = geometryFactory.createMultiPoint(Lists.newArrayList(coordinates).toArray(new Coordinate[0])); - pointBuilder.add(points); - pointBuilder.add(schoolType.name()); - pointsFeatures.add(pointBuilder.buildFeature(null)); + ArrayList<Coordinate> coordinatesArray = Lists.newArrayList(coordinates); + if (! coordinatesArray.isEmpty()) { + MultiPoint points = geometryFactory.createMultiPoint(coordinatesArray.toArray(new Coordinate[0])); + pointBuilder.add(points); + pointBuilder.add(type.name()); + pointsFeatures.add(pointBuilder.buildFeature(null)); + } } Style stylePoints = findStyle(styledLayerDescriptor, TRIP_POINTS_LAYER_NAME, null); diff --git a/observe-swing/src/main/map/style.xml b/observe-swing/src/main/map/style.xml index a42c641..50354f7 100644 --- a/observe-swing/src/main/map/style.xml +++ b/observe-swing/src/main/map/style.xml @@ -74,8 +74,8 @@ <Name>Point libre</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> - <ogc:PropertyName>schoolType</ogc:PropertyName> - <ogc:Literal>libre</ogc:Literal> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>schoolLibre</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> @@ -100,8 +100,8 @@ <Name>Point objet</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> - <ogc:PropertyName>schoolType</ogc:PropertyName> - <ogc:Literal>objet</ogc:Literal> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>schoolObjet</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> diff --git a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties index dfd012c..0c22776 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties @@ -2110,6 +2110,8 @@ observe.tripLongline.message.updating=Updating a trip observe.tripLongline.observer=Observer observe.tripLongline.ocean=Ocean observe.tripLongline.startDate=Start date +observe.tripLongline.tab.general= +observe.tripLongline.tab.map= observe.tripLongline.title=Trip observe.tripLongline.totalFishingOperationsNumber=Total fishing operation count observe.tripLongline.tripType=Trip type diff --git a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties index 6d65e9d..2d8cec3 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties @@ -2112,6 +2112,8 @@ observe.tripLongline.message.updating= observe.tripLongline.observer= observe.tripLongline.ocean= observe.tripLongline.startDate= +observe.tripLongline.tab.general= +observe.tripLongline.tab.map= observe.tripLongline.title= observe.tripLongline.totalFishingOperationsNumber= observe.tripLongline.tripType= diff --git a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties index 181aef6..c945b19 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties @@ -2110,6 +2110,8 @@ observe.tripLongline.message.updating=La maréee est en cours de modification. observe.tripLongline.observer=Observateur observe.tripLongline.ocean=Océan observe.tripLongline.startDate=Date début +observe.tripLongline.tab.general=Caractéristiques +observe.tripLongline.tab.map=Carte observe.tripLongline.title=Marée observe.tripLongline.totalFishingOperationsNumber=Nombre total d'opérations de pêche observe.tripLongline.tripType=Type de marée -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.