Revision 42283 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/aggregate/AbstractMultiPrimitive.java

View differences:

AbstractMultiPrimitive.java
29 29
import org.gvsig.fmap.geom.Geometry;
30 30
import org.gvsig.fmap.geom.aggregate.MultiPrimitive;
31 31
import org.gvsig.fmap.geom.handler.Handler;
32
import org.gvsig.fmap.geom.jts.GeometryJTS;
32 33
import org.gvsig.fmap.geom.operation.GeometryOperationException;
33 34
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
34 35
import org.gvsig.fmap.geom.primitive.Primitive;
......
57 58
     * @see org.gvsig.fmap.geom.aggregate.MultiPrimitive#addPrimitive(org.gvsig.fmap.geom.primitive.Primitive)
58 59
     */
59 60
    public void addPrimitive(Primitive primitive) {
60
        primitives.add(fixPrimitive(primitive));
61
        Geometry geom = fixPrimitive(primitive);
62
        if (geom != null) {
63
            if (geom instanceof MultiPrimitive) {
64
                for (int i = 0; i < ((MultiPrimitive) geom).getPrimitivesNumber(); i++) {
65
                    addPrimitive(((MultiPrimitive) geom).getPrimitiveAt(i));
66
                }
67
            } else {
68
                primitives.add((Primitive) geom);
69
            }
70
        }
61 71
    }
62 72

  
63 73
    /**
64 74
     * @param primitive
65 75
     * @return
66 76
     */
67
    protected abstract Primitive fixPrimitive(Primitive primitive);
77
    protected abstract Geometry fixPrimitive(Primitive primitive);
68 78

  
69 79

  
70 80
    protected Geometry clonePrimitives(AbstractMultiPrimitive clone) {

Also available in: Unified diff