Revision: 5880 http://sourceforge.net/p/jump-pilot/code/5880 Author: michaudm Date: 2018-06-17 13:37:50 +0000 (Sun, 17 Jun 2018) Log Message: ----------- Add long and boolean attribute type to matching extension
Modified Paths: -------------- plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingExtension.java plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingPlugIn.java plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching.properties plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching_fr.properties Modified: plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingExtension.java =================================================================== --- plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingExtension.java 2018-06-17 13:13:29 UTC (rev 5879) +++ plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingExtension.java 2018-06-17 13:37:50 UTC (rev 5880) @@ -28,10 +28,11 @@ /** * Extension containing matching processing also known as join. * @author Michaƫl Michaud - * @version 0.8.0 (2018-06-15) + * @version 0.8.0 (2018-06-17) */ // History -// 0.8.0 (2018-06-15) : refactor to use add/getParameter +// 0.8.0 (2018-06-17) : refactor to use add/getParameter, the OJ aggregation +// classes and long and boolean attribute types // 0.7.5 (2017-03-26) : clean headers and remove dead code before inclusion in // OpenJUMP PLUS version // 0.7.4 (2017-03-13) : overlapping method could not handle linear geometries @@ -69,7 +70,7 @@ } public String getVersion() { - return "0.8.0 (2018-06-15)"; + return "0.8.0 (2018-06-17)"; } public void configure(PlugInContext context) throws Exception { Modified: plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingPlugIn.java =================================================================== --- plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingPlugIn.java 2018-06-17 13:13:29 UTC (rev 5879) +++ plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/MatchingPlugIn.java 2018-06-17 13:37:50 UTC (rev 5880) @@ -104,8 +104,10 @@ private String P_TRANSFER_BEST_MATCH_ONLY = "TransferBestMatchOnly"; private String P_STRING_AGGREGATOR = "StringAggregator"; private String P_INTEGER_AGGREGATOR = "IntegerAggregator"; + private String P_LONG_AGGREGATOR = "LongAggregator"; private String P_DOUBLE_AGGREGATOR = "DoubleAggregator"; private String P_DATE_AGGREGATOR = "DateAggregator"; + private String P_BOOLEAN_AGGREGATOR = "BooleanAggregator"; private final String MATCHING = I18NPlug.getI18N("Matching"); @@ -153,8 +155,10 @@ private final String STRING_AGGREGATION = I18NPlug.getI18N("String-aggregation"); private final String INTEGER_AGGREGATION = I18NPlug.getI18N("Integer-aggregation"); + private final String LONG_AGGREGATION = I18NPlug.getI18N("Long-aggregation"); private final String DOUBLE_AGGREGATION = I18NPlug.getI18N("Double-aggregation"); private final String DATE_AGGREGATION = I18NPlug.getI18N("Date-aggregation"); + private final String BOOLEAN_AGGREGATION = I18NPlug.getI18N("Boolean-aggregation"); // Processing and Error messages private final String SEARCHING_MATCHES = I18NPlug.getI18N("Searching-matches"); @@ -202,10 +206,14 @@ Aggregators.getAggregator(new Aggregators.ConcatenateUnique(true).getName()); private Aggregator integer_aggregator = Aggregators.getAggregator(new Aggregators.IntSum().getName()); + private Aggregator long_aggregator = + Aggregators.getAggregator(new Aggregators.LongSum().getName()); private Aggregator double_aggregator = Aggregators.getAggregator(new Aggregators.DoubleMean(true).getName()); private Aggregator date_aggregator = Aggregators.getAggregator(new Aggregators.DateMean(true).getName()); + private Aggregator boolean_aggregator = + Aggregators.getAggregator(new Aggregators.BooleanMajority(true).getName()); // initialisation of parameters { @@ -233,10 +241,13 @@ addParameter(P_TRANSFER_ATTRIBUTES, transfer); addParameter(P_TRANSFER_BEST_MATCH_ONLY, transfer_best_match_only); - addParameter(P_STRING_AGGREGATOR, string_aggregator.getName()); + + addParameter(P_STRING_AGGREGATOR, string_aggregator.getName()); addParameter(P_INTEGER_AGGREGATOR, integer_aggregator.getName()); - addParameter(P_DOUBLE_AGGREGATOR, double_aggregator.getName()); - addParameter(P_DATE_AGGREGATOR, date_aggregator.getName()); + addParameter(P_LONG_AGGREGATOR, long_aggregator.getName()); + addParameter(P_DOUBLE_AGGREGATOR, double_aggregator.getName()); + addParameter(P_DATE_AGGREGATOR, date_aggregator.getName()); + addParameter(P_BOOLEAN_AGGREGATOR, boolean_aggregator.getName()); } public MatchingPlugIn() { @@ -334,8 +345,10 @@ transfer_best_match_only = dialog.getBoolean(TRANSFER_BEST_MATCH_ONLY); string_aggregator = (Aggregator)dialog.getComboBox(STRING_AGGREGATION).getSelectedItem(); integer_aggregator = (Aggregator)dialog.getComboBox(INTEGER_AGGREGATION).getSelectedItem(); + long_aggregator = (Aggregator)dialog.getComboBox(LONG_AGGREGATION).getSelectedItem(); double_aggregator = (Aggregator)dialog.getComboBox(DOUBLE_AGGREGATION).getSelectedItem(); date_aggregator = (Aggregator)dialog.getComboBox(DATE_AGGREGATION).getSelectedItem(); + boolean_aggregator = (Aggregator)dialog.getComboBox(BOOLEAN_AGGREGATION).getSelectedItem(); System.out.println("start adding parameters"); @@ -365,8 +378,10 @@ addParameter(P_TRANSFER_BEST_MATCH_ONLY, transfer_best_match_only); addParameter(P_STRING_AGGREGATOR, string_aggregator.getName()); addParameter(P_INTEGER_AGGREGATOR, integer_aggregator.getName()); + addParameter(P_LONG_AGGREGATOR, long_aggregator.getName()); addParameter(P_DOUBLE_AGGREGATOR, double_aggregator.getName()); addParameter(P_DATE_AGGREGATOR, date_aggregator.getName()); + addParameter(P_BOOLEAN_AGGREGATOR, boolean_aggregator.getName()); if ((geometry_matcher instanceof MatchAllMatcher) && !use_attributes) { context.getWorkbenchFrame().warnUser(CHOOSE_MATCHER); @@ -531,6 +546,10 @@ INTEGER_AGGREGATION, integer_aggregator, Aggregators.getAggregators(AttributeType.INTEGER).values(), null ); + final JComboBox jcb_long_aggregator = dialog.addComboBox( + LONG_AGGREGATION, long_aggregator, + Aggregators.getAggregators(AttributeType.LONG).values(), null + ); final JComboBox jcb_double_aggregator = dialog.addComboBox( DOUBLE_AGGREGATION, double_aggregator, Aggregators.getAggregators(AttributeType.DOUBLE).values(), null @@ -539,6 +558,10 @@ DATE_AGGREGATION, date_aggregator, Aggregators.getAggregators(AttributeType.DATE).values(), null ); + final JComboBox jcb_boolean_aggregator = dialog.addComboBox( + BOOLEAN_AGGREGATION, boolean_aggregator, + Aggregators.getAggregators(AttributeType.BOOLEAN).values(), null + ); updateDialog(dialog); } @@ -675,10 +698,14 @@ string_aggregator.setIgnoreNull(true); integer_aggregator = Aggregators.getAggregator(getStringParam(P_INTEGER_AGGREGATOR)); integer_aggregator.setIgnoreNull(true); + long_aggregator = Aggregators.getAggregator(getStringParam(P_LONG_AGGREGATOR)); + long_aggregator.setIgnoreNull(true); double_aggregator = Aggregators.getAggregator(getStringParam(P_DOUBLE_AGGREGATOR)); double_aggregator.setIgnoreNull(true); date_aggregator = Aggregators.getAggregator(getStringParam(P_DATE_AGGREGATOR)); date_aggregator.setIgnoreNull(true); + boolean_aggregator = Aggregators.getAggregator(getStringParam(P_BOOLEAN_AGGREGATOR)); + boolean_aggregator.setIgnoreNull(true); Layer source_layer = context.getLayerManager().getLayer(source_layer_name); @@ -776,6 +803,11 @@ for (Feature mf : matches) integer_aggregator.addValue(mf.getAttribute(i)); bf.setAttribute("X_" + name, integer_aggregator.getResult()); } + else if (type == AttributeType.LONG) { + long_aggregator.reset(); + for (Feature mf : matches) long_aggregator.addValue(mf.getAttribute(i)); + bf.setAttribute("X_" + name, long_aggregator.getResult()); + } else if (type == AttributeType.DOUBLE) { double_aggregator.reset(); for (Feature mf : matches) double_aggregator.addValue(mf.getAttribute(i)); @@ -786,6 +818,11 @@ for (Feature mf : matches) date_aggregator.addValue(mf.getAttribute(i)); bf.setAttribute("X_" + name, date_aggregator.getResult()); } + else if (type == AttributeType.BOOLEAN) { + boolean_aggregator.reset(); + for (Feature mf : matches) boolean_aggregator.addValue(mf.getAttribute(i)); + bf.setAttribute("X_" + name, boolean_aggregator.getResult()); + } } new_dataset.add(bf); } Modified: plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching.properties =================================================================== --- plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching.properties 2018-06-17 13:13:29 UTC (rev 5879) +++ plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching.properties 2018-06-17 13:37:50 UTC (rev 5880) @@ -34,38 +34,38 @@ un-matched = un-matched Links = Links -Geometric-matcher = Geometric matcher -matcher.MatchAllMatcher = Match All +# Geometric-matcher = Geometric matcher +# matcher.MatchAllMatcher = Match All +# +# matcher.EqualsExactGeom3dMatcher = Equals Exact (Geom3d) +# matcher.EqualsNormalizedGeom3dMatcher = Equals Normalized (Geom3d) +# matcher.EqualsExactGeom2dMatcher = Equals Exact (Geom2d) +# matcher.EqualsNormalizedGeom2dMatcher = Equals Normalized (Geom2d) +# matcher.EqualsTopologicalGeomMatcher = Equals Topological +# matcher.EqualsWithCoordinateToleranceMatcher = Equals With Coordinate Tolerance +# +# matcher.IsWithinMatcher = IsWithin +# matcher.OverlapsMatcher = Overlaps +# matcher.OverlappedByMatcher = OverlappedBy +# matcher.IntersectsMatcher = Intersects +# matcher.Intersects0DMatcher = Intersects (0D intersetion) +# matcher.Intersects1DMatcher = Intersects (1D intersection) +# matcher.Intersects2DMatcher = Intersects (2D intersection) +# +# matcher.CentroidDistanceMatcher = Centroid Distance +# matcher.MinimumDistanceMatcher = Minimum Distance +# matcher.HausdorffDistanceMatcher = Hausdorff Distance +# matcher.SemiHausdorffDistanceMatcher = Semi-Hausdorff Distance +# matcher.ShapeMatcher = Shape Matcher +# +# matcher.MatchAllAttributesMatcher = Match All Attributes +# matcher.MatchAllStringsMatcher = Match All Strings +# matcher.StringEqualityMatcher = String Equality +# matcher.StringEqualityIgnoreCaseMatcher = String Equality (Ignore Case) +# matcher.StringEqualityIgnoreCaseAndAccentMatcher = String Equality (Ignore Case And Accents) +# matcher.LevenshteinDistanceMatcher = Levenshtein Distance +# matcher.DamarauLevenshteinDistanceMatcher = Damarau-Levenshtein Distance -matcher.EqualsExactGeom3dMatcher = Equals Exact (Geom3d) -matcher.EqualsNormalizedGeom3dMatcher = Equals Normalized (Geom3d) -matcher.EqualsExactGeom2dMatcher = Equals Exact (Geom2d) -matcher.EqualsNormalizedGeom2dMatcher = Equals Normalized (Geom2d) -matcher.EqualsTopologicalGeomMatcher = Equals Topological -matcher.EqualsWithCoordinateToleranceMatcher = Equals With Coordinate Tolerance - -matcher.IsWithinMatcher = IsWithin -matcher.OverlapsMatcher = Overlaps -matcher.OverlappedByMatcher = OverlappedBy -matcher.IntersectsMatcher = Intersects -matcher.Intersects0DMatcher = Intersects (0D intersetion) -matcher.Intersects1DMatcher = Intersects (1D intersection) -matcher.Intersects2DMatcher = Intersects (2D intersection) - -matcher.CentroidDistanceMatcher = Centroid Distance -matcher.MinimumDistanceMatcher = Minimum Distance -matcher.HausdorffDistanceMatcher = Hausdorff Distance -matcher.SemiHausdorffDistanceMatcher = Semi-Hausdorff Distance -matcher.ShapeMatcher = Shape Matcher - -matcher.MatchAllAttributesMatcher = Match All Attributes -matcher.MatchAllStringsMatcher = Match All Strings -matcher.StringEqualityMatcher = String Equality -matcher.StringEqualityIgnoreCaseMatcher = String Equality (Ignore Case) -matcher.StringEqualityIgnoreCaseAndAccentMatcher = String Equality (Ignore Case And Accents) -matcher.LevenshteinDistanceMatcher = Levenshtein Distance -matcher.DamarauLevenshteinDistanceMatcher = Damarau-Levenshtein Distance - Attribute-options = Attribute Options Use-attributes = Use an Attribute for Matching (String) Source-layer-attribute = Matching Layer Attribute @@ -81,24 +81,26 @@ Transfer-best-match-only = Transfer best match only String-aggregation = String aggregation Integer-aggregation = Integer aggregation +Long-aggregation = Long aggregation Double-aggregation = Double aggregation Date-aggregation = Date aggregation +Boolean-aggregation = Boolean aggregation -aggregator.Count = Count -aggregator.Sum-integer = Sum -aggregator.Sum-double = Sum -aggregator.Mean-integer = Mean -aggregator.Mean-double = Mean -aggregator.Mean-date = Mean -aggregator.Max-integer = Maximum -aggregator.Max-double = Maximum -aggregator.Max-date = Maximum -aggregator.Min-integer = Minimum -aggregator.Min-double = Minimum -aggregator.Min-date = Minimum -aggregator.Concatenate = Concatenate -aggregator.Concatenate-unique = Concatenate (unique) -aggregator.Most-frequent = Most frequent +# aggregator.Count = Count +# aggregator.Sum-integer = Sum +# aggregator.Sum-double = Sum +# aggregator.Mean-integer = Mean +# aggregator.Mean-double = Mean +# aggregator.Mean-date = Mean +# aggregator.Max-integer = Maximum +# aggregator.Max-double = Maximum +# aggregator.Max-date = Maximum +# aggregator.Min-integer = Minimum +# aggregator.Min-double = Minimum +# aggregator.Min-date = Minimum +# aggregator.Concatenate = Concatenate +# aggregator.Concatenate-unique = Concatenate (unique) +# aggregator.Most-frequent = Most frequent Searching-matches = Searching matches Missing-input-layer = Missing input layer ! Modified: plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching_fr.properties =================================================================== --- plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching_fr.properties 2018-06-17 13:13:29 UTC (rev 5879) +++ plug-ins/MatchingPlugIn/trunk/src/fr/michaelm/jump/plugin/match/matching_fr.properties 2018-06-17 13:37:50 UTC (rev 5880) @@ -34,38 +34,38 @@ un-matched = non-appari\u00E9s Links = Liens -Geometric-matcher = Appariement g\u00E9om\u00E9trique -matcher.MatchAllMatcher = Tout apparier +# Geometric-matcher = Appariement g\u00E9om\u00E9trique +# matcher.MatchAllMatcher = Tout apparier +# +# matcher.EqualsExactGeom3dMatcher = \u00C9galit\u00E9 3D (stricte) +# matcher.EqualsNormalizedGeom3dMatcher = \u00C9galit\u00E9 3D (geom normalis\u00E9es) +# matcher.EqualsExactGeom2dMatcher = \u00C9galit\u00E9 2D (stricte) +# matcher.EqualsNormalizedGeom2dMatcher = \u00C9galit\u00E9 2D (geom normalis\u00E9es) +# matcher.EqualsTopologicalGeomMatcher = \u00C9galit\u00E9 topologique +# matcher.EqualsWithCoordinateToleranceMatcher = Egalit\u00E9 (coordonn\u00E9es flottantes) +# +# matcher.IsWithinMatcher = Contenu dans l'objet cible +# matcher.OverlapsMatcher = Recouvre (> xx% de la cible) +# matcher.OverlappedByMatcher = Est recouvert (>xx% de la source) +# matcher.IntersectsMatcher = Intersecte l'objet cible +# matcher.Intersects0DMatcher = Intersection ponctuelle +# matcher.Intersects1DMatcher = Intersection lin\xE9aire +# matcher.Intersects2DMatcher = Intersection surfacique +# +# matcher.CentroidDistanceMatcher = Distance entre centro\u00EFdes inf\u00E9rieure \u00E0 +# matcher.MinimumDistanceMatcher = Distance entre objets inf\u00E9rieure \u00E0 +# matcher.HausdorffDistanceMatcher = Distance de Hausdorff inf\u00E9rieure \u00E0 +# matcher.SemiHausdorffDistanceMatcher = Semi-Distance de Hausdorff inf\u00E9rieure \u00E0 +# matcher.ShapeMatcher = Formes similaires +# +# matcher.MatchAllAttributesMatcher = Apparie avec tout +# matcher.MatchAllStringsMatcher = Apparie avec tout +# matcher.StringEqualityMatcher = \u00C9galit\u00E9 stricte +# matcher.StringEqualityIgnoreCaseMatcher = \u00C9galit\u00E9 insensible \u00E0 la casse +# matcher.StringEqualityIgnoreCaseAndAccentMatcher = \u00C9galit\u00E9 insensible \u00E0 la casse et aux accents +# matcher.LevenshteinDistanceMatcher = Distance de Levenshtein +# matcher.DamarauLevenshteinDistanceMatcher = Distance de Damarau-Levenshtein -matcher.EqualsExactGeom3dMatcher = \u00C9galit\u00E9 3D (stricte) -matcher.EqualsNormalizedGeom3dMatcher = \u00C9galit\u00E9 3D (geom normalis\u00E9es) -matcher.EqualsExactGeom2dMatcher = \u00C9galit\u00E9 2D (stricte) -matcher.EqualsNormalizedGeom2dMatcher = \u00C9galit\u00E9 2D (geom normalis\u00E9es) -matcher.EqualsTopologicalGeomMatcher = \u00C9galit\u00E9 topologique -matcher.EqualsWithCoordinateToleranceMatcher = Egalit\u00E9 (coordonn\u00E9es flottantes) - -matcher.IsWithinMatcher = Contenu dans l'objet cible -matcher.OverlapsMatcher = Recouvre (> xx% de la cible) -matcher.OverlappedByMatcher = Est recouvert (>xx% de la source) -matcher.IntersectsMatcher = Intersecte l'objet cible -matcher.Intersects0DMatcher = Intersection ponctuelle -matcher.Intersects1DMatcher = Intersection lin\xE9aire -matcher.Intersects2DMatcher = Intersection surfacique - -matcher.CentroidDistanceMatcher = Distance entre centro\u00EFdes inf\u00E9rieure \u00E0 -matcher.MinimumDistanceMatcher = Distance entre objets inf\u00E9rieure \u00E0 -matcher.HausdorffDistanceMatcher = Distance de Hausdorff inf\u00E9rieure \u00E0 -matcher.SemiHausdorffDistanceMatcher = Semi-Distance de Hausdorff inf\u00E9rieure \u00E0 -matcher.ShapeMatcher = Formes similaires - -matcher.MatchAllAttributesMatcher = Apparie avec tout -matcher.MatchAllStringsMatcher = Apparie avec tout -matcher.StringEqualityMatcher = \u00C9galit\u00E9 stricte -matcher.StringEqualityIgnoreCaseMatcher = \u00C9galit\u00E9 insensible \u00E0 la casse -matcher.StringEqualityIgnoreCaseAndAccentMatcher = \u00C9galit\u00E9 insensible \u00E0 la casse et aux accents -matcher.LevenshteinDistanceMatcher = Distance de Levenshtein -matcher.DamarauLevenshteinDistanceMatcher = Distance de Damarau-Levenshtein - Attribute-options = Options attributaires Use-attributes = Utiliser un attribut pour apparier (texte) Source-layer-attribute = Attribut de la couche \u00E0 apparier (source) @@ -81,24 +81,25 @@ Transfer-best-match-only = Transf\u00E9rer uniquement le meilleur appariement String-aggregation = Agr\u00E9gation de texte Integer-aggregation = Agr\u00E9gation d'entiers +Long-aggregation = Agr\u00E9gation d'entiers longs Double-aggregation = Agr\u00E9gation de doubles -Date-aggregation = Agr\u00E9gation de dates +Boolean-aggregation = Agr\u00E9gation de bool\u00E9ens -aggregator.Count = Compte -aggregator.Sum-integer = Somme -aggregator.Sum-double = Somme -aggregator.Mean-integer = Moyenne -aggregator.Mean-double = Moyenne -aggregator.Mean-date = Moyenne -aggregator.Max-integer = Maximum -aggregator.Max-double = Maximum -aggregator.Max-date = Maximum -aggregator.Min-integer = Minimum -aggregator.Min-double = Minimum -aggregator.Min-date = Minimum -aggregator.Concatenate = Concat\u00E9nation -aggregator.Concatenate-unique = Concat\u00E9nation (unique) -aggregator.Most-frequent = Le plus fr\u00E9quent +# aggregator.Count = Compte +# aggregator.Sum-integer = Somme +# aggregator.Sum-double = Somme +# aggregator.Mean-integer = Moyenne +# aggregator.Mean-double = Moyenne +# aggregator.Mean-date = Moyenne +# aggregator.Max-integer = Maximum +# aggregator.Max-double = Maximum +# aggregator.Max-date = Maximum +# aggregator.Min-integer = Minimum +# aggregator.Min-double = Minimum +# aggregator.Min-date = Minimum +# aggregator.Concatenate = Concat\u00E9nation +# aggregator.Concatenate-unique = Concat\u00E9nation (unique) +# aggregator.Most-frequent = Le plus fr\u00E9quent Searching-matches = Recherche d'objets homologues en cours Missing-input-layer = Couche en entr\u00E9e absente ! ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel