Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 03aa3129 by Tony Chemit at 2020-12-28T12:03:52+01:00 Configuration de la cartographie - See #1702 - - - - - 16 changed files: - client/configuration/src/main/config/Client.ini - client/configuration/src/main/i18n/getters/config.getter - client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java - client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapContentBuilderSupport.java - client/datasource/editor/ll/pom.xml - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripMapContentBuilder.java - client/datasource/editor/ll/src/main/resources/map/ll-style.xml - client/datasource/editor/ps/pom.xml - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripMapContentBuilder.java - client/datasource/editor/ps/src/main/resources/map/ps-style.xml - client/i18n/src/main/i18n/translations/observe_en_GB.properties - client/i18n/src/main/i18n/translations/observe_es_ES.properties - client/i18n/src/main/i18n/translations/observe_fr_FR.properties - models/dto/src/main/java/fr/ird/observe/dto/data/TripMapConfig.java - models/dto/src/main/java/fr/ird/observe/dto/data/TripMapContentBuilder.java Changes: ===================================== client/configuration/src/main/config/Client.ini ===================================== @@ -504,36 +504,72 @@ key = map.background.color type = color defaultValue = java.awt.Color[r=87,g=200,b=255] +[option mapDateFormat] +description = observe.config.map.dateFormat +key = map.date.format +type = string +defaultValue = "MM-dd" + [option mapLayer1] description = observe.config.map.layer1.description key = map.layer1.path type = file defaultValue = ${resources.directory}/map/shapeFiles/continents/GSHHS_l_L1.shp +[option mapLayer1Color] +description = observe.config.map.layer1.color +key = map.layer1.color +type = color +defaultValue = java.awt.Color[r=251,g=233,b=215] + [option mapLayer2] description = observe.config.map.layer2.description key = map.layer2.path type = file defaultValue = ${resources.directory}/map/shapeFiles/continents/GSHHS_l_L6.shp +[option mapLayer2Color] +description = observe.config.map.layer2.color +key = map.layer2.color +type = color +defaultValue = java.awt.Color[r=245,g=245,b=255] + [option mapLayer3] description = observe.config.map.layer3.description key = map.layer3.path type = file defaultValue = ${resources.directory}/map/shapeFiles/lakesAndSeas/GSHHS_l_L2.shp +[option mapLayer3Color] +description = observe.config.map.layer3.color +key = map.layer3.color +type = color +defaultValue = java.awt.Color[r=127,g=183,b=255] + [option mapLayer4] description = observe.config.map.layer4.description key = map.layer4.path type = file defaultValue = ${resources.directory}/map/shapeFiles/borders/WDBII_border_l_L1.shp +[option mapLayer4Color] +description = observe.config.map.layer4.color +key = map.layer4.color +type = color +defaultValue = java.awt.Color[r=251,g=233,b=215] + [option mapLayer5] description = observe.config.map.layer5.description key = map.layer5.path type = file defaultValue = ${resources.directory}/map/shapeFiles/zee/eez_v11_lowres.shp +[option mapLayer5Color] +description = observe.config.map.layer5.color +key = map.layer5.color +type = color +defaultValue = java.awt.Color[r=130,g=244,b=249] + [option mapLayer6] description = observe.config.map.layer6.description key = map.layer6.path @@ -564,10 +600,29 @@ description = observe.config.map.ps.style.description key = map.ps.style.path type = file defaultValue = ${resources.directory}/map/ps-style.xml +final = true + +[option mapPsStyleObservationsTextSize] +description = observe.config.map.ps.style.observations.text.size +key = map.ps.style.observations.text.size +type = Integer +defaultValue = 14 + +[option mapPsStyleObservationsTextColor] +description = observe.config.map.ps.style.observations.text.color +key = map.ps.style.observations.text.color +type = color +defaultValue = java.awt.Color[r=0,g=0,b=0] -[option mapPsStyleObservationsColor] -description = observe.config.map.ps.style.observations.color -key = map.ps.style.observations.color +[option mapPsStyleObservationsLineColor] +description = observe.config.map.ps.style.observations.line.color +key = map.ps.style.observations.line.color +type = color +defaultValue = java.awt.Color[r=255,g=0,b=0] + +[option mapPsStyleObservationsPointColor] +description = observe.config.map.ps.style.observations.point.color +key = map.ps.style.observations.point.color type = color defaultValue = java.awt.Color[r=0,g=255,b=0] @@ -576,6 +631,7 @@ description = observe.config.map.ll.style.description key = map.ll.style.path type = file defaultValue = ${resources.directory}/map/ll-style.xml +final = true [option mapLlStyleObservationsLineTripColor] description = observe.config.map.ll.style.observations.line.trip.color ===================================== client/configuration/src/main/i18n/getters/config.getter ===================================== @@ -42,11 +42,17 @@ observe.config.longlineActivityPairing.maxDistance observe.config.longlineActivityPairing.maxTime observe.config.longlineLandingPart.defaultWeightMeasureMethod observe.config.map.background.description +observe.config.map.dateFormat +observe.config.map.layer1.color observe.config.map.layer1.description observe.config.map.layer10.description +observe.config.map.layer2.color observe.config.map.layer2.description +observe.config.map.layer3.color observe.config.map.layer3.description +observe.config.map.layer4.color observe.config.map.layer4.description +observe.config.map.layer5.color observe.config.map.layer5.description observe.config.map.layer6.description observe.config.map.layer7.description @@ -62,7 +68,10 @@ observe.config.map.ll.style.observations.line.setting.color observe.config.map.ll.style.observations.line.trip.color observe.config.map.ll.style.observations.point.color observe.config.map.ps.style.description -observe.config.map.ps.style.observations.color +observe.config.map.ps.style.observations.line.color +observe.config.map.ps.style.observations.point.color +observe.config.map.ps.style.observations.text.color +observe.config.map.ps.style.observations.text.size observe.config.navigationIconsPath.description observe.config.observation.activitysDetaillees observe.config.observation.fauneAssociee ===================================== client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java ===================================== @@ -87,6 +87,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Date; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -417,7 +418,7 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig } public void detectLocalDataBase() { - boolean hasLocalStorage = new File(getLocalDBDirectory(), ClientConfig.DB_NAME).exists(); + boolean hasLocalStorage = new File(getLocalDBDirectory(), DB_NAME).exists(); setLocalStorageExist(hasLocalStorage); if (!hasLocalStorage) { log.info(t("observe.init.no.local.db.detected", getLocalDBDirectory())); @@ -618,6 +619,24 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig return layers; } + @Override + public Map<String, String> getVariables(TripMapContentBuilder builder) { + Map<String, String> replaceMapping = new LinkedHashMap<>(); + for (String variableName : builder.getVariableNames()) { + Object variable = get(variableName); + if (variable == null) { + continue; + } + if (variable instanceof Color) { + variable = getColorToHex((Color) variable); + } else { + variable = String.valueOf(variable); + } + replaceMapping.put(variableName, variable.toString()); + } + return replaceMapping; + } + public File newBackupDataFile() { return new File(getBackupDirectory(), String.format(BACKUP_DB_PATTERN, getBuildVersion().toString().replaceAll("\\.", "_"), new Date())); } ===================================== client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java ===================================== @@ -301,9 +301,27 @@ public class ClientConfigUI extends JXTitledPanel { "ui"); helper.addOption(ClientConfigOption.MAP_BACKGROUND_COLOR); - ClientConfig.MAP_LAYERS.forEach(helper::addOption); + helper.addOption(ClientConfigOption.MAP_LAYER1); + helper.addOption(ClientConfigOption.MAP_LAYER1_COLOR); + helper.addOption(ClientConfigOption.MAP_LAYER2); + helper.addOption(ClientConfigOption.MAP_LAYER2_COLOR); + helper.addOption(ClientConfigOption.MAP_LAYER3); + helper.addOption(ClientConfigOption.MAP_LAYER3_COLOR); + helper.addOption(ClientConfigOption.MAP_LAYER4); + helper.addOption(ClientConfigOption.MAP_LAYER4_COLOR); + helper.addOption(ClientConfigOption.MAP_LAYER5); + helper.addOption(ClientConfigOption.MAP_LAYER5_COLOR); + helper.addOption(ClientConfigOption.MAP_LAYER6); + helper.addOption(ClientConfigOption.MAP_LAYER7); + helper.addOption(ClientConfigOption.MAP_LAYER8); + helper.addOption(ClientConfigOption.MAP_LAYER9); + helper.addOption(ClientConfigOption.MAP_LAYER10); + helper.addOption(ClientConfigOption.MAP_DATE_FORMAT); helper.addOption(ClientConfigOption.MAP_PS_STYLE_FILE); - helper.addOption(ClientConfigOption.MAP_PS_STYLE_OBSERVATIONS_COLOR); + helper.addOption(ClientConfigOption.MAP_PS_STYLE_OBSERVATIONS_TEXT_COLOR); + helper.addOption(ClientConfigOption.MAP_PS_STYLE_OBSERVATIONS_TEXT_SIZE); + helper.addOption(ClientConfigOption.MAP_PS_STYLE_OBSERVATIONS_LINE_COLOR); + helper.addOption(ClientConfigOption.MAP_PS_STYLE_OBSERVATIONS_POINT_COLOR); helper.addOption(ClientConfigOption.MAP_LL_STYLE_FILE); helper.addOption(ClientConfigOption.MAP_LL_STYLE_OBSERVATIONS_LINE_TRIP_COLOR); helper.addOption(ClientConfigOption.MAP_LL_STYLE_OBSERVATIONS_LINE_SETTING_COLOR); @@ -312,8 +330,6 @@ public class ClientConfigUI extends JXTitledPanel { helper.addOption(ClientConfigOption.MAP_LL_STYLE_LOGBOOK_LINE_TRIP_COLOR); helper.addOption(ClientConfigOption.MAP_LL_STYLE_LOGBOOK_LINE_SETTING_COLOR); helper.addOption(ClientConfigOption.MAP_LL_STYLE_LOGBOOK_LINE_HAULING_COLOR); - helper.addOption(ClientConfigOption.MAP_LL_STYLE_LOGBOOK_POINT_COLOR); - } private void addDataOptions(ObserveConfigUIBuilder helper, ObserveSwingDataSource dataSource) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapContentBuilderSupport.java ===================================== @@ -22,7 +22,7 @@ package fr.ird.observe.client.datasource.editor.api.content.data.map; * #L% */ -import fr.ird.observe.client.configuration.ClientConfig; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.dto.I18nEnumHelper; import fr.ird.observe.dto.data.TripMapConfig; import fr.ird.observe.dto.data.TripMapConfigDto; @@ -55,7 +55,10 @@ import org.geotools.styling.StyledLayerDescriptor; import org.geotools.styling.UserLayer; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; +import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Point; +import org.locationtech.jts.geom.Polygon; +import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.referencing.FactoryException; @@ -67,8 +70,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; import java.util.HashSet; -import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -89,33 +93,41 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil protected static final String LOGBOOK_ZONE_LAYER_NAME = "Logbook zone"; protected static final String LOGBOOK_LINES_LAYER_NAME = "Logbook lines"; protected static final String LOGBOOK_POINTS_LAYER_NAME = "Logbook points"; - - protected static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd"); + protected static final Set<String> DEFAULT_VARIABLE_NAMES = ImmutableSet.of( + "mapLayer1Color", + "mapLayer2Color", + "mapLayer3Color", + "mapLayer4Color", + "mapLayer5Color" + ); private static final Logger log = LogManager.getLogger(TripMapContentBuilderSupport.class); + protected static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd"); + protected final List<ObserveMapPaneLegendItem> legendItems; protected final List<TripMapPoint> notValidPoints = new LinkedList<>(); protected final Set<TripMapPointType> acceptedTripPointTypes; + protected final SimpleFeatureBuilder lineBuilder; + private final boolean withLabelLine; + private final SimpleFeatureBuilder pointBuilder; protected MapContent mapContent; protected StyledLayerDescriptor styledLayerDescriptor; - + private GeometryFactory geometryFactory; public static TripMapContentBuilderSupport of(TripMapConfig config, TripMapConfigDto tripMapConfig, TripMapDto tripMapDto, List<TripMapPoint> tripMapPoints) throws Exception { TripMapContentBuilderSupport builder = (TripMapContentBuilderSupport) config.getTripMapContentBuilders().stream().filter(t -> t.accept(tripMapDto)).findFirst().orElseThrow(IllegalStateException::new); builder.reset(); + String mapDateFormat = config.getMapDateFormat(); + + try { + DATE_FORMAT = new SimpleDateFormat(mapDateFormat); + } catch (Exception e) { + // bad date format + log.error(String.format("Bad date format: %s, will use default one: MM-dd", mapDateFormat), e); + } File styleFile = builder.getStyleFile(config.getMapDirectory().toPath()); String content = Files.readString(styleFile.toPath()); - Map<String, String> replaceMapping = new LinkedHashMap<>(); - replaceMapping.put("mapPsStyleObservationsColor", ClientConfig.getColorToHex(config.getMapPsStyleObservationsColor())); - replaceMapping.put("mapLlStyleObservationsLineTripColor", ClientConfig.getColorToHex(config.getMapLlStyleObservationsLineTripColor())); - replaceMapping.put("mapLlStyleObservationsLineSettingColor", ClientConfig.getColorToHex(config.getMapLlStyleObservationsLineSettingColor())); - replaceMapping.put("mapLlStyleObservationsLineHaulingColor", ClientConfig.getColorToHex(config.getMapLlStyleObservationsLineHaulingColor())); - replaceMapping.put("mapLlStyleObservationsPointColor", ClientConfig.getColorToHex(config.getMapLlStyleObservationsPointColor())); - replaceMapping.put("mapLlStyleLogbookLineTripColor", ClientConfig.getColorToHex(config.getMapLlStyleLogbookLineTripColor())); - replaceMapping.put("mapLlStyleLogbookLineSettingColor", ClientConfig.getColorToHex(config.getMapLlStyleLogbookLineSettingColor())); - replaceMapping.put("mapLlStyleLogbookLineHaulingColor", ClientConfig.getColorToHex(config.getMapLlStyleLogbookLineHaulingColor())); - replaceMapping.put("mapLlStyleLogbookPointColor", ClientConfig.getColorToHex(config.getMapLlStyleLogbookPointColor())); - + Map<String, String> replaceMapping = config.getVariables(builder); for (Map.Entry<String, String> entry : replaceMapping.entrySet()) { content = content.replaceAll("\\$\\{" + entry.getKey() + "}", entry.getValue()); } @@ -127,16 +139,74 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil for (File layerFile : config.getMapLayerFiles()) { builder.addLayer(layerFile); } - builder.addLines(tripMapConfig, tripMapPoints); builder.addPoints(tripMapConfig, tripMapPoints); - return builder; } - protected TripMapContentBuilderSupport(Set<TripMapPointType> acceptedTripPointTypes) { + protected static SimpleFeatureBuilder createLineBuilder(boolean withLabel) { + SimpleFeatureTypeBuilder lineFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); + lineFeatureTypeBuilder.setName("lineBuilder"); + try { + lineFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); + } catch (FactoryException e) { + throw new IllegalStateException("Can't decode CRS...", e); + } + lineFeatureTypeBuilder.add("line", LineString.class); + if (withLabel) { + lineFeatureTypeBuilder.add("label", String.class); + } + lineFeatureTypeBuilder.add("type", String.class); + return new SimpleFeatureBuilder(lineFeatureTypeBuilder.buildFeatureType()); + + } + + protected static SimpleFeatureBuilder createPolygoneBuilder(@SuppressWarnings("SameParameterValue") String name) { + SimpleFeatureTypeBuilder polygonFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); + polygonFeatureTypeBuilder.setName(name); + try { + polygonFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); + } catch (FactoryException e) { + throw new IllegalStateException("Can't decode CRS...", e); + } + polygonFeatureTypeBuilder.add("zone", Polygon.class); + polygonFeatureTypeBuilder.add("label", String.class); + polygonFeatureTypeBuilder.add("type", String.class); + SimpleFeatureType polygonFeatureType = polygonFeatureTypeBuilder.buildFeatureType(); + return new SimpleFeatureBuilder(polygonFeatureType); + } + + protected static SimpleFeatureBuilder createPointBuilder() { + + SimpleFeatureTypeBuilder pointFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); + pointFeatureTypeBuilder.setName("point Builder"); + try { + pointFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); + } catch (FactoryException e) { + throw new IllegalStateException("Can't decode CRS...", e); + } + pointFeatureTypeBuilder.add("point", Point.class); + pointFeatureTypeBuilder.add("label", String.class); + pointFeatureTypeBuilder.add("pointType", String.class); + + SimpleFeatureType pointFeatureType = pointFeatureTypeBuilder.buildFeatureType(); + return new SimpleFeatureBuilder(pointFeatureType); + } + + protected static Coordinate[] create(TripMapPoint... points) { + return Arrays.stream(points).map(TripMapContentBuilderSupport::create).toArray(Coordinate[]::new); + } + + protected static Coordinate create(TripMapPoint point) { + return new Coordinate(point.getLongitude(), point.getLatitude()); + } + + protected TripMapContentBuilderSupport(Set<TripMapPointType> acceptedTripPointTypes, SimpleFeatureBuilder lineBuilder) { + this.lineBuilder = lineBuilder; this.legendItems = new ArrayList<>(); this.acceptedTripPointTypes = acceptedTripPointTypes; + this.withLabelLine = lineBuilder.getFeatureType().getAttributeCount() == 3; + this.pointBuilder = createPointBuilder(); } @Override @@ -174,28 +244,22 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil FileDataStore store = FileDataStoreFinder.getDataStore(layerFile); SimpleFeatureSource featureSource = store.getFeatureSource(); Style style = SLD.createSimpleStyle(featureSource.getSchema()); - style = findStyle(styledLayerDescriptor, store.getNames().get(0).getLocalPart(), null, style); + style = findStyle(styledLayerDescriptor, store.getNames().get(0).getLocalPart(), style); Layer layer = new FeatureLayer(featureSource, style, layerFile.getName()); mapContent.addLayer(layer); } - public void addPoints(List<TripMapPoint> tripMapPoints, String layerName, String notValidPointsLabel) throws FactoryException { - - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder pointFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - pointFeatureTypeBuilder.setName("point Builder"); - pointFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - pointFeatureTypeBuilder.add("point", Point.class); - pointFeatureTypeBuilder.add("label", String.class); - pointFeatureTypeBuilder.add("pointType", String.class); - - SimpleFeatureType pointFeatureType = pointFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder pointBuilder = new SimpleFeatureBuilder(pointFeatureType); + protected void addPoint(DefaultFeatureCollection pointsFeatures, TripMapPoint tripMapPoint) { + Point point = geometryFactory.createPoint(create(tripMapPoint)); + pointBuilder.add(point); + pointBuilder.add(formatDate(tripMapPoint.getTime())); + pointBuilder.add(tripMapPoint.getType().name()); + pointsFeatures.add(pointBuilder.buildFeature(null)); + } + public void addPoints(List<TripMapPoint> tripMapPoints, String layerName, String notValidPointsLabel) { DefaultFeatureCollection pointsFeatures = new DefaultFeatureCollection(); - - Style stylePoints = findStyle(styledLayerDescriptor, layerName, null); + Style stylePoints = findStyle(styledLayerDescriptor, layerName); Set<TripMapPointType> pointTypeInLegend = new HashSet<>(); for (TripMapPoint tripMapPoint : tripMapPoints) { @@ -203,27 +267,11 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil notValidPoints.add(tripMapPoint); continue; } - Coordinate coordinate = new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()); + addPoint(pointsFeatures, tripMapPoint); + // register point type in legend TripMapPointType type = tripMapPoint.getType(); - - Point point = geometryFactory.createPoint(coordinate); - pointBuilder.add(point); - pointBuilder.add(DATE_FORMAT.format(tripMapPoint.getTime())); - pointBuilder.add(type.name()); - pointsFeatures.add(pointBuilder.buildFeature(null)); - - // add point in legend - if (acceptedTripPointTypes.contains(type) && !pointTypeInLegend.contains(type)) { - point = geometryFactory.createPoint(ObserveMapPaneLegendItem.pointCoordinates()); - pointBuilder.add(point); - pointBuilder.add(""); - pointBuilder.add(type.name()); - ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( - pointBuilder.buildFeature(null), - stylePoints, - I18nEnumHelper.getLabel(type)); - legendItems.add(legendPoint); + if (acceptedTripPointTypes.contains(type)) { pointTypeInLegend.add(type); } } @@ -231,21 +279,23 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil Layer pointsLayer = new FeatureLayer(pointsFeatures, stylePoints, layerName); mapContent.addLayer(pointsLayer); } + + for (TripMapPointType type : pointTypeInLegend) { + addPointLegend(stylePoints, type.name(), I18nEnumHelper.getLabel(type)); + } if (!notValidPoints.isEmpty()) { - Point point = geometryFactory.createPoint(ObserveMapPaneLegendItem.pointCoordinates()); - pointBuilder.add(point); - pointBuilder.add(""); - pointBuilder.add("notValidPoint"); - ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( - pointBuilder.buildFeature(null), - stylePoints, - t(notValidPointsLabel, notValidPoints.size())); - legendItems.add(legendPoint); + addPointLegend(stylePoints, "notValidPoint", t(notValidPointsLabel, notValidPoints.size())); } } + protected GeometryFactory getGeometryFactory() { + if (geometryFactory == null) { + geometryFactory = JTSFactoryFinder.getGeometryFactory(); + } + return geometryFactory; + } - protected Style findStyle(StyledLayerDescriptor styledLayerDescriptor, final String layerName, String styleName, Style defaultStyle) { + protected Style findStyle(StyledLayerDescriptor styledLayerDescriptor, final String layerName, Style defaultStyle) { Optional<StyledLayer> styledLayerOptional = styledLayerDescriptor.layers().stream().filter(input -> input.getName().equals(layerName)).findFirst(); Style style = defaultStyle; if (styledLayerOptional.isPresent()) { @@ -260,8 +310,11 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil style = styles[0]; } else { for (Style styleTmp : styles) { - if (StringUtils.isBlank(styleName) && styleTmp.isDefault() || styleTmp.getName().equals(styleName)) { + StringUtils.isBlank(null); + if (styleTmp.isDefault()) { style = styleTmp; + } else { + styleTmp.getName(); } } } @@ -269,12 +322,47 @@ public abstract class TripMapContentBuilderSupport implements TripMapContentBuil return style; } - protected Style findStyle(StyledLayerDescriptor styledLayerDescriptor, final String layerName, String styleName) { - Style style = findStyle(styledLayerDescriptor, layerName, styleName, null); + protected Style findStyle(StyledLayerDescriptor styledLayerDescriptor, final String layerName) { + Style style = findStyle(styledLayerDescriptor, layerName, null); if (style == null) { - throw new RuntimeException(String.format("No style found for layer name '%s' and style name '%s'", layerName, styleName)); + throw new RuntimeException(String.format("No style found for layer name '%s' and style name '%s'", layerName, null)); } return style; } + protected String formatDate(Date date) { + return DATE_FORMAT.format(date); + } + + protected void addLine(DefaultFeatureCollection linesFeatures, String lineName, Coordinate[] coordinates, Date date) { + LineString line = getGeometryFactory().createLineString(coordinates); + lineBuilder.add(line); + if (date != null) { + lineBuilder.add(formatDate(date)); + } + lineBuilder.add(lineName); + linesFeatures.add(lineBuilder.buildFeature(null)); + } + + protected void addLineLegend(Style styleLines, String legendName, String legendLabel) { + LineString line = getGeometryFactory().createLineString(ObserveMapPaneLegendItem.lineCoordinates()); + lineBuilder.add(line); + if (withLabelLine) { + lineBuilder.add(""); + } + lineBuilder.add(legendName); + SimpleFeature simpleFeature = lineBuilder.buildFeature(null); + ObserveMapPaneLegendItem legendTripDay = new ObserveMapPaneLegendItem(simpleFeature, styleLines, legendLabel); + legendItems.add(legendTripDay); + } + + protected void addPointLegend(Style stylePoints, String legendName, String legendLabel) { + Point point = getGeometryFactory().createPoint(ObserveMapPaneLegendItem.pointCoordinates()); + pointBuilder.add(point); + pointBuilder.add(""); + pointBuilder.add(legendName); + SimpleFeature simpleFeature = pointBuilder.buildFeature(null); + ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem(simpleFeature, stylePoints, legendLabel); + legendItems.add(legendPoint); + } } ===================================== client/datasource/editor/ll/pom.xml ===================================== @@ -18,7 +18,8 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> @@ -231,10 +232,6 @@ <groupId>org.geotools</groupId> <artifactId>gt-render</artifactId> </dependency> - <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-referencing</artifactId> - </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-opengis</artifactId> ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripMapContentBuilder.java ===================================== @@ -24,7 +24,6 @@ package fr.ird.observe.client.datasource.editor.ll.data.common; import com.google.auto.service.AutoService; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.client.datasource.editor.api.content.data.map.ObserveMapPaneLegendItem; import fr.ird.observe.client.datasource.editor.api.content.data.map.TripMapContentBuilderSupport; import fr.ird.observe.dto.data.TripAware; import fr.ird.observe.dto.data.TripMapConfigDto; @@ -33,21 +32,16 @@ import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; import org.geotools.feature.DefaultFeatureCollection; import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.jts.JTSFactoryFinder; import org.geotools.map.FeatureLayer; import org.geotools.map.Layer; -import org.geotools.referencing.CRS; import org.geotools.styling.Style; import org.locationtech.jts.geom.Coordinate; -import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.LineString; import org.locationtech.jts.geom.Polygon; import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; import java.util.LinkedList; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import static io.ultreia.java4all.i18n.I18n.n; @@ -62,6 +56,8 @@ import static io.ultreia.java4all.i18n.I18n.t; @AutoService(fr.ird.observe.dto.data.TripMapContentBuilder.class) public class TripMapContentBuilder extends TripMapContentBuilderSupport { + private final SimpleFeatureBuilder polygonBuilder; + public TripMapContentBuilder() { super(ImmutableSet.of( TripMapPointType.llActivityObs, @@ -76,7 +72,22 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { TripMapPointType.llActivityLogbookWithSettingEnd, TripMapPointType.llActivityLogbookWithHaulingStart, TripMapPointType.llActivityLogbookWithHaulingEnd - )); + ), createLineBuilder(false)); + polygonBuilder = createPolygoneBuilder("longlineFishingZoneBuilder"); + } + + @Override + public Set<String> getVariableNames() { + return ImmutableSet.<String>builder().addAll(DEFAULT_VARIABLE_NAMES) + .add("mapLlStyleObservationsLineTripColor") + .add("mapLlStyleObservationsLineSettingColor") + .add("mapLlStyleObservationsLineHaulingColor") + .add("mapLlStyleObservationsPointColor") + .add("mapLlStyleLogbookLineTripColor") + .add("mapLlStyleLogbookLineSettingColor") + .add("mapLlStyleLogbookLineHaulingColor") + .add("mapLlStyleLogbookPointColor") + .build(); } @Override @@ -90,7 +101,7 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { } @Override - public void addLines(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) throws Exception { + public void addLines(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) { if (tripMapConfig.isAddObservations()) { addObservationFishingZone(tripMapPoints); addObservationLine(tripMapPoints); @@ -102,7 +113,7 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { } @Override - public void addPoints(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) throws Exception { + public void addPoints(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) { if (tripMapConfig.isAddObservations()) { addPoints(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), OBSERVATION_POINTS_LAYER_NAME, n("observe.ui.datasource.editor.content.map.observation.points.not.valid")); } @@ -111,21 +122,8 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { } } - private void addObservationFishingZone(List<TripMapPoint> tripMapPoints) throws Exception { - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder polygonFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - polygonFeatureTypeBuilder.setName("longlineFishingZoneBuilder"); - polygonFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - polygonFeatureTypeBuilder.add("zone", Polygon.class); - polygonFeatureTypeBuilder.add("label", String.class); - polygonFeatureTypeBuilder.add("type", String.class); - - SimpleFeatureType polygonFeatureType = polygonFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder polygonBuilder = new SimpleFeatureBuilder(polygonFeatureType); - + private void addObservationFishingZone(List<TripMapPoint> tripMapPoints) { DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); - for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); @@ -138,48 +136,18 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { && tripMapPoint1.getType().equals(TripMapPointType.llActivityObsWithHaulingStart) && tripMapPoint2.getType().equals(TripMapPointType.llActivityObsWithSettingEnd) && tripMapPoint3.getType().equals(TripMapPointType.llActivityObsWithSettingStart)) { - - Coordinate[] coordinates = { - new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), - new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), - new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), - new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), - new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) - }; - - Polygon polygon = geometryFactory.createPolygon(coordinates); - //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex - polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); - polygonBuilder.add("longlineFishingZone"); - SimpleFeature feature = polygonBuilder.buildFeature(null); - polygonsFeatures.add(feature); - + createZone(polygonsFeatures, tripMapPoint, tripMapPoint1, tripMapPoint2, tripMapPoint3); } } - if (!polygonsFeatures.isEmpty()) { - Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_ZONE_LAYER_NAME, null); + Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_ZONE_LAYER_NAME); Layer layerLines = new FeatureLayer(polygonsFeatures, styleLines, OBSERVATION_ZONE_LAYER_NAME); mapContent.addLayer(layerLines); } } - private void addLogbookFishingZone(List<TripMapPoint> tripMapPoints) throws Exception { - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder polygonFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - polygonFeatureTypeBuilder.setName("longlineFishingZoneBuilder"); - polygonFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - polygonFeatureTypeBuilder.add("zone", Polygon.class); - polygonFeatureTypeBuilder.add("label", String.class); - polygonFeatureTypeBuilder.add("type", String.class); - - SimpleFeatureType polygonFeatureType = polygonFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder polygonBuilder = new SimpleFeatureBuilder(polygonFeatureType); - + private void addLogbookFishingZone(List<TripMapPoint> tripMapPoints) { DefaultFeatureCollection polygonsFeatures = new DefaultFeatureCollection(); - for (int indexPoint = 3; indexPoint < tripMapPoints.size(); indexPoint++) { TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); TripMapPoint tripMapPoint1 = tripMapPoints.get(indexPoint - 1); @@ -192,149 +160,58 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { && tripMapPoint1.getType().equals(TripMapPointType.llActivityLogbookWithHaulingStart) && tripMapPoint2.getType().equals(TripMapPointType.llActivityLogbookWithSettingEnd) && tripMapPoint3.getType().equals(TripMapPointType.llActivityLogbookWithSettingStart)) { - - Coordinate[] coordinates = { - new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()), - new Coordinate(tripMapPoint2.getLongitude(), tripMapPoint2.getLatitude()), - new Coordinate(tripMapPoint1.getLongitude(), tripMapPoint1.getLatitude()), - new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), - new Coordinate(tripMapPoint3.getLongitude(), tripMapPoint3.getLatitude()) - }; - - - Polygon polygon = geometryFactory.createPolygon(coordinates); - //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex - polygonBuilder.add(polygon); - polygonBuilder.add(DATE_FORMAT.format(tripMapPoint3.getTime())); - polygonBuilder.add("longlineFishingZone"); - SimpleFeature feature = polygonBuilder.buildFeature(null); - polygonsFeatures.add(feature); - + createZone(polygonsFeatures, tripMapPoint, tripMapPoint1, tripMapPoint2, tripMapPoint3); } } - if (!polygonsFeatures.isEmpty()) { - Style styleLines = findStyle(styledLayerDescriptor, LOGBOOK_ZONE_LAYER_NAME, null); + Style styleLines = findStyle(styledLayerDescriptor, LOGBOOK_ZONE_LAYER_NAME); Layer layerLines = new FeatureLayer(polygonsFeatures, styleLines, LOGBOOK_ZONE_LAYER_NAME); mapContent.addLayer(layerLines); } } - private void addObservationLine(List<TripMapPoint> tripMapPoints) throws Exception { - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder lineFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - lineFeatureTypeBuilder.setName("longlineSettingBuilder"); - lineFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - lineFeatureTypeBuilder.add("line", LineString.class); - lineFeatureTypeBuilder.add("type", String.class); - - SimpleFeatureType lineFeatureType = lineFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder lineBuilder = new SimpleFeatureBuilder(lineFeatureType); - + private void addObservationLine(List<TripMapPoint> tripMapPoints) { DefaultFeatureCollection linesFeatures = new DefaultFeatureCollection(); - List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { TripMapPoint tripMapPoint = tripMapPoints.get(indexPoint); TripMapPointType pointType = tripMapPoint.getType(); if (tripMapPoint.isValid() && indexPoint > 1) { - TripMapPoint previousTripMapPoint = tripMapPoints.get(indexPoint - 1); TripMapPointType previousTripMapPointType = previousTripMapPoint.getType(); if (previousTripMapPoint.isValid()) { - if ( - pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithSettingStart) - || - pointType.equals(TripMapPointType.llActivityObsWithHaulingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithHaulingStart)) { - + if (pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithSettingStart) + || pointType.equals(TripMapPointType.llActivityObsWithHaulingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityObsWithHaulingStart)) { found = true; - Coordinate[] coordinates = { - new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), - new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), - }; - + Coordinate[] coordinates = create(previousTripMapPoint, tripMapPoint); boolean setting = pointType.equals(TripMapPointType.llActivityObsWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - + addLine(linesFeatures, setting ? "setting" : "hauling", coordinates, null); defaultLineCoordinates.clear(); } } } - - if (tripMapPoint.isValid() && !(pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) - || pointType.equals(TripMapPointType.llActivityObsWithHaulingStart))) { - - defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); - + if (tripMapPoint.isValid() && !(pointType.equals(TripMapPointType.llActivityObsWithSettingEnd) || pointType.equals(TripMapPointType.llActivityObsWithHaulingStart))) { + defaultLineCoordinates.add(create(tripMapPoint)); } - - if ((pointType.equals(TripMapPointType.llActivityObsWithSettingStart) - || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { - - LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); - lineBuilder.add(lineString); - lineBuilder.add("trip"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - + if ((pointType.equals(TripMapPointType.llActivityObsWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { + addLine(linesFeatures, "trip", defaultLineCoordinates.toArray(new Coordinate[0]), null); defaultLineCoordinates.clear(); - } - - } - - Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_LINES_LAYER_NAME, null); + Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_LINES_LAYER_NAME); if (!linesFeatures.isEmpty()) { Layer layerLines = new FeatureLayer(linesFeatures, styleLines, OBSERVATION_LINES_LAYER_NAME); mapContent.addLayer(layerLines); } - if (found) { - // add line in legend - LineString line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); - lineBuilder.add(line); - lineBuilder.add("setting"); - - ObserveMapPaneLegendItem legendTripDay = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.obs.setting")); - legendItems.add(legendTripDay); - - line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); - lineBuilder.add(line); - lineBuilder.add("hauling"); - - legendTripDay = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.obs.hauling")); - legendItems.add(legendTripDay); + addLineLegend(styleLines, "setting", t("observe.ui.datasource.editor.content.map.legend.obs.setting")); + addLineLegend(styleLines, "hauling", t("observe.ui.datasource.editor.content.map.legend.obs.hauling")); } - } - private void addLogbookLine(List<TripMapPoint> tripMapPoints) throws Exception { - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder lineFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - lineFeatureTypeBuilder.setName("longlineSettingBuilder"); - lineFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - lineFeatureTypeBuilder.add("line", LineString.class); - lineFeatureTypeBuilder.add("type", String.class); - - SimpleFeatureType lineFeatureType = lineFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder lineBuilder = new SimpleFeatureBuilder(lineFeatureType); - + private void addLogbookLine(List<TripMapPoint> tripMapPoints) { DefaultFeatureCollection linesFeatures = new DefaultFeatureCollection(); - List<Coordinate> defaultLineCoordinates = new LinkedList<>(); boolean found = false; for (int indexPoint = 0; indexPoint < tripMapPoints.size(); indexPoint++) { @@ -349,72 +226,43 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingEnd) && previousTripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart)) { found = true; - Coordinate[] coordinates = { - new Coordinate(previousTripMapPoint.getLongitude(), previousTripMapPoint.getLatitude()), - new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()), - }; - + Coordinate[] coordinates = create(previousTripMapPoint, tripMapPoint); boolean setting = tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd); - LineString lineString = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineString); - lineBuilder.add(setting ? "setting" : "hauling"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - + addLine(linesFeatures, setting ? "setting" : "hauling", coordinates, null); defaultLineCoordinates.clear(); } } } - if (tripMapPoint.isValid() && - !(tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { - defaultLineCoordinates.add(new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude())); - + if (tripMapPoint.isValid() && !(tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingEnd) || tripMapPointType.equals(TripMapPointType.llActivityLogbookWithHaulingStart))) { + defaultLineCoordinates.add(create(tripMapPoint)); } - - if ((tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) - || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { - - LineString lineString = geometryFactory.createLineString(defaultLineCoordinates.toArray(new Coordinate[0])); - lineBuilder.add(lineString); - lineBuilder.add("trip"); - SimpleFeature feature = lineBuilder.buildFeature(null); - linesFeatures.add(feature); - + if ((tripMapPointType.equals(TripMapPointType.llActivityLogbookWithSettingStart) || indexPoint == tripMapPoints.size() - 1) && defaultLineCoordinates.size() > 1) { + addLine(linesFeatures, "trip", defaultLineCoordinates.toArray(new Coordinate[0]), null); defaultLineCoordinates.clear(); - } - - + } + Style styleLines = findStyle(styledLayerDescriptor, LOGBOOK_LINES_LAYER_NAME); + if (!linesFeatures.isEmpty()) { + Layer layerLines = new FeatureLayer(linesFeatures, styleLines, LOGBOOK_LINES_LAYER_NAME); + mapContent.addLayer(layerLines); } if (found) { - Style styleLines = findStyle(styledLayerDescriptor, LOGBOOK_LINES_LAYER_NAME, null); - if (!linesFeatures.isEmpty()) { - Layer layerLines = new FeatureLayer(linesFeatures, styleLines, LOGBOOK_LINES_LAYER_NAME); - mapContent.addLayer(layerLines); - } - - // add line in legend - LineString line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); - lineBuilder.add(line); - lineBuilder.add("setting"); - - ObserveMapPaneLegendItem legendTripDay = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.logbook.setting")); - legendItems.add(legendTripDay); - - line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); - lineBuilder.add(line); - lineBuilder.add("hauling"); - - legendTripDay = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.logbook.hauling")); - legendItems.add(legendTripDay); + addLineLegend(styleLines, "setting", t("observe.ui.datasource.editor.content.map.legend.logbook.setting")); + addLineLegend(styleLines, "hauling", t("observe.ui.datasource.editor.content.map.legend.logbook.hauling")); } } - + protected void createZone(DefaultFeatureCollection polygonsFeatures, + TripMapPoint tripMapPoint, + TripMapPoint tripMapPoint1, + TripMapPoint tripMapPoint2, + TripMapPoint tripMapPoint3) { + Coordinate[] coordinates = create(tripMapPoint3, tripMapPoint2, tripMapPoint1, tripMapPoint, tripMapPoint3); + Polygon polygon = getGeometryFactory().createPolygon(coordinates); + polygonBuilder.add(polygon); + polygonBuilder.add(formatDate(tripMapPoint3.getTime())); + polygonBuilder.add("longlineFishingZone"); + SimpleFeature feature = polygonBuilder.buildFeature(null); + polygonsFeatures.add(feature); + } } ===================================== client/datasource/editor/ll/src/main/resources/map/ll-style.xml ===================================== @@ -654,13 +654,13 @@ </NamedLayer> <NamedLayer> - <Name>World_EEZ_v8_2014</Name> + <Name>GSHHS_l_L1</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#82F4F9</CssParameter> + <CssParameter name="fill">${mapLayer1Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -673,13 +673,13 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L1</Name> + <Name>GSHHS_l_L6</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#FBE9D7</CssParameter> + <CssParameter name="fill">${mapLayer2Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -692,13 +692,32 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L6</Name> + <Name>GSHHS_l_L2</Name> + <UserStyle> + <FeatureTypeStyle> + <Rule> + <PolygonSymbolizer> + <Fill> + <CssParameter name="fill">${mapLayer3Color}</CssParameter> + </Fill> + <Stroke> + <!-- <CssParameter name="stroke">#7FB7FF</CssParameter>--> + <CssParameter name="stroke">${mapLayer3Color}</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </PolygonSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> + <NamedLayer> + <Name>WDBII_border_l_L1</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#F5F5FF</CssParameter> + <CssParameter name="fill">${mapLayer4Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -711,16 +730,16 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L2</Name> + <Name>eez_v11_lowres</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#7FB7FF</CssParameter> + <CssParameter name="fill">${mapLayer5Color}</CssParameter> </Fill> <Stroke> - <CssParameter name="stroke">#7FB7FF</CssParameter> + <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </PolygonSymbolizer> ===================================== client/datasource/editor/ps/pom.xml ===================================== @@ -18,7 +18,8 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> @@ -231,14 +232,6 @@ <groupId>org.geotools</groupId> <artifactId>gt-render</artifactId> </dependency> - <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-referencing</artifactId> - </dependency> - <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-opengis</artifactId> - </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripMapContentBuilder.java ===================================== @@ -24,7 +24,6 @@ package fr.ird.observe.client.datasource.editor.ps.data.common; import com.google.auto.service.AutoService; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.client.datasource.editor.api.content.data.map.ObserveMapPaneLegendItem; import fr.ird.observe.dto.data.TripAware; import fr.ird.observe.dto.data.TripMapConfigDto; import fr.ird.observe.dto.data.TripMapDto; @@ -32,23 +31,14 @@ import fr.ird.observe.dto.data.TripMapPoint; import fr.ird.observe.dto.data.TripMapPointType; import org.apache.commons.lang3.time.DateUtils; import org.geotools.feature.DefaultFeatureCollection; -import org.geotools.feature.simple.SimpleFeatureBuilder; -import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.jts.JTSFactoryFinder; import org.geotools.map.FeatureLayer; import org.geotools.map.Layer; -import org.geotools.referencing.CRS; import org.geotools.styling.Style; import org.locationtech.jts.geom.Coordinate; -import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.LineString; -import org.opengis.feature.simple.SimpleFeature; -import org.opengis.feature.simple.SimpleFeatureType; -import org.opengis.referencing.FactoryException; -import java.text.DateFormat; import java.util.LinkedList; import java.util.List; +import java.util.Set; import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; @@ -68,17 +58,17 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit TripMapPointType.psActivityObsInHarbour, TripMapPointType.psActivityObsWithFreeSchoolType, TripMapPointType.psActivityObsWithObjectSchoolType - )); + ), createLineBuilder(true)); } @Override - public boolean accept(TripMapDto tripMapDto) { - return TripAware.isSeineId(tripMapDto.getTripId()); - } - - @Override - public void addPoints(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) throws FactoryException { - addPoints(tripMapPoints, OBSERVATION_POINTS_LAYER_NAME, n("observe.ui.datasource.editor.content.map.observation.points.not.valid")); + public Set<String> getVariableNames() { + return ImmutableSet.<String>builder().addAll(DEFAULT_VARIABLE_NAMES) + .add("mapPsStyleObservationsTextColor") + .add("mapPsStyleObservationsTextSize") + .add("mapPsStyleObservationsLineColor") + .add("mapPsStyleObservationsPointColor") + .build(); } @Override @@ -87,97 +77,53 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit } @Override - public void addLines(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) throws FactoryException { - - GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); - - SimpleFeatureTypeBuilder lineFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); - lineFeatureTypeBuilder.setName("lineBuilder"); - lineFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - lineFeatureTypeBuilder.add("line", LineString.class); - lineFeatureTypeBuilder.add("label", String.class); - lineFeatureTypeBuilder.add("type", String.class); + public boolean accept(TripMapDto tripMapDto) { + return TripAware.isSeineId(tripMapDto.getTripId()); + } - SimpleFeatureType lineFeatureType = lineFeatureTypeBuilder.buildFeatureType(); - SimpleFeatureBuilder lineBuilder = new SimpleFeatureBuilder(lineFeatureType); + @Override + public void addPoints(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) { + addPoints(tripMapPoints, OBSERVATION_POINTS_LAYER_NAME, n("observe.ui.datasource.editor.content.map.observation.points.not.valid")); + } + @Override + public void addLines(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) { DefaultFeatureCollection linesFeatures = new DefaultFeatureCollection(); - - List<Coordinate> coordinatesByDay = null; - + List<Coordinate> coordinatesByDay = new LinkedList<>(); TripMapPoint previousPoint = null; - for (TripMapPoint point : tripMapPoints) { - if (previousPoint == null) { - coordinatesByDay = new LinkedList<>(); - } else if (!DateUtils.isSameDay(previousPoint.getTime(), point.getTime())) { - - if (coordinatesByDay.size() > 1) { - LineString line = geometryFactory.createLineString(coordinatesByDay.toArray(new Coordinate[0])); - lineBuilder.add(line); - lineBuilder.add(DATE_FORMAT.format(previousPoint.getTime())); - lineBuilder.add("tripDay"); - SimpleFeature feature = lineBuilder.buildFeature(null); - - linesFeatures.add(feature); - } - - Coordinate[] coordinates = { - new Coordinate(previousPoint.getLongitude(), previousPoint.getLatitude()), - new Coordinate(point.getLongitude(), point.getLatitude()), - }; - LineString lineBetweenTwoDays = geometryFactory.createLineString(coordinates); - lineBuilder.add(lineBetweenTwoDays); - lineBuilder.add(DateFormat.getDateInstance().format(previousPoint.getTime())); - lineBuilder.add("tripBetweenTwoDays"); - linesFeatures.add(lineBuilder.buildFeature(null)); - - coordinatesByDay = new LinkedList<>(); + Coordinate coordinate = create(point); + if (previousPoint != null && !DateUtils.isSameDay(previousPoint.getTime(), point.getTime())) { + // changing day + addTripDay(linesFeatures, coordinatesByDay, previousPoint); + addTripBetweenTwoDayS(linesFeatures, previousPoint, point); + coordinatesByDay.clear(); } - - Coordinate coordinate = new Coordinate(point.getLongitude(), point.getLatitude()); coordinatesByDay.add(coordinate); - previousPoint = point; } - - if (coordinatesByDay != null && coordinatesByDay.size() > 1) { - LineString line = geometryFactory.createLineString(coordinatesByDay.toArray(new Coordinate[0])); - lineBuilder.add(line); - lineBuilder.add(DATE_FORMAT.format(previousPoint.getTime())); - lineBuilder.add("tripDay"); - linesFeatures.add(lineBuilder.buildFeature(null)); + if (previousPoint != null) { + addTripDay(linesFeatures, coordinatesByDay, previousPoint); } - - Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_LINES_LAYER_NAME, null); - + Style styleLines = findStyle(styledLayerDescriptor, OBSERVATION_LINES_LAYER_NAME); if (!linesFeatures.isEmpty()) { Layer layerLines = new FeatureLayer(linesFeatures, styleLines, OBSERVATION_LINES_LAYER_NAME); mapContent.addLayer(layerLines); } + addLineLegend(styleLines, "tripDay", t("observe.ui.datasource.editor.content.map.legend.tripDay")); + addLineLegend(styleLines, "tripBetweenTwoDays", t("observe.ui.datasource.editor.content.map.legend.tripBetweenTwoDays")); + } + protected void addTripDay(DefaultFeatureCollection linesFeatures, List<Coordinate> coordinatesByDay, TripMapPoint previousPoint) { + if (coordinatesByDay.size() > 1) { + Coordinate[] coordinates = coordinatesByDay.toArray(new Coordinate[0]); + addLine(linesFeatures, "tripDay", coordinates, previousPoint.getTime()); + } + } - // add line in legend - LineString line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); - lineBuilder.add(line); - lineBuilder.add(""); - lineBuilder.add("tripDay"); - - ObserveMapPaneLegendItem legendTripDay = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.tripDay")); - legendItems.add(legendTripDay); - - lineBuilder.add(line); - lineBuilder.add(""); - lineBuilder.add("tripBetweenTwoDays"); - ObserveMapPaneLegendItem legendTripBetweenTwoDays = new ObserveMapPaneLegendItem( - lineBuilder.buildFeature(null), - styleLines, - t("observe.ui.datasource.editor.content.map.legend.tripBetweenTwoDays")); - legendItems.add(legendTripBetweenTwoDays); - + protected void addTripBetweenTwoDayS(DefaultFeatureCollection linesFeatures, TripMapPoint previousPoint, TripMapPoint point) { + Coordinate[] coordinates = create(previousPoint, point); + addLine(linesFeatures, "tripBetweenTwoDays", coordinates, previousPoint.getTime()); } } ===================================== client/datasource/editor/ps/src/main/resources/map/ps-style.xml ===================================== @@ -39,7 +39,7 @@ </ogc:Filter> <LineSymbolizer> <Stroke> - <CssParameter name="stroke">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="stroke">${mapPsStyleObservationsLineColor}</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </LineSymbolizer> @@ -53,10 +53,10 @@ </LinePlacement> </LabelPlacement> <Fill> - <CssParameter name="fill">#000000</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsTextColor}</CssParameter> </Fill> <Font> - <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-size">${mapPsStyleObservationsTextSize}</CssParameter> <CssParameter name="font-style">normal</CssParameter> <CssParameter name="font-family">Sans-Serif</CssParameter> </Font> @@ -74,7 +74,7 @@ </ogc:Filter> <LineSymbolizer> <Stroke> - <CssParameter name="stroke">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="stroke">${mapPsStyleObservationsLineColor}</CssParameter> <CssParameter name="stroke-width">2</CssParameter> <CssParameter name="stroke-dasharray">6 4</CssParameter> </Stroke> @@ -102,7 +102,7 @@ <Mark> <WellKnownName>Star</WellKnownName> <Fill> - <CssParameter name="fill">#00FF00</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsPointColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -129,7 +129,7 @@ <Mark> <WellKnownName>ttf://Serif#U+00B7</WellKnownName> <Fill> - <CssParameter name="fill">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsPointColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -156,7 +156,7 @@ <Mark> <WellKnownName>ttf://Serif#U+25C6</WellKnownName> <Fill> - <CssParameter name="fill">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsPointColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -183,7 +183,7 @@ <Mark> <WellKnownName>ttf://Serif#U+002B</WellKnownName> <Fill> - <CssParameter name="fill">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsPointColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -210,7 +210,7 @@ <Mark> <WellKnownName>ttf://Serif#U+0021</WellKnownName> <Fill> - <CssParameter name="fill">${mapPsStyleObservationsColor}</CssParameter> + <CssParameter name="fill">${mapPsStyleObservationsPointColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -227,13 +227,13 @@ </NamedLayer> <NamedLayer> - <Name>World_EEZ_v8_2014</Name> + <Name>GSHHS_l_L1</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#82F4F9</CssParameter> + <CssParameter name="fill">${mapLayer1Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -246,13 +246,13 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L1</Name> + <Name>GSHHS_l_L6</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#FBE9D7</CssParameter> + <CssParameter name="fill">${mapLayer2Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -265,13 +265,32 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L6</Name> + <Name>GSHHS_l_L2</Name> + <UserStyle> + <FeatureTypeStyle> + <Rule> + <PolygonSymbolizer> + <Fill> + <CssParameter name="fill">${mapLayer3Color}</CssParameter> + </Fill> + <Stroke> + <!-- <CssParameter name="stroke">#7FB7FF</CssParameter>--> + <CssParameter name="stroke">${mapLayer3Color}</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </PolygonSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> + <NamedLayer> + <Name>WDBII_border_l_L1</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#F5F5FF</CssParameter> + <CssParameter name="fill">${mapLayer4Color}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -284,16 +303,16 @@ </NamedLayer> <NamedLayer> - <Name>GSHHS_l_L2</Name> + <Name>eez_v11_lowres</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> - <CssParameter name="fill">#7FB7FF</CssParameter> + <CssParameter name="fill">${mapLayer5Color}</CssParameter> </Fill> <Stroke> - <CssParameter name="stroke">#7FB7FF</CssParameter> + <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </PolygonSymbolizer> ===================================== client/i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -89,11 +89,17 @@ observe.config.longlineActivityPairing.maxDistance=Longline activity pairing max observe.config.longlineActivityPairing.maxTime=Longline activity pairing max time (mn) observe.config.longlineLandingPart.defaultWeightMeasureMethod=Default weight measure method to use for a new longline landing part observe.config.map.background.description=Color of background +observe.config.map.dateFormat=Date format +observe.config.map.layer1.color=Fill color for layer 1 observe.config.map.layer1.description=File (shapefile) for layer 1 of map observe.config.map.layer10.description=File (shapefile) for layer 10 of map +observe.config.map.layer2.color=Fill color for layer 2 observe.config.map.layer2.description=File (shapefile) for layer 2 of map +observe.config.map.layer3.color=Fill color for layer 3 observe.config.map.layer3.description=File (shapefile) for layer 3 of map +observe.config.map.layer4.color=Fill color for layer 4 observe.config.map.layer4.description=File (shapefile) for layer 4 of map +observe.config.map.layer5.color=Fill color for layer 5 observe.config.map.layer5.description=File (shapefile) for layer 5 of map observe.config.map.layer6.description=File (shapefile) for layer 6 of map observe.config.map.layer7.description=File (shapefile) for layer 7 of map @@ -109,7 +115,10 @@ observe.config.map.ll.style.observations.line.setting.color=[LL] Observations Li observe.config.map.ll.style.observations.line.trip.color=[LL] Observations Line trip color observe.config.map.ll.style.observations.point.color=[LL] Observations point color observe.config.map.ps.style.description=[Seine] File of styles used in map -observe.config.map.ps.style.observations.color=[Seine] Color for observations data +observe.config.map.ps.style.observations.line.color=[Seine] Color for observations lines +observe.config.map.ps.style.observations.point.color=[Seine] Color for observations points +observe.config.map.ps.style.observations.text.color=[Seine] Color for observations text +observe.config.map.ps.style.observations.text.size=[Seine] Size for observations text observe.config.navigationIconsPath.description=Default navigation icons path. observe.config.observation.activitysDetaillees=Observation of detailled activities observe.config.observation.fauneAssociee=Observation of non target ===================================== client/i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -89,11 +89,17 @@ observe.config.longlineActivityPairing.maxDistance=Longline activity pairing max observe.config.longlineActivityPairing.maxTime=Longline activity pairing max time (mn) \#TODO observe.config.longlineLandingPart.defaultWeightMeasureMethod=Default weight measure method to use for a new longline landing part \#TODO observe.config.map.background.description=Color del fondo del mapa +observe.config.map.dateFormat=Date format +observe.config.map.layer1.color=Fill color for layer 1 observe.config.map.layer1.description=Archivo (shapeFiles) del primer calco del mapa observe.config.map.layer10.description=Archivo (shapeFiles) del décimo calco del mapa +observe.config.map.layer2.color=Fill color for layer 2 observe.config.map.layer2.description=Archivo (shapeFiles) del segundo calco del mapa +observe.config.map.layer3.color=Fill color for layer 3 observe.config.map.layer3.description=Archivo (shapeFiles) del tercero calco del mapa +observe.config.map.layer4.color=Fill color for layer 4 observe.config.map.layer4.description=Archivo (shapeFiles) del cuarto calco del mapa +observe.config.map.layer5.color=Fill color for layer 5 observe.config.map.layer5.description=Archivo (shapeFiles) del quinto calco del mapa observe.config.map.layer6.description=Archivo (shapeFiles) del sexto calco del mapa observe.config.map.layer7.description=Archivo (shapeFiles) del séptimo calco del mapa @@ -109,7 +115,10 @@ observe.config.map.ll.style.observations.line.setting.color=[LL] Observations Li observe.config.map.ll.style.observations.line.trip.color=[LL] Observations Line trip color observe.config.map.ll.style.observations.point.color=[LL] Observations point color observe.config.map.ps.style.description=[Seina] Archivo de los estilos a aplicar sobre los calcos del mapa \#TODO -observe.config.map.ps.style.observations.color=[Seine] Color for observations data +observe.config.map.ps.style.observations.line.color=[Seine] Color for observations lines +observe.config.map.ps.style.observations.point.color=[Seine] Color for observations points +observe.config.map.ps.style.observations.text.color=[Seine] Color for observations text +observe.config.map.ps.style.observations.text.size=[Seine] Size for observations text observe.config.navigationIconsPath.description=Default navigation icons path. \#TODO observe.config.observation.activitysDetaillees=Observación de actividades detalladas observe.config.observation.fauneAssociee=Observación de Fauna asociada ===================================== client/i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -89,11 +89,17 @@ observe.config.longlineActivityPairing.maxDistance=Appairement activités Palang observe.config.longlineActivityPairing.maxTime=Appairement activités Palangre - Temps maximum (en mn) observe.config.longlineLandingPart.defaultWeightMeasureMethod=Méthode de mesure à utiliser lors de la création d'un nouveau d"pbarquement (modèle Palangre) observe.config.map.background.description=Couleur du fond de carte +observe.config.map.dateFormat=Format de la date +observe.config.map.layer1.color=Couleur de remplissage pour le premier calque de la carte observe.config.map.layer1.description=Fichier (Shape Files) du premier calque de la carte observe.config.map.layer10.description=Fichier (Shape Files) du dixième calque de la carte +observe.config.map.layer2.color=Couleur de remplissage pour le second calque de la carte observe.config.map.layer2.description=Fichier (Shape Files) du deuxième calque de la carte +observe.config.map.layer3.color=Couleur de remplissage pour le troisième calque de la carte observe.config.map.layer3.description=Fichier (Shape Files) du troisième calque de la carte +observe.config.map.layer4.color=Couleur de remplissage pour le quatrième calque de la carte observe.config.map.layer4.description=Fichier (Shape Files) du quatrième calque de la carte +observe.config.map.layer5.color=Couleur de remplissage pour le cinquième calque de la carte observe.config.map.layer5.description=Fichier (Shape Files) du cinquième calque de la carte observe.config.map.layer6.description=Fichier (Shape Files) du sixième calque de la carte observe.config.map.layer7.description=Fichier (Shape Files) du septième calque de la carte @@ -109,7 +115,10 @@ observe.config.map.ll.style.observations.line.setting.color=[Palangre] Observati observe.config.map.ll.style.observations.line.trip.color=[Palangre] Observations Ligne Couleur marée observe.config.map.ll.style.observations.point.color=[Palangre] Observations Couleur points observe.config.map.ps.style.description=[Senne] Fichier des style à appliquer sur les calques de la carte -observe.config.map.ps.style.observations.color=[Senne] Couleur pour les données d'observation +observe.config.map.ps.style.observations.line.color=[Senne] Observations Couleur pour les traces +observe.config.map.ps.style.observations.point.color=[Senne] Observations Couleur pour les points +observe.config.map.ps.style.observations.text.color=[Senne] Observations Couleur pour les textes +observe.config.map.ps.style.observations.text.size=[Senne] Observations Taille pour les textes observe.config.navigationIconsPath.description=Chemin vers les icônes de navigation. observe.config.observation.activitysDetaillees=Observation des activités détaillées observe.config.observation.fauneAssociee=Observation des Faunes associées ===================================== models/dto/src/main/java/fr/ird/observe/dto/data/TripMapConfig.java ===================================== @@ -25,6 +25,7 @@ package fr.ird.observe.dto.data; import java.awt.Color; import java.io.File; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -37,73 +38,18 @@ import java.util.Set; */ public interface TripMapConfig { + String getMapDateFormat(); + Set<TripMapContentBuilder> getTripMapContentBuilders(); File getMapDirectory(); Color getMapBackgroundColor(); - void setMapBackgroundColor(Color mapBackgroundColor); - - File getMapLayer1(); - - void setMapLayer1(File mapLayer1); - - File getMapLayer2(); - - void setMapLayer2(File mapLayer2); - - File getMapLayer3(); - - void setMapLayer3(File mapLayer3); - - File getMapLayer4(); - - void setMapLayer4(File mapLayer4); - - File getMapLayer5(); - - void setMapLayer5(File mapLayer5); - - File getMapLayer6(); - - void setMapLayer6(File mapLayer6); - - File getMapLayer7(); - - void setMapLayer7(File mapLayer7); - - File getMapLayer8(); - - void setMapLayer8(File mapLayer8); - - File getMapLayer9(); - - void setMapLayer9(File mapLayer9); - - File getMapLayer10(); - - void setMapLayer10(File mapLayer10); - List<File> getMapLayerFiles(); - Color getMapPsStyleObservationsColor(); + Map<String, String> getVariables(TripMapContentBuilder builder); File getTemporaryDirectory(); - Color getMapLlStyleObservationsLineTripColor(); - - Color getMapLlStyleObservationsLineSettingColor(); - - Color getMapLlStyleObservationsLineHaulingColor(); - - Color getMapLlStyleObservationsPointColor(); - - Color getMapLlStyleLogbookLineTripColor(); - - Color getMapLlStyleLogbookLineSettingColor(); - - Color getMapLlStyleLogbookLineHaulingColor(); - - Color getMapLlStyleLogbookPointColor(); } ===================================== models/dto/src/main/java/fr/ird/observe/dto/data/TripMapContentBuilder.java ===================================== @@ -27,6 +27,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Path; import java.util.List; +import java.util.Set; /** * Created on 02/09/2020. @@ -36,6 +37,8 @@ import java.util.List; */ public interface TripMapContentBuilder { + Set<String> getVariableNames(); + String getStyleFileName(); boolean accept(TripMapDto tripMapDto); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/03aa3129a42e7750eb7457386c... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/03aa3129a42e7750eb7457386c... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT