Revision: 5294 http://sourceforge.net/p/jump-pilot/code/5294 Author: michaudm Date: 2016-12-29 12:25:19 +0000 (Thu, 29 Dec 2016) Log Message: ----------- Implement FR 250 : update a layer from another using an attribute join
Modified Paths: -------------- core/trunk/scripts/default-plugins.xml core/trunk/src/language/jump.properties core/trunk/src/language/jump_cz.properties core/trunk/src/language/jump_de.properties core/trunk/src/language/jump_es.properties core/trunk/src/language/jump_fi.properties core/trunk/src/language/jump_fr.properties core/trunk/src/language/jump_hu.properties core/trunk/src/language/jump_it.properties core/trunk/src/language/jump_ja_JP.properties core/trunk/src/language/jump_ml.properties core/trunk/src/language/jump_pt.properties core/trunk/src/language/jump_pt_BR.properties core/trunk/src/language/jump_ta_IN.properties core/trunk/src/language/jump_te.properties core/trunk/src/language/jump_zh_CN.properties core/trunk/src/language/jump_zh_HK.properties Added Paths: ----------- core/trunk/src/org/openjump/core/ui/plugin/tools/UpdateWithJoinPlugIn.java Modified: core/trunk/scripts/default-plugins.xml =================================================================== --- core/trunk/scripts/default-plugins.xml 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/scripts/default-plugins.xml 2016-12-29 12:25:19 UTC (rev 5294) @@ -824,12 +824,16 @@ org.openjump.core.ui.plugin.tools.JoinTableFromExistingLayerPlugIn </plug-in> <plug-in> - org.openjump.core.ui.plugin.tools.BeanshellAttributeCalculatorPlugIn + org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn </plug-in> <plug-in> org.openjump.core.ui.plugin.tools.JoinTablePlugIn </plug-in> + <plug-in> + org.openjump.core.ui.plugin.tools.BeanshellAttributeCalculatorPlugIn + </plug-in> + <!--- ========= Generalization ==================== / --> <plug-in> org.openjump.core.ui.plugin.tools.SimplifyWithJTSAlgorithmPlugIn Modified: core/trunk/src/language/jump.properties =================================================================== --- core/trunk/src/language/jump.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -1556,6 +1556,23 @@ org.openjump.core.ui.plugin.tools.SplitPolygonPlugIn.Must-select-one-polygon-and-one-linestring = Must select one polygon and one linestring. org.openjump.core.ui.plugin.tools.SplitPolygonPlugIn.Update-the-polygon-with-result = Update the polygon with result. org.openjump.core.ui.plugin.tools.SplitPolygonPlugIn.Uses-the-selected-linestring-to-cut-the-selected-polygon-into-separate-sections = Uses the selected linestring to cut the selected polygon into separate sections. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn = Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined = Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers = Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description = Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join = Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer = Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id = Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique = Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join = Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip = Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes = Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id = Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update = Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join = Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip = Check right join to add un-joined features from join layer org.openjump.core.ui.plugin.tools.ZoomRealtimeTool.Zoom-Realtime = Zoom Realtime org.openjump.core.ui.plugin.tools.generate.AbstractLinearReferencingPlugIn.add-end-point = Add end point org.openjump.core.ui.plugin.tools.generate.AbstractLinearReferencingPlugIn.distance-unit = Distance Unit Modified: core/trunk/src/language/jump_cz.properties =================================================================== --- core/trunk/src/language/jump_cz.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_cz.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2758,4 +2758,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_de.properties =================================================================== --- core/trunk/src/language/jump_de.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_de.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2754,4 +2754,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_es.properties =================================================================== --- core/trunk/src/language/jump_es.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_es.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2737,4 +2737,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_fi.properties =================================================================== --- core/trunk/src/language/jump_fi.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_fi.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2731,4 +2731,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_fr.properties =================================================================== --- core/trunk/src/language/jump_fr.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_fr.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2761,4 +2761,21 @@ ui.GenericNames.show=Montrer ui.GenericNames.user=Utilisateur ui.GenericNames.version=Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=Mise \xE0 jour par jointure d'attribut +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=Les correspondances entre attributs n'ont pas \xE9t\xE9 d\xE9finies +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=Choisir les couches +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=Met \xE0 jour les attributs de la couche de r\xE9f\xE9rence avec ceux de la couche jointe chaque fois que la condition de jointure est v\xE9rifi\xE9e.\n\ + Les attributs peuvent \xEAtre mis en correspondance m\xEAme lorsque leurs noms diff\xE8rent.\n\ + Une jointure gauche permet de conserver tous les objets de r\xE9f\xE9rence, tandis qu'une jointure droite permet d'ajouter les objets de la couche jointe m\xEAme s'ils ne v\xE9rifient pas la condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=Ne pas joindre +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=Couche \xE0 joindre +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=Identifiant de la couche jointe +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=L'identifiant n'est pas unique dans la couche jointe +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=Jointure gauche +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=Une jointure gauche permet de conserver tous les objets de r\xE9f\xE9rence +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=Correspondance entre attributs +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=Identifiant externe +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=Couche de r\xE9f\xE9rence \xE0 mettre \xE0 jour +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=Jointure droite +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=La jointure droite ajoute au r\xE9sultat les objets non-joints de la couche jointes \ No newline at end of file Modified: core/trunk/src/language/jump_hu.properties =================================================================== --- core/trunk/src/language/jump_hu.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_hu.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = Hiba a f\u00e1jl megnyit\u00e1sakor\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = St\u00edlusok megv\u00e1ltoztat\u00e1sa com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = Affin transzform\u00e1ci\u00f3 -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -1052,8 +1051,6 @@ org.openjump.core.ui.plugin.raster.DEMStatisticsPlugIn.name=\#T\:Compare Grid Raster layers org.openjump.core.ui.plugin.raster.DEMStatisticsPlugIn.report=\#T\:Calculating layers statistics org.openjump.core.ui.plugin.raster.nodata.menu=\#T\:Manage No Data values - -org.openjump.core.ui.plugin.raster.nodata.menu=\#T\:Manage No Data values org.openjump.core.ui.plugin.raster.nodata.Inverse=\#T\:Inverse operation org.openjump.core.ui.plugin.raster.nodata.from=\#T\:From: org.openjump.core.ui.plugin.raster.nodata.to=\#T\:To: @@ -2563,7 +2560,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -2754,4 +2750,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_it.properties =================================================================== --- core/trunk/src/language/jump_it.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_it.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -2738,3 +2738,20 @@ ui.GenericNames.user=Utente ui.GenericNames.version=Versione ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer Modified: core/trunk/src/language/jump_ja_JP.properties =================================================================== --- core/trunk/src/language/jump_ja_JP.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_ja_JP.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = \u30d5\u30a1\u30a4\u30eb\u8aad\u8fbc\u307f\u6642\u306b\u30a8\u30e9\u30fc\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = \u30b9\u30bf\u30a4\u30eb\u306e\u5909\u66f4 com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = \u30a2\u30d5\u30a3\u30f3\u5909\u63db -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -2507,8 +2506,6 @@ com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel.server-or-proxy-port-is-not-correct-check-provided-parameters= #T:The server or proxy port is not correct check, provided the parameters com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel.user= #T:User\: com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel.test-url= #T: Test url\: -com.vividsolutions.jump.workbench.plugin.At-least-n-layerables-must-exist=\#T\:At least {0} layerables must exist -com.vividsolutions.jump.workbench.plugin.At-least-one-layerables-must-exist=\#T\:At least one layerable must exist ui.plugin.analysis.BufferPlugIn.update-source=\#T\:Update geometry in source layer ui.plugin.analysis.BufferPlugIn.update-source-help=\#T\:Update the source layer instead of copying geometries in a new layer ui.AttributeTablePanel.feature.view-edit=#T:View/Edit @@ -2568,8 +2565,7 @@ org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.remove-duplicate-coord-tooltip=\#T\:Remove duplicate coordinates org.openjump.core.ui.plugin.tools.MakeValidPlugIn.remove-duplicate-coord=\#T\:Remove duplicate coordinates -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: -jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: +jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error com.vividsolutions.jump.workbench.ui.plugin.datastore.ConnectionPanel.Dataset=\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8 com.vividsolutions.jump.workbench.ui.plugin.datastore.ConnectionPanel.Geometry=\u30b8\u30aa\u30e1\u30c8\u30ea @@ -2756,4 +2752,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_ml.properties =================================================================== --- core/trunk/src/language/jump_ml.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_ml.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = \u0d2b\u0d2f\u0d32\u0d4d\u200d \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d3f\u0d36\u0d15\u0d4d\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = \u0d36\u0d48\u0d32\u0d3f \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15 com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = Affine Transform -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -3836,7 +3835,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -4027,4 +4025,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_pt.properties =================================================================== --- core/trunk/src/language/jump_pt.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_pt.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -112,7 +112,7 @@ com.vividsolutions.jump.workbench.ui.plugin.AddNewCategoryPlugIn = Adicionar nova categoria com.vividsolutions.jump.workbench.ui.plugin.AddNewCategoryPlugIn.name = T\:Category com.vividsolutions.jump.workbench.ui.plugin.AddNewFeaturesPlugIn = Adicionar nova fei\u00e7\u00e3o -com.vividsolutions.jump.workbench.ui.plugin.AddNewLayerPlugIn = Adicionar um novo layer +com.vividsolutions.jump.workbench.ui.plugin.AddNewLayerPlugIn = Adicionar um novo layer com.vividsolutions.jump.workbench.ui.plugin.AddNewLayerPlugIn.name = T\:Layer com.vividsolutions.jump.workbench.ui.plugin.BeanShellPlugIn.BeanShell-Console = BeanShell Console com.vividsolutions.jump.workbench.ui.plugin.ClearSelectionPlugIn = Limpar sele\u00e7\u00e3o @@ -126,7 +126,7 @@ com.vividsolutions.jump.workbench.ui.plugin.ExplodeSelectedFeaturesPlugIn = Explodir fei\u00e7\u00f5es selecionadas com.vividsolutions.jump.workbench.ui.plugin.FeatureInfoPlugIn = Informa\u00e7\u00f5es da Fei\u00e7\u00e3o com.vividsolutions.jump.workbench.ui.plugin.FeatureStatisticsPlugIn = Estat\u00edsticas da fei\u00e7\u00e3o -com.vividsolutions.jump.workbench.ui.plugin.LayerStatisticsPlugIn = Estat\u00edsticas do layer +com.vividsolutions.jump.workbench.ui.plugin.LayerStatisticsPlugIn = Estat\u00edsticas do layer com.vividsolutions.jump.workbench.ui.plugin.NewTaskPlugIn = Nova tarefa com.vividsolutions.jump.workbench.ui.plugin.OptionsPlugIn = op\u00e7\u00f5es com.vividsolutions.jump.workbench.ui.plugin.OutputWindowPlugIn = Janela de sa\u00edda @@ -135,7 +135,7 @@ com.vividsolutions.jump.workbench.ui.plugin.RedoPlugIn.nothing-to-redo = \#T\: Nothing to redo com.vividsolutions.jump.workbench.ui.plugin.RemoveSelectedCategoriesPlugIn = Remover categorias selecionadas com.vividsolutions.jump.workbench.ui.plugin.RemoveSelectedLayersPlugIn = Remover layers selecionados -com.vividsolutions.jump.workbench.ui.plugin.SaveImageAsPlugIn = Salvarcomo imagem +com.vividsolutions.jump.workbench.ui.plugin.SaveImageAsPlugIn = Salvarcomo imagem com.vividsolutions.jump.workbench.ui.plugin.SelectFeaturesInFencePlugIn = Selecionar fei\u00e7\u00f5es no quadro com.vividsolutions.jump.workbench.ui.plugin.SelectablePlugIn = Selectable com.vividsolutions.jump.workbench.ui.plugin.ShortcutKeysPlugIn = Teclas de atalho @@ -174,7 +174,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error = Erro com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = Erro ao abrir o arquivo\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = Mudar estilos -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = Afinar com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer @@ -182,7 +181,7 @@ com.vividsolutions.jump.workbench.ui.warp.DeleteIncrementalWarpingVectorTool = Ferramenta de Dele\u00e7\u00e3o de Deforma\u00e7\u00e3o Incremental com.vividsolutions.jump.workbench.ui.warp.DeleteWarpingVectorTool = Ferramenta de Desenhar Deforma\u00e7\u00e3o com.vividsolutions.jump.workbench.ui.warp.DrawIncrementalWarpingVectorTool = Ferramenta de Desenho de Deforma\u00e7\u00e3o Incremental -com.vividsolutions.jump.workbench.ui.warp.DrawWarpingVectorTool = Ferramenta de Draw Deforma\u00e7\u00e3o +com.vividsolutions.jump.workbench.ui.warp.DrawWarpingVectorTool = Ferramenta de Draw Deforma\u00e7\u00e3o com.vividsolutions.jump.workbench.ui.warp.WarpingPlugIn = Deformar com.vividsolutions.jump.workbench.ui.zoom.PanTool = Ferramenta Pan com.vividsolutions.jump.workbench.ui.zoom.ZoomBarPlugIn = Barra de zoom @@ -208,7 +207,7 @@ com.vividsolutions.wms.ui.WMSViewer.get-image = Pegar imagem com.vividsolutions.wms.ui.WMSViewer.server-string = Cadeia de caracteres do servidor com.vividsolutions.wms.ui.WMSViewer.wms-url = http\://slkapps2.env.gov.bc.ca/servlet/com.esri.wms.Esrimap? -com.vividsolutions.wms.ui.WMSViewer.wms-viewer = Visualizar WMS +com.vividsolutions.wms.ui.WMSViewer.wms-viewer = Visualizar WMS com.vividsolutions.wms.ui.WMSViewer.zoom-in = Ampliar com.vividsolutions.wms.ui.WMSViewer.zoom-out = Reduzir coordsys.ChangeCoordinateSystemPlugIn.coordinate-system-for-task = Sistema de coordenadas para tarefa\: @@ -360,7 +359,7 @@ jump.plugin.edit.NoderPlugIn.split = \#T\:Split jump.plugin.edit.NoderPlugIn.advanced-options = \#T\:Advanced Options jump.plugin.edit.NoderPlugIn.snap-rounding = \#T\:Snap-Rounding -jump.plugin.edit.NoderPlugIn.snap-rounding-makes-noding-algorithm-fully-robust = \#T\:Snap-rounding makes noding algorithm fully robust +jump.plugin.edit.NoderPlugIn.snap-rounding-makes-noding-algorithm-fully-robust = \#T\:Snap-rounding makes noding algorithm fully robust jump.plugin.edit.NoderPlugIn.snap-rounding-decimal-places = \#T\:Snap-Rounding Decimal Places jump.plugin.edit.NoderPlugIn.number-of-decimal-digits = \#T\:Number of decimal digits jump.plugin.edit.NoderPlugIn.interpolate-z = \#T\:Interpolate Z value @@ -388,7 +387,7 @@ jump.plugin.edit.PolygonizerPlugIn.Number-of-invalid-rings-found = N\u00famero de envolt\u00f3rias inv\u00e1lidas encontradas\: jump.plugin.edit.PolygonizerPlugIn.Number-of-polygons-created = N\u00famero de pol\u00edgonos criados\: jump.plugin.edit.PolygonizerPlugIn.Polygonization = Poligoniza\u00e7\u00e3o -jump.plugin.edit.PolygonizerPlugIn.Polygonization-requires-correctly-noded-data = A poligoniza\u00e7\u00e3o requer dados dos n\u00f3s corretos +jump.plugin.edit.PolygonizerPlugIn.Polygonization-requires-correctly-noded-data = A poligoniza\u00e7\u00e3o requer dados dos n\u00f3s corretos jump.plugin.edit.PolygonizerPlugIn.Polygonize = Poligonizar jump.plugin.edit.PolygonizerPlugIn.Polygonizes-the-line-segments-in-a-layer = Poligoniza os segmentos de linhas numa layer. jump.plugin.edit.PolygonizerPlugIn.Polygonizing = Poligonizando... @@ -581,7 +580,7 @@ org.openjump.core.ui.plugin.edit.SelectAllLayerItemsPlugIn.selected-items = Selecione itens org.openjump.core.ui.plugin.edit.SelectAllModifiedFeaturesPlugIn.select-all-modified-features = T\:Select all modified features org.openjump.core.ui.plugin.edit.SelectByTypePlugIn.Empty-Geometries = Geometrias Vazias -org.openjump.core.ui.plugin.edit.SelectByTypePlugIn.On-selected-layers-only = Apenas nos layers selecionados +org.openjump.core.ui.plugin.edit.SelectByTypePlugIn.On-selected-layers-only = Apenas nos layers selecionados org.openjump.core.ui.plugin.edit.SelectByTypePlugIn.Select-by-Geometry-Type = Selecione por Tipo de Geometria org.openjump.core.ui.plugin.edit.SelectByTypePlugIn.Select-only-these-types = Selecione apenas estes tipos\: org.openjump.core.ui.plugin.edit.SelectItemsByCirlceFromSelectedLayersPlugIn.cirlce-diameter = di\u00e2metro do c\u00edrculo @@ -672,7 +671,7 @@ org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.directory-chooser = T\:Save newly created layers in the following directory org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.do-not-save = T\:Do not save those layers on the Hard Drive org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.every-layer-has-a-datasource = T\:Every layer already has a datasource -org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.hover-the-label-to-see-the-list = T\:(hover the label to see the list) +org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.hover-the-label-to-see-the-list = T\:(hover the label to see the list) org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.layers-without-datasource = T\:There are {0} newly created layers without datasource org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.layers-without-datasource-management = T\:Layers without datasource management org.openjump.core.ui.plugin.file.SaveLayersWithoutDataSourcePlugIn.save-as-jml = T\:Save them as JML files @@ -870,7 +869,7 @@ org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.Warning-See-Output-Window = Nota\: veja janela de sa\u00edda org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.layer = layer\: org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.read-only-layer = layer somente para leitura -org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.read-only-source-will-replace-an-existing-file = substituir\u00e1 o arquivo existente pela fonte do somente leitura +org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.read-only-source-will-replace-an-existing-file = substituir\u00e1 o arquivo existente pela fonte do somente leitura org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.replaces-file = recolocar arquivos org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.with-empty-geometry = com geometria vazia org.openjump.core.ui.plugin.mousemenu.SaveDatasetsPlugIn.with-mixed-geometry-types = com tipos de geometrias misturadas @@ -921,7 +920,7 @@ org.openjump.core.ui.plugin.queries.Operator.ne = \# org.openjump.core.ui.plugin.queries.Operator.overl = sobrep\u00f5e-se org.openjump.core.ui.plugin.queries.Operator.relat = \#T\:relate -org.openjump.core.ui.plugin.queries.Operator.star = come\u00e7a com +org.openjump.core.ui.plugin.queries.Operator.star = come\u00e7a com org.openjump.core.ui.plugin.queries.Operator.touch = toca org.openjump.core.ui.plugin.queries.Operator.wdist = est\u00e1 dentro org.openjump.core.ui.plugin.queries.Operator.withi = est\u00e1 incluso em @@ -1136,7 +1135,7 @@ org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.nb-nan-z = \#T\:\#NaN_Z org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.add-nb-nan-z = \#T\:Number of coordinates without Z (NaN) org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.nb-0-z = \#T\:\#Null_Z -org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.add-nb-0-z = \#T\:Number of Null (0) Z +org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.add-nb-0-z = \#T\:Number of Null (0) Z org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.nb-negative-z = \#T\:\#Negative_Z org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.add-nb-negative-z = \#T\:Number of Negative Z org.openjump.core.ui.plugin.tools.Add3DGeometryAttributesPlugIn.nb-positive-z = \#T\:\#Positive_Z @@ -1236,7 +1235,7 @@ org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.Creates-a-Delaunay-triangulation-and-returns-the-Voronoi-regions = Executa a triangula\u00e7\u00e3o do tipo Delaunay e retorna as regi\u00f5es. org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.Error-found-multiple-points-in-polygon = Erro\: found multiple points in polygon org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.add-attributes-from-points = Adicionar atributos dos pontos -org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.background-layer-to-estimate-the-thiessen-polygon-size = background layer to estimate the border thiessen polygon size +org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.background-layer-to-estimate-the-thiessen-polygon-size = background layer to estimate the border thiessen polygon size org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.create-polygons-from-voronoi-edges = Cria pol\u00edgonos das bordas Voronoi org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.create-triangulation = triangular org.openjump.core.ui.plugin.tools.CreateThiessenPolygonsPlugIn.no-point-geometry = geometria n\u00e3o \u00e9 do tipo ponto @@ -1326,7 +1325,7 @@ org.openjump.core.ui.plugin.tools.PlumePlugIn = Plume org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.Points-reduced-from = Pontos reduzidos de org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.Reduce-points-in-selected-features = Reduz pontos nas fei\u00e7\u00f5es selecionadas. -org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.Simplify-ISA-algorithm = Simplificar (algor\u00edtimo ISA) +org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.Simplify-ISA-algorithm = Simplificar (algor\u00edtimo ISA) org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.The-reduce-points-tolerance = A toler\u00e2ncia da redu\u00e7\u00e3o. org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.Tolerance = Toler\u00e2ncia org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn.to = para @@ -1449,7 +1448,7 @@ org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.transfer-attributes = \#T\:Transfer attributes org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.tolerance = \#T\:Tolerance org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.description = \#T\:Create the Voronoi Diagram (AKA Thiessen polygons) of a set of punctual sites.\n\ - Use a non null tolerance to make the calculation more robust. + Use a non null tolerance to make the calculation more robust. org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.Calculate-Distances = \#T\:Calculate Distances org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.Calculates-distances-description = \#T\:Calculates distance between the geometries in 2 different datasets. It can calculate\: (i) the shortest distance (sd), (ii) the shortest distance between centroids (sdc), and (iii) the Hausdorff distance (sdh, a maximum distance). org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.layer-with-origins = \#T\:layer with origins @@ -1504,7 +1503,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Sicronizar apenas o pan org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer -org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Caixa de Limite(s) para +org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Caixa de Limite(s) para org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.no-bounding-box = Sem envelope (caixa de limites)\! org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.no-bounding-boxes-available = Sem Caixa de Limite(s) dispon\u00edvel\! org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.no-wms-layer-selected = Nenhum Layer(s) WMS selecionado\! @@ -1597,13 +1596,13 @@ pirol.ui.panels.default-value-for-new-attribute = valor padr\u00e3o para o novo atributo pirol.ui.panels.name-of-new-attribute = nome do novo campo pirol.ui.panels.type-of-new-attribute = tipo do novo campo -plugin.AbstractPlugIn.done-current-committed-memory = Feito. Gravado na mem\u00f3ria corrente\: +plugin.AbstractPlugIn.done-current-committed-memory = Feito. Gravado na mem\u00f3ria corrente\: plugin.EnableCheckFactory.a-fence-must-be-drawn = Um quadro deve ser desenhado plugin.EnableCheckFactory.a-task-window-must-be-active = Uma Janela de Tarefa deve estar ativa plugin.EnableCheckFactory.a-window-with-a-layer-manager-must-be-active = Uma janela com um gerenciador de layer deve estar ativa plugin.EnableCheckFactory.a-window-with-a-layer-name-panel-must-be-active = Uma janela com um painel com o nome do layer deve estar ativa plugin.EnableCheckFactory.a-window-with-a-layer-view-panel-must-be-active = Uma janela com um painel de vis\u00e3o de layer deve estar ativa -plugin.EnableCheckFactory.a-window-with-an-associated-task-frame-must-be-active = Uma janela com uma tarefa associada deve estar ativa +plugin.EnableCheckFactory.a-window-with-an-associated-task-frame-must-be-active = Uma janela com uma tarefa associada deve estar ativa plugin.EnableCheckFactory.a-window-with-selection-manager-must-be-active = Uma janela com um gerenciador de sele\u00e7\u00e3o deve estar ativa plugin.EnableCheckFactory.at-least-{0}-categories-must-be-selected = Ao menos {0} categorias devem estar selecionadas plugin.EnableCheckFactory.at-least-{0}-category-must-be-selected = Ao menos {0} categoria deve estar selecionada @@ -2752,4 +2751,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_pt_BR.properties =================================================================== --- core/trunk/src/language/jump_pt_BR.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_pt_BR.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -174,7 +174,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error = Erro com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = Erro ao abrir o arquivo\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = Mudar estilos -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = Afinar com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer @@ -2562,7 +2561,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -2753,4 +2751,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=URL \ No newline at end of file +ui.GenericNames.url=URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_ta_IN.properties =================================================================== --- core/trunk/src/language/jump_ta_IN.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_ta_IN.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0baa\u0bbe\u0b99\u0bcd\u0b95\u0bc1\u0b95\u0bb3\u0bcd com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = \u0b95\u0bc7\u0ba3\u0bcd\u0bae\u0bc8 \u0b87\u0b9f\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0ba4\u0bb2\u0bcd com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = \u0b87\u0ba9\u0bcd\u0b95\u0bcd\u0bb0\u0bbf\u0bae\u0bc6\u0ba3\u0bcd\u0b9f\u0bb2\u0bcd \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc0\u0b9f\u0bcd\u0b9f\u0bbe\u0bb2\u0bcd \u0bb5\u0bc6\u0b95\u0bcd\u0b9f\u0bb0\u0bcd \u0b95\u0bb0\u0bc1\u0bb5\u0bbf \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -2561,7 +2560,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -2580,9 +2578,6 @@ ui.GenericNames.Temporal-layer = \#T\:Temporal layer ui.GenericNames.Temporal-layers = \#T\:Temporal layers ui.GenericNames.Temporal-layers-found = \#T\:Temporal layers found -ui.GenericNames.Temporal-layer = \#T\:Temporal layer -ui.GenericNames.Temporal-layers = \#T\:Temporal layers -ui.GenericNames.Temporal-layers-found = \#T\:Temporal layers found org.openjump.core.ui.plugin.tools.aggregate.Aggregator.Count=\#T\:Count org.openjump.core.ui.plugin.tools.aggregate.Aggregator.Collect=\#T\:Collect org.openjump.core.ui.plugin.tools.aggregate.Aggregator.Union=\#T\:Union/Merge @@ -2755,4 +2750,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=#T:URL \ No newline at end of file +ui.GenericNames.url=#T:URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_te.properties =================================================================== --- core/trunk/src/language/jump_te.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_te.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = Error opening file\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = Change Styles com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = Affine Transform -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -1241,8 +1240,6 @@ org.openjump.core.ui.plugin.raster.nodata.ChangeRangeValuesToNoDataPlugIn.name =\#T\:Change a range of cell values to nodata org.openjump.core.ui.plugin.raster.nodata.ChangeRangeValuesToNoDataPlugIn.change=\#T\:Change this range of values org.openjump.core.ui.plugin.raster.nodata.ChangeRangeValuesToNoDataPlugIn.tooltips=\#T\:Enable to extract only the input range of values - -org.openjump.core.ui.plugin.raster.nodata.ChangeValueToNoDataPlugIn.tonodata=\#T\:to nodata value: org.openjump.core.ui.plugin.raster.color.RasterColorEditorDialog.Black-White = Black-White org.openjump.core.ui.plugin.raster.color.RasterColorEditorDialog.Blue-Green-Red = Blue-Green-Red org.openjump.core.ui.plugin.raster.color.RasterColorEditorDialog.Blue-Red = Blue-Red @@ -3070,7 +3067,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -3261,4 +3257,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=#T:URL \ No newline at end of file +ui.GenericNames.url=#T:URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_zh_CN.properties =================================================================== --- core/trunk/src/language/jump_zh_CN.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_zh_CN.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -11,7 +11,7 @@ JUMPWorkbench.status.load-extensions = \#T\:Preparing to load additional extensions JUMPWorkbench.status.restore-state = \#T\:Restoring state from previous run JUMPWorkbench.version = \u7248\u672c -JUMPWorkbench.version-locale = \u7248\u672c\t +JUMPWorkbench.version-locale = \u7248\u672c JUMPWorkbench.status.initialize-datasources = \#T\: JUMPWorkbench.status.show-workbench = \#T\: com.vividsolutions.jump.io.ShapefileReader.shp-gt-dbf = \#T\:Error reading shapefile ''{0}'' \:\n\ @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = \u9519\u8bef\u6253\u5f00\u6587\u4ef6\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = \u66f4\u6539\u6837\u5f0f com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = \u4eff\u5c04\u53d8\u6362 -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -358,7 +357,7 @@ jump.plugin.edit.NoderPlugIn.split = \#T\:Split jump.plugin.edit.NoderPlugIn.advanced-options = \#T\:Advanced Options jump.plugin.edit.NoderPlugIn.snap-rounding = \#T\:Snap-Rounding -jump.plugin.edit.NoderPlugIn.snap-rounding-makes-noding-algorithm-fully-robust = \#T\:Snap-rounding makes noding algorithm fully robust +jump.plugin.edit.NoderPlugIn.snap-rounding-makes-noding-algorithm-fully-robust = \#T\:Snap-rounding makes noding algorithm fully robust jump.plugin.edit.NoderPlugIn.snap-rounding-decimal-places = \#T\:Snap-Rounding Decimal Places jump.plugin.edit.NoderPlugIn.number-of-decimal-digits = \#T\:Number of decimal digits jump.plugin.edit.NoderPlugIn.interpolate-z = \#T\:Interpolate Z value @@ -555,7 +554,7 @@ org.openjump.core.ui.plugin.datastore.transaction.TransactionManagerPanel.modifications = \#T\:{0} modification(s) org.openjump.core.ui.plugin.datastore.transaction.TransactionManagerPanel.suppressions = \#T\:{0} suppression(s) org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.Clip-Map-to-Fence = \u526a\u8f91\u5730\u56fe\u9500\u8d43 -org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.Fence-layer-must-be-present = \u6805\u680f\u5c42\u5fc5\u987b\u5b58\u5728\t +org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.Fence-layer-must-be-present = \u6805\u680f\u5c42\u5fc5\u987b\u5b58\u5728 org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.This-operation-is-not-undoable = \u6b64\u64cd\u4f5c\u662f\u65e0\u6cd5\u8fd8\u539f org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.Visible-Only-(-see-Warning-) = \u53ef\u89c1\uff0c\u53ea\u6709\uff08\u89c1\u8b66\u544a\uff09 org.openjump.core.ui.plugin.edit.ClipToFencePlugIn.description = \u6240\u6709\u77e2\u91cf\u5c42\u5c06\u88ab\u5939\u5728\u6805\u680f\u3002\u8b66\u544a\uff1a \u5982\u679c\u4f60\u7684\u4efb\u52a1\u88c5\u6709\u5c42\u4e0d\u53ef\u89c1\uff0c\u4ed6\u4eec\u5e76\u6ca1\u6709\u88ab\u52a0\u8f7d\uff0c\u56e0\u6b64\u4e0d\u4f1a\u88ab\u88c1\u526a\u3002 @@ -648,7 +647,7 @@ org.openjump.core.ui.plugin.edittoolbox.tab.ConstraintsOptionsPanel.is-too-small-must-be-3-or-greater = \u592a\u5c0f\u4e86\uff0c\u5e94\u4e3a3\u6216\u66f4\u5927\u3002 org.openjump.core.ui.plugin.edittoolbox.tab.ConstraintsOptionsPanel.model-units = \u793a\u8303\u5355\u4f4d org.openjump.core.ui.plugin.edittoolbox.tab.ConstraintsOptionsPanel.negative-numbers-not-allowed-for-length = \u8d1f\u6570\u4e0d\u5141\u8bb8\u7684\u957f\u5ea6\u3002 -org.openjump.core.ui.plugin.edittoolbox.tab.ConstraintsOptionsPanel.parts = \u90e8\u5206\t +org.openjump.core.ui.plugin.edittoolbox.tab.ConstraintsOptionsPanel.parts = \u90e8\u5206 org.openjump.core.ui.plugin.file.DataSourceQueryChooserOpenWizard.no-queries-found = \u53d1\u73b0\u6ca1\u6709\u95ee\u9898 org.openjump.core.ui.plugin.file.DataSourceQueryChooserOpenWizard.query-not-readable = Quey\u65e0\u6cd5\u8bfb\u53d6 org.openjump.core.ui.plugin.file.FindFile.choose-current-location-of = \#T\: @@ -1560,7 +1559,7 @@ org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.transfer-attributes = \#T\:Transfer attributes org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.tolerance = \#T\:Tolerance org.openjump.core.ui.plugin.tools.VoronoiDiagramPlugIn.description = \#T\:Create the Voronoi Diagram (AKA Thiessen polygons) of a set of punctual sites.\n\ - Use a non null tolerance to make the calculation more robust. + Use a non null tolerance to make the calculation more robust. org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.Calculate-Distances = \#T\:Calculate Distances org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.Calculates-distances-description = \#T\:Calculates distance between the geometries in 2 different datasets. It can calculate\: (i) the shortest distance (sd), (ii) the shortest distance between centroids (sdc), and (iii) the Hausdorff distance (sdh, a maximum distance). org.openjump.core.ui.plugin.tools.CalculateDistancesPlugIn.layer-with-origins = \#T\:layer with origins @@ -2725,7 +2724,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=#T:Invalid WHERE clause for layer: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -2916,4 +2914,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=#T:URL \ No newline at end of file +ui.GenericNames.url=#T:URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Modified: core/trunk/src/language/jump_zh_HK.properties =================================================================== --- core/trunk/src/language/jump_zh_HK.properties 2016-12-28 14:58:30 UTC (rev 5293) +++ core/trunk/src/language/jump_zh_HK.properties 2016-12-29 12:25:19 UTC (rev 5294) @@ -175,7 +175,6 @@ com.vividsolutions.jump.workbench.ui.style.BasicStylePanel.error-opening-file = \u932f\u8aa4\u6253\u958b\u6587\u4ef6\: {0} com.vividsolutions.jump.workbench.ui.style.ChangeStylesPlugIn = \u66f4\u6539\u6a23\u5f0f com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn = \u4eff\u5c04\u8b8a\u63db -com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn=Transformaci\u00f3n af\u00edn (con vectores de deformaccion) com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message1=\#T\:Please load this image as Sextante Raster to perform a transformation com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message2=\#T\:Affine transformation not yet implemented for this type of layer com.vividsolutions.jump.workbench.ui.warp.AffineTransformPlugIn.message3=\#T\:Affine trasformation for raster currently works only on RGB image files @@ -1023,7 +1022,6 @@ org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.namefile= \#T\:File org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.raster= \#T\:Raster org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.extent= \#T\:Extent -org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.raster-statistics= \#T\:Statistics org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.name= \#T\:name org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.type= \#T\:type org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.dimension= \#T\:dimension @@ -2724,7 +2722,6 @@ com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.Invalid-layer-where-clause=\#T\:Invalid WHERE clause for layer\: jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.SQL-error=#T:SQL error -com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection.SQL-error=#T:SQL error: org.openjump.core.ui.plugin.tools.MakeValidPlugIn.decompose-multi-tooltip=\#T\:Decompose multi-geometries into simple geometries org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim=\#T\:Preserve geometry dimension org.openjump.core.ui.plugin.tools.MakeValidPlugIn.preserve-geom-dim-tooltip=\#T\:Eliminate degenerated components to preserve geometry dimension @@ -2917,4 +2914,21 @@ ui.GenericNames.show=#T:Show ui.GenericNames.user=#T:User ui.GenericNames.version=#T:Version -ui.GenericNames.url=#T:URL \ No newline at end of file +ui.GenericNames.url=#T:URL +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn=#T:Update Layer with an Attribute Join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined=#T:Attributes mapping is not defined +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers=#T:Choose layers +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description=#T:Update reference layer attribute values with join layer attribute values when reference feature ext id = join feature id.\n\ + Join attributes can be mapped to reference attributes even if their names differ.\n\ + Left join keep reference feature which do not verify the join condition while right join add features from join layer which do not verify the join condition. +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join=#T:Do not join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer=#T:Join layer +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id=#T:Join layer id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique=#T:Join layer id is not unique +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join=#T:Left join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip=#T:Check left join to keep all reference features +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes=#T:Map attributes +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id=#T:Reference layer external id +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update=#T:Reference layer to update +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join=#T:Right join +org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip=#T:Check right join to add un-joined features from join layer \ No newline at end of file Added: core/trunk/src/org/openjump/core/ui/plugin/tools/UpdateWithJoinPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/tools/UpdateWithJoinPlugIn.java (rev 0) +++ core/trunk/src/org/openjump/core/ui/plugin/tools/UpdateWithJoinPlugIn.java 2016-12-29 12:25:19 UTC (rev 5294) @@ -0,0 +1,400 @@ +package org.openjump.core.ui.plugin.tools; + +import com.vividsolutions.jump.I18N; +import com.vividsolutions.jump.feature.*; +import com.vividsolutions.jump.task.TaskMonitor; +import com.vividsolutions.jump.workbench.Logger; +import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.model.FeatureEventType; +import com.vividsolutions.jump.workbench.model.Layer; +import com.vividsolutions.jump.workbench.model.UndoableCommand; +import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory; +import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck; +import com.vividsolutions.jump.workbench.plugin.PlugInContext; +import com.vividsolutions.jump.workbench.ui.*; +import org.openjump.core.ui.plugin.AbstractThreadedUiPlugIn; + +import javax.swing.*; +import javax.swing.border.Border; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.*; +import java.util.List; + +import static com.vividsolutions.jump.workbench.ui.AttributeTypeFilter.NUMSTRING_FILTER; + +/** + * Update a layer from another layer using a join + */ +public class UpdateWithJoinPlugIn extends AbstractThreadedUiPlugIn { + + private final static String DESCRIPTION = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Description"); + //private final static String CHOOSE_LAYERS = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Choose-layers"); + private final static String REFERENCE_LAYER = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-to-update"); + private final static String JOIN_LAYER = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer"); + private final static String REFERENCE_LAYER_EXT_ID = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Reference-layer-ext-id"); + private final static String JOIN_LAYER_ID = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id"); + private final static String LEFT_JOIN = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join"); + private final static String LEFT_JOIN_TT = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Left-join-tooltip"); + private final static String RIGHT_JOIN = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join"); + private final static String RIGHT_JOIN_TT = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Right-join-tooltip"); + //private final static String ADD_ATTRIBUTES = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Add-attributes-create-new-layer"); + //private final static String ADD_ATTRIBUTES_TT = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Add-attributes-tooltip"); + private final static String MAP_ATTRIBUTES = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Map-attributes"); + private final static String DO_NOT_JOIN = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Do-not-join"); + private final static String UNDEFINED_MAPPING = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Attributes-mapping-is-not-defined"); + private final static String JOIN_NOT_UNIQUE = I18N.get("org.openjump.core.ui.plugin.tools.UpdateWithJoinPlugIn.Join-layer-id-is-not-unique"); + + private Layer referenceLayer = null; + private Layer joinLayer = null; + private String referenceLayerExtId = ""; + private String joinLayerId = ""; + private boolean left = true; + private boolean right = false; + private boolean add_attributes = false; + private boolean attributesChoosen; + private Map<String, String> attributesMapping = new HashMap<>(); + + public void initialize(PlugInContext context) throws Exception { + context.getFeatureInstaller().addMainMenuPlugin( + this, + new String[]{MenuNames.TOOLS, MenuNames.TOOLS_EDIT_ATTRIBUTES}, + this.getName() + "...", false, null, + createEnableCheck(context.getWorkbenchContext()), -1); + } + + public static MultiEnableCheck createEnableCheck(WorkbenchContext workbenchContext) { + EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext); + return new MultiEnableCheck() + .add(checkFactory.createTaskWindowMustBeActiveCheck()) + .add(checkFactory.createAtLeastNLayersMustExistCheck(2)); + } + + public boolean execute(PlugInContext context) throws Exception { + attributesChoosen = false; + MultiInputDialog dialog = initDialog(context); + GUIUtil.centreOnWindow(dialog); + dialog.setVisible(true); + if (!dialog.wasOKPressed()) { + return false; + } else { + if (!attributesChoosen) { + throw new Exception(UNDEFINED_MAPPING); + } else { + this.getDialogValues(dialog); + } + } + return true; + } + + public void run(TaskMonitor monitor, PlugInContext context) throws Exception { + + monitor.allowCancellationRequests(); + + reportNothingToUndoYet(context); + + FeatureCollection joinFC = joinLayer.getFeatureCollectionWrapper(); + int joinLayerAttributeIndex = joinFC.getFeatureSchema().getAttributeIndex(joinLayerId); + Map<String,Feature> joinMap = new HashMap<>(); + + for (Feature f : joinFC.getFeatures()) { + Object joinId = f.getAttribute(joinLayerAttributeIndex); + if (joinId == null) continue; + // If joinMap already contains this key, join is ambiguous, an exception is thrown + if (joinMap.get(joinId.toString()) != null) { + throw new Exception(JOIN_NOT_UNIQUE); + } + joinMap.put(joinId.toString(), f); + } + + if (add_attributes) { + //createNewLayer(monitor, context, joinMap); + } else { + updateLayer(monitor, context, joinMap); + } + + } + + //private void createNewLayer(TaskMonitor monitor, PlugInContext context, Map<String,Feature> joinMap) {} + + private void updateLayer(TaskMonitor monitor, PlugInContext context, Map<String,Feature> joinMap) { + + final Map<Integer,Feature> oldFeatures = new HashMap<>(); // old versions of modified features + final Map<Integer,Feature> newFeatures = new HashMap<>(); // new version of modified features + final List<Feature> added = new ArrayList<>(); // features added to baseLayer + final List<Feature> removed = new ArrayList<>(); // features removed from baseLayer + + for (Feature f : referenceLayer.getFeatureCollectionWrapper().getFeatures()) { + + Object extKey = f.getAttribute(referenceLayerExtId); + if (extKey == null) { + if (!left) { + removed.add(f); + } + } else { + Feature joinedFeature = joinMap.get(extKey.toString()); + if (joinedFeature == null) { // no join + if (!left) { + removed.add(f); + } + continue; // f is kept (left join) + } + // extKey is not null and key exists in joinLayer + Feature newFeature = f.clone(true); + boolean modified = false; + for (int i = 0 ; i < f.getSchema().getAttributeCount() ; i++) { + String name = f.getSchema().getAttributeName(i); + if (name.equals(referenceLayerExtId)) { + continue; // do not update attribute used for the join + } + String joinName = attributesMapping.get(name); + if (joinName.equals(DO_NOT_JOIN)) { + continue; // do not update if no join is defined + } + int joinIndex = joinedFeature.getSchema().getAttributeIndex(joinName); + if (Objects.equals(f.getAttribute(name), joinedFeature.getAttribute(joinIndex))) { + continue; // do not update if + } + AttributeType type = f.getSchema().getAttributeType(i); + if (type == AttributeType.STRING) newFeature.setAttribute(i, joinedFeature.getString(joinIndex)); + else if (type == AttributeType.DOUBLE) newFeature.setAttribute(i, joinedFeature.getDouble(joinIndex)); + else if (type == AttributeType.INTEGER) newFeature.setAttribute(i, joinedFeature.getInteger(joinIndex)); + else if (type == AttributeType.GEOMETRY) newFeature.setGeometry(joinedFeature.getGeometry()); + else newFeature.setAttribute(i, joinedFeature.getAttribute(joinIndex)); + modified = true; + } + if (modified) { + oldFeatures.put(f.getID(), f.clone(true)); + newFeatures.put(f.getID(), newFeature); + } + } + } + if (right) { + for (Feature f : joinLayer.getFeatureCollectionWrapper().getFeatures()) { + Object key = f.getAttribute(referenceLayerExtId); + if (key != null && joinMap.containsKey(key.toString())) continue; + Feature bf = new BasicFeature(referenceLayer.getFeatureCollectionWrapper().getFeatureSchema()); + bf.setGeometry(f.getGeometry()); + for (int i = 0 ; i < bf.getSchema().getAttributeCount() ; i++) { + String name = bf.getSchema().getAttributeName(i); + String joinName = attributesMapping.get(name); + if (name.equals(referenceLayerExtId)) joinName = joinLayerId; + if (joinName.equals(DO_NOT_JOIN)) continue; + int joinIndex = f.getSchema().getAttributeIndex(joinName); + if (f.getAttribute(joinIndex) == null) continue; + AttributeType type = bf.getSchema().getAttributeType(i); + if (type == AttributeType.STRING) bf.setAttribute(i, f.getString(joinIndex)); + else if (type == AttributeType.DOUBLE) bf.setAttribute(i, f.getDouble(joinIndex)); + else if (type == AttributeType.INTEGER) bf.setAttribute(i, f.getInteger(joinIndex)); + else if (type == AttributeType.GEOMETRY) bf.setGeometry(f.getGeometry()); + else bf.setAttribute(i, f.getAttribute(joinIndex)); + } + added.add(bf); + } + } + + referenceLayer.getLayerManager().getUndoableEditReceiver().startReceiving(); + try { + UndoableCommand command = + new UndoableCommand(I18N.get(AutoAssignAttributePlugIn.class.getName())) { + public void execute() { + for (Feature f : referenceLayer.getFeatureCollectionWrapper().getFeatures()) { + Feature newFeature = newFeatures.get(f.getID()); + if (newFeature != null) { + f.setAttributes(newFeature.getAttributes()); + } + } + for (Feature f : removed) { + referenceLayer.getFeatureCollectionWrapper().remove(f); + } + for (Feature f : added) { + referenceLayer.getFeatureCollectionWrapper().add(f); + } + referenceLayer.getLayerManager().fireFeaturesAttChanged(newFeatures.values(), + FeatureEventType.ATTRIBUTES_MODIFIED, referenceLayer, oldFeatures.values()); + referenceLayer.getLayerManager().fireGeometryModified(newFeatures.values(), + referenceLayer, oldFeatures.values()); + referenceLayer.getLayerManager().fireFeaturesChanged(added, + FeatureEventType.ADDED, referenceLayer); + referenceLayer.getLayerManager().fireFeaturesChanged(removed, + FeatureEventType.DELETED, referenceLayer); + } + public void unexecute() { + for (Feature f : referenceLayer.getFeatureCollectionWrapper().getFeatures()) { + Feature oldFeature = oldFeatures.get(f.getID()); + if (oldFeature != null) { + f.setAttributes(oldFeature.getAttributes()); + } + } + for (Feature f : removed) { + referenceLayer.getFeatureCollectionWrapper().add(f); + } + for (Feature f : added) { + referenceLayer.getFeatureCollectionWrapper().remove(f); + } + referenceLayer.getLayerManager().fireFeaturesAttChanged(oldFeatures.values(), + FeatureEventType.ATTRIBUTES_MODIFIED, referenceLayer, newFeatures.values()); + referenceLayer.getLayerManager().fireGeometryModified(oldFeatures.values(), + referenceLayer, newFeatures.values()); + referenceLayer.getLayerManager().fireFeaturesChanged(removed, + FeatureEventType.ADDED, referenceLayer); + referenceLayer.getLayerManager().fireFeaturesChanged(added, + FeatureEventType.DELETED, referenceLayer); + } + }; + command.execute(); + referenceLayer.getLayerManager().getUndoableEditReceiver().receive(command.toUndoableEdit()); + } finally { + referenceLayer.getLayerManager().getUndoableEditReceiver().stopReceiving(); + } + } + + private MultiInputDialog initDialog(final PlugInContext context) { + + final MultiInputDialog dialog = new MultiInputDialog(context.getWorkbenchFrame(), this.getName(), true); + dialog.setSideBarDescription(DESCRIPTION); + + if (referenceLayer == null || !context.getLayerManager().getLayers().contains(referenceLayer)) { + referenceLayer = context.getCandidateLayer(0); + } + final JComboBox<Layer> jcbBaseLayer = dialog.addLayerComboBox(REFERENCE_LAYER, referenceLayer, null, context.getLayerManager()); + + List<String> baseLayerAttributeList = NUMSTRING_FILTER.filter(referenceLayer); + String valBaseAttribute = baseLayerAttributeList.size() > 0 ? baseLayerAttributeList.get(0) : null; + final JComboBox<String> jcbBaseLayerId = dialog.addComboBox(REFERENCE_LAYER_EXT_ID, valBaseAttribute, baseLayerAttributeList, REFERENCE_LAYER_EXT_ID); + jcbBaseLayerId.setEnabled(baseLayerAttributeList.size() > 0); + + dialog.addSeparator(); //---- + + if (joinLayer == null || !context.getLayerManager().getLayers().contains(joinLayer)) { + joinLayer = context.getCandidateLayer(1); + } + final JComboBox<Layer> jcbJoinLayer = dialog.addLayerComboBox(JOIN_LAYER, joinLayer, null, context.getLayerManager()); + + List<String> joinLayerAttributeList = NUMSTRING_FILTER.filter(joinLayer); + String valJoinAttribute = joinLayerAttributeList.size() > 0 ? joinLayerAttributeList.get(0) : null; + final JComboBox<String> jcbJoinLayerId = dialog.addComboBox(JOIN_LAYER_ID, valJoinAttribute, joinLayerAttributeList, JOIN_LAYER_ID); + jcbJoinLayerId.setEnabled(joinLayerAttributeList.size() > 0); + + dialog.addSeparator(); //---- + + dialog.addCheckBox(LEFT_JOIN, left, LEFT_JOIN_TT); + dialog.addCheckBox(RIGHT_JOIN, right, RIGHT_JOIN_TT); + //dialog.addCheckBox(ADD_ATTRIBUTES, add_attributes, ADD_ATTRIBUTES_TT); + + jcbBaseLayer.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (jcbBaseLayer.getSelectedItem() == referenceLayer) return; + attributesChoosen = false; + referenceLayer = (Layer)jcbBaseLayer.getSelectedItem(); + List<String> baseLayerAttributeList = NUMSTRING_FILTER.filter(referenceLayer); + jcbBaseLayerId.setModel(new DefaultComboBoxModel<>(baseLayerAttributeList.toArray(new String[0]))); + jcbBaseLayerId.setEnabled(baseLayerAttributeList.size() > 0); + } + }); + + jcbBaseLayerId.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (!jcbBaseLayerId.getSelectedItem().equals(referenceLayerExtId)) attributesChoosen = false; + } + }); + + jcbJoinLayer.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if(jcbJoinLayer.getSelectedItem() == joinLayer) return; + attributesChoosen = false; + joinLayer = (Layer)jcbJoinLayer.getSelectedItem(); + List<String> joinLayerAttributeList = NUMSTRING_FILTER.filter(joinLayer); + jcbJoinLayerId.setModel(new DefaultComboBoxModel<>(joinLayerAttributeList.toArray(new String[0]))); + jcbJoinLayerId.setEnabled(joinLayerAttributeList.size() > 0); + } + }); + + jcbJoinLayerId.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (!jcbJoinLayerId.getSelectedItem().equals(joinLayerId)) attributesChoosen = false; + } + }); + + JButton mapAttributesButton = dialog.addButton(MAP_ATTRIBUTES); + mapAttributesButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + MultiInputDialog mid = initMappingDialog(context.getWorkbenchFrame(), + dialog.getLayer(REFERENCE_LAYER), + dialog.getLayer(JOIN_LAYER), + dialog.getText(REFERENCE_LAYER_EXT_ID)); + GUIUtil.centreOnWindow(mid); + mid.setVisible(true); + if (mid.wasOKPressed()) { + getMapping(mid); + attributesChoosen = true; + } + } + }); + + return dialog; + } + + + private void getDialogValues(MultiInputDialog dialog) { + this.referenceLayer = dialog.getLayer(REFERENCE_LAYER); + this.joinLayer = dialog.getLayer(JOIN_LAYER); + this.referenceLayerExtId = dialog.getText(REFERENCE_LAYER_EXT_ID); + this.joinLayerId = dialog.getText(JOIN_LAYER_ID); + this.left = dialog.getBoolean(LEFT_JOIN); + this.right = dialog.getBoolean(RIGHT_JOIN); + } + + // MultiInputDialog to set the mapping between base attributes and join attributes + private MultiInputDialog initMappingDialog(JFrame parent, Layer baseLayer, Layer joinLayer, String baseId) { + // Creates a MultiInputDialog box with a JScrollPane to handle long list of attributes + MultiInputDialog dialog = new MultiInputDialog(parent, "", true) { + protected void setMainComponent() { + currentPanel = new JPanel(new GridBagLayout()); + mainComponent = new JScrollPane(currentPanel); + Border mainComponentBorder = BorderFactory.createCompoundBorder( + BorderFactory.createEtchedBorder(), + BorderFactory.createEmptyBorder(5, 5, 5, 5) + ); + currentPanel.setBorder(mainComponentBorder); + } + }; + dialog.setPreferredSize(new Dimension(480,320)); + // For each attribute of baseLayer, creates a list of joinLayer attributes candidates + for (String name : baseLayer.getFeatureCollectionWrapper().getFeatureSchema().getAttributeNames()) { + if (name.equals(baseId)) continue; + AttributeType type = baseLayer.getFeatureCollectionWrapper().getFeatureSchema().getAttributeType(name); + AttributeTypeFilter filter = AttributeTypeFilter.ALL_FILTER; + if (type != AttributeType.STRING) { + if (type == AttributeType.GEOMETRY) filter = AttributeTypeFilter.GEOMETRY_FILTER; + if (type == AttributeType.DOUBLE) filter = AttributeTypeFilter.DOUBLE_FILTER; + if (type == AttributeType.INTEGER) filter = AttributeTypeFilter.NUMERIC_FILTER; + if (type == AttributeType.LONG) filter = AttributeTypeFilter.NUMERIC_FILTER; + if (type == AttributeType.DOUBLE) filter = AttributeTypeFilter.NUMERIC_FILTER; + if (type == AttributeType.DATE) filter = AttributeTypeFilter.DATE_FILTER; + if (type == AttributeType.BOOLEAN) filter = AttributeTypeFilter.BOOLEAN_FILTER; + } + List<String> candidates = filter.filter(joinLayer); + candidates.add(0, DO_NOT_JOIN); + candidates.remove(joinLayerId); + dialog.addComboBox(name, candidates.contains(name) ? name : DO_NOT_JOIN, candidates, ""); + } + return dialog; + } + + // Get mapping between base attributes and join attributes + private void getMapping(MultiInputDialog dialog) { + FeatureSchema schema = referenceLayer.getFeatureCollectionWrapper().getFeatureSchema(); + for (int i = 0 ; i < schema.getAttributeCount() ; i++) { + if (!dialog.getText(schema.getAttributeName(i)).equals("")) { + attributesMapping.put(schema.getAttributeName(i), dialog.getText(schema.getAttributeName(i))); + } + } + } +} ------------------------------------------------------------------------------ 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