Index: /applications/editors/josm/plugins/opendata/build.xml
===================================================================
--- /applications/editors/josm/plugins/opendata/build.xml	(revision 30096)
+++ /applications/editors/josm/plugins/opendata/build.xml	(revision 30097)
@@ -1,5 +1,5 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <project name="opendata" default="dist" basedir=".">
-    <property name="plugin.main.version" value="6358"/>
+    <property name="plugin.main.version" value="6412"/>
     <property name="plugin.author" value="Don-vip"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.opendata.OdPlugin"/>
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 30096)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 30097)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.associations.Club3eAgeHandler;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.citoyennete.BureauxVoteDecoupageHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.citoyennete.BureauxVoteHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.citoyennete.MairieAnnexeHandler;
@@ -90,4 +91,5 @@
         handlers.add(PMRHandler.class);
         handlers.add(PistesCyclablesHandler.class);
+        handlers.add(BureauxVoteDecoupageHandler.class);
         handlers.add(BureauxVoteHandler.class);
         handlers.add(Club3eAgeHandler.class);
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteDecoupageHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteDecoupageHandler.java	(revision 30097)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteDecoupageHandler.java	(revision 30097)
@@ -0,0 +1,45 @@
+//    JOSM opendata plugin.
+//    Copyright (C) 2011-2012 Don-vip
+//
+//    This program is free software: you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation, either version 3 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful,
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//    GNU General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.citoyennete;
+
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler;
+
+public class BureauxVoteDecoupageHandler extends ToulouseDataSetHandler {
+
+    public BureauxVoteDecoupageHandler() {
+        super(14401, "boundary=polling_station");
+        setWikiPage("Découpage des bureaux de vote");
+        setCategory(CAT_CITOYENNETE);
+    }
+
+    @Override
+    public boolean acceptsFilename(String filename) {
+        return acceptsCsvKmzTabFilename(filename, "Bureaux_vote_decoupage");
+    }
+
+    @Override
+    public void updateDataSet(DataSet ds) {
+        for (Relation r : ds.getRelations()) {
+            replace(r, "NOM", "name");
+            replace(r, "IDENTIFIANT", REF_TOULOUSE_METROPOLE);
+            r.put("boundary", "polling_station");
+            r.remove("ADRESSE");
+            r.remove("color");
+        }
+    }
+}
Index: /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteHandler.java	(revision 30096)
+++ /applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteHandler.java	(revision 30097)
@@ -38,4 +38,15 @@
             replace(r, "TEXT", "name");
             r.put("polling_station", "2012");
+            r.put("building", "yes");
+            String name = r.getName();
+            if (name != null) {
+                if (name.contains("ECOLE") || name.contains("MATERNELLE")) {
+                    r.put("amenity", "school");
+                } else if (name.contains("MAIRIE")) {
+                    r.put("amenity", "townhall");
+                } else if (name.contains("PISCINE")) {
+                    r.put("leisure", "swimming_pool");
+                }
+            }
         }
     }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/DataSetUpdater.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/DataSetUpdater.java	(revision 30096)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/DataSetUpdater.java	(revision 30097)
@@ -21,5 +21,10 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.SimplifyWayAction;
+import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 
@@ -40,4 +45,23 @@
 			handler.checkDataSetSource(dataSet);
 			handler.checkNames(dataSet);
+			// Replace multipolygons with single untagged member by their sole member
+			for (Relation r : dataSet.getRelations()) {
+			    if (r.isMultipolygon() && r.getMembersCount() == 1) {
+			        OsmPrimitive outer = r.getMember(0).getMember();
+			        if (!outer.isTagged()) {
+			            r.remove("type");
+			            r.removeMember(0);
+                        outer.setKeys(r.getKeys());
+			            dataSet.removePrimitive(r);
+			        }
+			    }
+			}
+			// Simplify ways geometries
+			for (Way w : dataSet.getWays()) {
+			    SequenceCommand command = Main.main.menu.simplifyWay.simplifyWay(w, 0.25);
+			    if (command != null) {
+			        Main.main.undoRedo.addNoRedraw(command);
+			    }
+			}
 		}
 	}
