Revision 42811

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc/JDBCServerExplorer.java
369 369

  
370 370
        try {
371 371
            return (List) helper.doConnectionAction(action);
372
        } catch(JDBCSQLException e) {
373
            throw e;
372 374
        } catch (Exception e) {
373
            throw new ReadException(this.getProviderName(), e);
375
            throw new ReadException(this.getProviderName(),e);
374 376
        }
375 377
    }
376 378

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/exception/ReadException.java
36 36
	 *
37 37
	 */
38 38
	private static final long serialVersionUID = -8512708060535066804L;
39
	private final static String MESSAGE_FORMAT = "Exception reading '%(store)'.";
39
	private final static String MESSAGE_FORMAT = "There was errors loading from '%(store)'.";
40 40
	private final static String MESSAGE_KEY = "_ReadException";
41 41

  
42 42
	public ReadException(String store, Throwable cause) {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/exception/DataRuntimeException.java
34 34
	 *
35 35
	 */
36 36
	private static final long serialVersionUID = -5882808169007262182L;
37
	protected Map values = new HashMap();
38 37

  
39 38
	public DataRuntimeException(String messageFormat, Throwable cause,
40 39
			String messageKey, long code) {
......
45 44
		super(messageFormat, messageKey, code);
46 45
	}
47 46

  
48
	protected void setValue(String name, String value) {
49
		this.values.put(name, value);
50
	}
51

  
52
	protected Map values() {
53
		return this.values;
54
	}
55 47
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/exception/ReadRuntimeException.java
36 36
	 *
37 37
	 */
38 38
	private static final long serialVersionUID = -7756645643644789613L;
39
	private final static String MESSAGE_FORMAT = "Exception reading from a store of type '%(store)'.";
39
	private final static String MESSAGE_FORMAT = "There was errors loading the feature '%(oid)' from '%(store)'.";
40 40
	private final static String MESSAGE_KEY = "_ReadRuntimeException";
41 41

  
42 42
	public ReadRuntimeException(String store, Throwable cause) {
43 43
		super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
44 44
		setValue("store", store);
45
		setValue("oid", "unknown");
45 46
	}
47

  
48
        public ReadRuntimeException(String store, Object oid,Throwable cause) {
49
		super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
50
		setValue("store", store);
51
		setValue("oid", String.format("%s", oid));
52
	}
53
        
54
        protected ReadRuntimeException(String fmt, Throwable cause, String msgkey, int code) {
55
            super(fmt, cause, msgkey, code);
56
        }        
57
        
58
        protected ReadRuntimeException(String fmt, Throwable cause, String msgkey, long code) {
59
            super(fmt, cause, msgkey, code);
60
        }
46 61
}
47 62

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/utils/AbstractSHPReader.java
25 25
import java.nio.ByteOrder;
26 26

  
27 27
import org.gvsig.fmap.dal.exception.ReadException;
28
import org.gvsig.fmap.dal.exception.ReadRuntimeException;
29
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
28 30
import org.gvsig.fmap.geom.Geometry;
29 31
import org.gvsig.fmap.geom.aggregate.MultiPrimitive;
30 32
import org.gvsig.fmap.geom.exception.CreateGeometryException;
......
41 43
 *
42 44
 */
43 45
public abstract class AbstractSHPReader implements SHPReader {
46
    private final SHPStoreParameters params;
44 47

  
45 48
    /**
46 49
     *
50
     * @param params
47 51
     */
48
    public AbstractSHPReader() {
49
        // TODO Auto-generated constructor stub
52
    public AbstractSHPReader(SHPStoreParameters params) {
53
        this.params = params;
50 54
    }
55
    
56
    protected class InvalidNumberOfPointsInLinearRingException extends ReadRuntimeException {
51 57

  
58
        private final static String MESSAGE_FORMAT = "Invalid number of points in LinearRing (found %(NumPoints) - must be 0 or >= 4).\nCheck 'Fix LinearRings' in the shape's properties of the add layer dialog to try fix it.";
59
        private final static String MESSAGE_KEY = "_InvalidNumberOfPointsInLinearRingException";
60
        private static final long serialVersionUID = -8265770463632826027L;
61

  
62
        public InvalidNumberOfPointsInLinearRingException(int numPoints) {
63
            super(MESSAGE_FORMAT, null, MESSAGE_KEY, serialVersionUID);
64
            setValue("NumPoints", numPoints);
65
            this.getMessage();
66
        }
67
    }
68
    
69
    public void checkNumVerticesOfRing(Ring ring ) throws InvalidNumberOfPointsInLinearRingException {
70
            if( ring.getNumVertices()<4 ) {
71
                if( this.fixLinearRings() ) {
72
                    Point p = ring.getVertex(ring.getNumVertices()-1);
73
                    while( ring.getNumVertices()<4 ) {
74
                        p = (Point) p.cloneGeometry();
75
                        ring.addVertex(p);
76
                    }
77
                } else {
78
                    throw new InvalidNumberOfPointsInLinearRingException(ring.getNumVertices());
79
                }
80
            }        
81
    }
82
    
83
    public boolean fixLinearRings() {
84
        return params.getFixLinearRings();
85
    }
86
    
52 87
    /**
53 88
     * @param p
54 89
     * @param bb
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/utils/SHPReader2D.java
23 23
package org.gvsig.fmap.dal.store.shp.utils;
24 24

  
25 25
import java.nio.ByteOrder;
26
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
26 27

  
27 28
import org.gvsig.fmap.geom.Geometry;
28 29
import org.gvsig.fmap.geom.GeometryLocator;
......
49 50
    /**
50 51
     *
51 52
     */
52
    public SHPReader2D() {
53
        // TODO Auto-generated constructor stub
53
    public SHPReader2D(SHPStoreParameters params) {
54
        super(params);
54 55
    }
55 56

  
56 57
    /* (non-Javadoc)
......
161 162
                pointsCounter++;
162 163
            }
163 164
            ring.closePrimitive();
165
            checkNumVerticesOfRing(ring);
164 166
            if (ring.isCCW() && polygon!=null) {
165 167
                // Los anillos interiores deben ser CCW pero si encontramos un
166 168
                // anillo interior que no est? envuelto en un pol?gono
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/utils/SHPFile2.java
87 87

  
88 88
    private boolean useNullGeometry = false;
89 89

  
90
    private boolean allowInconsistenciesInGeometryTypeWarningShow = false;
91 90
    private SHPReader reader;
92 91

  
93 92
    public SHPFile2(SHPStoreParameters params) {
......
230 229

  
231 230
        switch (subType) {
232 231
        case SUBTYPES.GEOM2D:
233
            reader = new SHPReader2D();
232
            reader = new SHPReader2D(this.params);
234 233
            break;
235 234
        case SUBTYPES.GEOM2DM:
236
            reader = new SHPReader2DM();
235
            reader = new SHPReader2DM(this.params);
237 236
            break;
238 237
        case SUBTYPES.GEOM3DM:
239
            reader = new SHPReader3DM();
238
            reader = new SHPReader3DM(this.params);
240 239
            break;
241 240

  
242 241
        default:
......
391 390
         * huge (absurd) array, so it's safer to return a null geometry
392 391
         */
393 392
        if (shapeType != type) {
394
            if( !allowInconsistenciesInGeometryTypeWarningShow ) {
395
                logger.warn("Geometry type of Shape ("+type+") does not match the geometry found ("+shapeType+") in the shape '"+this.params.getSHPFileName()+".");
396
                allowInconsistenciesInGeometryTypeWarningShow = true;
397
            }
398 393
            if( ! this.params.getAllowInconsistenciesInGeometryType() ) {
399
                return getNullGeometry();
394
                throw new InconsistenciesInGeometryTypeException(shapeType);
400 395
            }
401 396
        }
402 397

  
403 398
        // retrieve that shape.
404
        // tempRecord.setShape(readShape(tempShapeType, tempContentLength, in));
405 399
        switch (type) {
406 400
        case (SHP.POINT2D):
407 401
        case (SHP.POINT3D):
......
430 424
        }
431 425
        return null;
432 426
    }
427
    
428
    private class InconsistenciesInGeometryTypeException extends ReadException {
433 429

  
430
        private final static String MESSAGE_FORMAT = "The geometry type  (%(geomTypeOfHeader)) of the shape file (%(fname)) does not match the type of the current geometry (%(geomTypeOfGeometry)).\nCheck 'Allow inconsistencies in geometry type' in the shape's properties of the add layer dialog to ignore it.";
431
        private final static String MESSAGE_KEY = "_InconsistenciesInGeometryTypeException";
432
        private static final long serialVersionUID = 8991813814092628916L;
433

  
434
        public InconsistenciesInGeometryTypeException(int geomTypeOfGeometry) {
435
            super(MESSAGE_FORMAT, null, MESSAGE_KEY, serialVersionUID);
436
            setValue("geomTypeOfHeader", SHP.getTypeName(type));
437
            setValue("geomTypeOfGeometry", SHP.getTypeName(geomTypeOfGeometry));
438
            setValue("fname", params.getSHPFile().getName());
439
            
440
        }
441
    }
442

  
434 443
    private long getPositionForRecord(long numRec) {
435 444
        // shx file has a 100 bytes header, then, records
436 445
        // 8 bytes length, one for each entity.
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/utils/SHPReader2DM.java
25 25
import java.nio.ByteOrder;
26 26

  
27 27
import org.gvsig.fmap.dal.exception.ReadException;
28
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
28 29
import org.gvsig.fmap.geom.Geometry;
29 30
import org.gvsig.fmap.geom.GeometryLocator;
30 31
import org.gvsig.fmap.geom.GeometryManager;
......
50 51
    /**
51 52
     *
52 53
     */
53
    public SHPReader2DM() {
54
        // TODO Auto-generated constructor stub
54
    public SHPReader2DM(SHPStoreParameters params) {
55
        super(params);
55 56
    }
56 57

  
57 58
    /* (non-Javadoc)
......
170 171
                pointsCounter++;
171 172
            }
172 173
            ring.closePrimitive();
174
            checkNumVerticesOfRing(ring);
173 175
            if (ring.isCCW() && polygon!=null) {
174 176
                // Los anillos interiores deben ser CCW pero si encontramos un
175 177
                // anillo interior que no est? envuelto en un pol?gono
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/utils/SHPReader3DM.java
25 25
import java.nio.ByteOrder;
26 26

  
27 27
import org.gvsig.fmap.dal.exception.ReadException;
28
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
28 29
import org.gvsig.fmap.geom.Geometry;
29 30
import org.gvsig.fmap.geom.GeometryLocator;
30 31
import org.gvsig.fmap.geom.GeometryManager;
......
50 51
    /**
51 52
     *
52 53
     */
53
    public SHPReader3DM() {
54
        // TODO Auto-generated constructor stub
54
    public SHPReader3DM(SHPStoreParameters params) {
55
        super(params);
55 56
    }
56 57

  
57 58
    /* (non-Javadoc)
......
175 176
                pointsCounter++;
176 177
            }
177 178
            ring.closePrimitive();
179
            checkNumVerticesOfRing(ring);
178 180
            if (ring.isCCW() && polygon!=null) {
179 181
                // Los anillos interiores deben ser CCW pero si encontramos un
180 182
                // anillo interior que no est? envuelto en un pol?gono
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPFeatureProvider.java
52 52
		try {
53 53
			this.store.loadFeatureProviderByIndex(this);
54 54
		} catch (DataException e) {
55
			throw new ReadRuntimeException("DBFFeatureProvider.load", e);
55
                    throw new ReadRuntimeException(getNameForMessages(), this.getOID(), e);
56 56
		} finally {
57 57
			loading = false;
58 58
			loaded = true;
59 59
		}
60 60
	}
61
        
62
        protected String getNameForMessages() {
63
            // Solo con proposito de mostrar en mensajes de error.
64
            try {
65
                return this.store.getName();
66
            } catch(Exception ex) {
67
                return "unknown";
68
            }
69
        }
61 70

  
62 71
	public void set(int i, Object value) {
63 72
		this.load();
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPStoreProvider.java
274 274
    }
275 275

  
276 276
    public String getProviderName() {
277
        return NAME;
277
        return NAME; 
278 278
    }
279 279

  
280 280
    public boolean allowWrite() {
......
338 338
                    if( this.getShpParameters().getLoadCorruptGeometriesAsNull() ) {
339 339
                        geom = null;
340 340
                    } else {
341
                        throw new ReadException(getProviderName(), e);
341
                        throw new ReadGeometryException(getName(), featureProvider.getOID(), e);
342 342
                    }
343 343
                }
344 344
                featureProvider.set(i, geom);
......
350 350
        }
351 351

  
352 352
    }
353
    
354
    public class ReadGeometryException extends ReadException {
353 355

  
356
        private final static String MESSAGE_FORMAT = "There was errors loading a geometry from '%(store)'.\nCheck 'Load corrupt geometries as null' in the shape's properties of the add layer dialog to skip corrupt geometries.";
357
        private final static String MESSAGE_KEY = "_ReadGeometryException";
358
        private static final long serialVersionUID = 2626155328734197112L;
359

  
360
        public ReadGeometryException(String store, Object oid, Throwable cause) {
361
            super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
362
            setValue("store", store);
363
            setValue("storeParameters",getParameters());
364
        }
365
    }
366

  
354 367
    private boolean hasDBFAttributes(FeatureType featureType, boolean hasGeometry) {
355 368
        FeatureAttributeDescriptor[] attributes = featureType.getAttributeDescriptors();
356 369
        // If there aren't any attributes, nor has any DBF attributes
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPStoreParameters.java
47 47
    private static final String USE_NULLGEOMETRY_PARAMTER_NAME = "useNullGeometry";
48 48
    private static final String ALLOW_INCONSISTENCIES_IN_GEOMETRY_TYPE = "allowInconsistenciesInGeometryType";
49 49
    private static final String LOAD_CORRUPT_GEOMETRIES_AS_NULL = "loadCorruptGeometriesAsNull";
50
    private static final String FIX_LINEARRINGS = "fixLinearRings";
50 51

  
51 52
	public SHPStoreParameters() {
52 53
		this(PARAMETERS_DEFINITION_NAME);
......
190 191
        public boolean getLoadCorruptGeometriesAsNull() {
191 192
		return BooleanUtils.isTrue((Boolean) getDynValue(LOAD_CORRUPT_GEOMETRIES_AS_NULL));
192 193
        }
194
        
195
        public boolean getFixLinearRings() {
196
		return BooleanUtils.isTrue((Boolean) getDynValue(FIX_LINEARRINGS));
197
        }
193 198
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/resources/org/gvsig/fmap/dal/store/shp/SHPParameters.xml
38 38
            <description>Store the parameters need to open a shp file
39 39
            </description>
40 40
            <fields>
41
                <field name="dbfFile" type="file" mandatory="false" group="Advanced">
42
                    <description>dbf file</description>
43
                </field>
44
                <field name="shxFile" type="file" mandatory="false" group="Advanced">
45
                    <description>The shx file associated to this shape file
46
                    </description>
47
                </field>
48 41
                <field name="shpFile" type="file" mandatory="true" group="Basic">
49 42
                    <description>The shp file associated to this shape file
50 43
                    </description>
......
53 46
                    <description>The coordinate reference system used in this shape
54 47
                        file</description>
55 48
                </field>
56
                <field name="useNullGeometry" label="Use NullGeometry instead of null" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
49

  
50

  
51
                <field order="5" name="dbfFile" type="file" mandatory="false" group="Advanced">
52
                    <description>dbf file</description>
53
                </field>
54
                <field order="6" name="shxFile" type="file" mandatory="false" group="Advanced">
55
                    <description>The shx file associated to this shape file
56
                    </description>
57
                </field>
58
                
59
                <field order="200" name="useNullGeometry" label="Use NullGeometry instead of null" type="boolean" group="Advanced" hidden="true" mandatory="false" defaultValue="false">
57 60
                    <description>If set, use NullGeometry object instead a null value</description>
58 61
                </field>
59
                <field name="allowInconsistenciesInGeometryType" label="Allow inconsistencies in geometry type" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
62
                <field order="210" name="allowInconsistenciesInGeometryType" label="Allow inconsistencies in geometry type" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
60 63
                    <description>If set, attempts to load the geometry but does not match the type of shape file.</description>
61 64
                </field>
62
                <field name="loadCorruptGeometriesAsNull" label="Load corrupt geometries as null" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
65
                <field order="220" name="loadCorruptGeometriesAsNull" label="Load corrupt geometries as null" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
63 66
                    <description>If set, load geometries that have inconsistencies as null and not fails.</description>
64 67
                </field>
68
                <field order="230" name="fixLinearRings" label="Fix LinearRings" type="boolean" mandatory="false" group="Advanced" defaultValue="false">
69
                    <description>If set, fix LinearRings to minimum four vertices duplicating last vertex.</description>
70
                </field>
65 71
            </fields>
66 72
        </class>
67 73

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/resources/org/gvsig/fmap/dal/store/dbf/DBFParameters.xml
54 54
            <value label="UTF-16LE">UTF-16LE</value>
55 55
          </availableValues>
56 56
        </field>
57
        <field name="handleDatesAsStrings" label="Handle dates as strings" type="boolean" mandatory="false" defaultValue="false" group="Advanced">
58
          <description>If set handle fields of date types as strings.</description>
59
        </field>
60
        <field name="locale" type="string" mandatory="true" defaultValue="DEFAULT" group="Advanced">
57
        
58
        
59
        <field order="10" name="locale" type="string" mandatory="true" defaultValue="DEFAULT" group="Advanced">
61 60
          <description>Locale used to parse dates (BCP47 language tag representing the locale)</description>
62 61
  	  <availableValues>
63 62
            <value label="Default (use system locale)">DEFAULT</value>
......
75 74
            <value label="Us">en-US</value>
76 75
          </availableValues>          
77 76
        </field>  
78
        <field name="dateFormat" label="Date format" type="string" mandatory="false" defaultValue="" group="Advanced">
77
        <field order="30" name="dateFormat" label="Date format" type="string" mandatory="false" defaultValue="" group="Advanced">
79 78
          <description>Date format used to parse fields of type date.</description>
80 79
        </field>             
80
        <field order="100" name="handleDatesAsStrings" label="Handle dates as strings" type="boolean" mandatory="false" defaultValue="false" group="Advanced">
81
          <description>If set handle fields of date types as strings.</description>
82
        </field>
81 83
      </fields>
82 84
    </class>
83 85

  
......
88 90
        <class namespace="dal" name="NewProviderParameters"/>
89 91
      </extends>
90 92
      <fields>
91
        <field name="codePage" type="Integer" mandatory="false"  group="Advanced">          
93
        <field order="20" name="codePage" type="Integer" mandatory="false"  group="Advanced">          
92 94
          <description>Code page used in this file</description>
93 95
          <availableValues>
94 96
            <value label="DOS USA">0x01</value>
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/MyTransform.java
115 115
			geom = geomManager.createPoint(source.getDouble(xname), source
116 116
					.getDouble(yname), Geometry.SUBTYPES.GEOM2D);
117 117
		} catch (CreateGeometryException e) {
118
			throw new ReadException("XYTranform", e);
118
			throw new XYTransformException(e);
119 119
		}
120 120
		target.setGeometry(this.geomName, geom);
121 121
	}
122 122

  
123
        public class XYTransformException extends DataException {
124
            private final static String MESSAGE_FORMAT = "Problems apply XYTransform, can't create point.";
125
            private final static String MESSAGE_KEY = "_XYTransformException";
126
            private static final long serialVersionUID = -3556249688758572523L;
123 127

  
128
            public XYTransformException(Throwable cause) {
129
                    super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
130
            }            
131
        }
132

  
124 133
    public void saveToState(PersistentState state) throws PersistenceException {
125 134
		state.set("xname", xname);
126 135
		state.set("yname", yname);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/DBFFeatureProvider.java
51 51
		try {
52 52
			this.store.loadFeatureProviderByIndex(this);
53 53
		} catch (DataException e) {
54
			throw new ReadRuntimeException("DBFFeatureProvider.load", e);
54
			throw new ReadRuntimeException(getNameForMessages(), this.getOID(), e);
55 55
		} finally {
56 56
			loading = false;
57 57
			loaded = true;
58 58
		}
59 59
	}
60
        
61
        protected String getNameForMessages() {
62
            // Solo con proposito de mostrar en mensajes de error.
63
            try {
64
                return this.store.getName();
65
            } catch(Exception ex) {
66
                return "unknown";
67
            }
68
        }
60 69

  
61 70
	public void set(int i, Object value) {
62 71
		this.load();
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/DBFSetProvider.java
111 111
				index++;
112 112
				return ret;
113 113
			} catch (DataException e) {
114
				throw new ReadRuntimeException(getDBFStoreProvider().getProviderName(),
115
						e);
114
				throw new ReadRuntimeException(getNameForMessages(), index,e);
116 115
			}
117 116
		}
118 117

  
......
127 126
		protected DBFStoreProvider getDBFStoreProvider() {
128 127
			return (DBFStoreProvider) getFeatureStoreProvider();
129 128
		}
129
                
130
                protected String getNameForMessages() {
131
                    // Solo con proposito de mostrar en mensajes de error.
132
                    try {
133
                        return getFeatureStoreProvider().getName();
134
                    } catch(Exception ex) {
135
                        return "unknown";
136
                    }
137
                }
130 138

  
131 139
		@Override
132 140
		protected void doDispose() throws BaseException {
......
152 160
				getDBFStoreProvider().initFeatureProviderByIndex(this.data,
153 161
						index, type);
154 162
			} catch (DataException e) {
155
				throw new ReadRuntimeException("next", e);
163
				throw new ReadRuntimeException(getNameForMessages(), index, e);
156 164
			}
157 165
			index++;
158 166
			return this.data;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/DBFStoreProvider.java
205 205
            params.setRoot(this.getDBFParameters().getDBFFile().getParent());
206 206
            return manager.openServerExplorer(FilesystemServerExplorer.NAME, params);
207 207
        } catch (DataException e) {
208
            throw new ReadException(this.getProviderName(), e);
208
            throw new ReadException(this.getName(), e);
209 209
        } catch (ValidateDataParametersException e) {
210 210
            // TODO Auto-generated catch block
211
            throw new ReadException(this.getProviderName(), e);
211
            throw new ReadException(this.getName(), e);
212 212
        }
213 213
    }
214 214

  
......
489 489
        try {
490 490
            value = this.dbfFile.getStringFieldValue(rowIndex, dbfIndex);
491 491
        } catch (DataException e) {
492
            throw new ReadException(this.getProviderName(), e);
492
            throw new ReadException(this.getName(), e);
493 493
        }
494 494
        value = value.trim();
495 495
        int fieldType = descriptor.getType();
......
748 748

  
749 749
        if (index >= rec_count) {
750 750

  
751
            ReadException rex = new ReadException(NAME,
751
            ReadException rex = new ReadException(this.getName(),
752 752
                    new ArrayIndexOutOfBoundsException(
753 753
                            "Index of requested feature ("
754 754
                            + index + ") is >= record count (" + rec_count + ")"));
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/IndexFeatureSet.java
78 78
			try {
79 79
				return store.getFeatureStore().getFeatureByReference(ref);
80 80
			} catch (DataException e) {
81
				throw new ReadRuntimeException(store.getName(), e);
81
				throw new ReadRuntimeException(store.getName(),oid, e);
82 82
			}
83 83
		}
84 84

  
......
118 118

  
119 119
				return feature;
120 120
			} catch (DataException e) {
121
				throw new ReadRuntimeException(store.getName(), e);
121
				throw new ReadRuntimeException(store.getName(),oid, e);
122 122
			}
123 123
		}
124 124

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/FLayerStatus.java
157 157
		layerErrors.add(error);
158 158
	}
159 159

  
160
        public void setLayerError(Exception ex) {
161
            layerErrors.clear();
162
            layerErrors.add(ex);
163
        }
164
        
160 165
	public FLayerStatus cloneStatus(){
161 166
		FLayerStatus newStatus = new FLayerStatus();
162 167
		newStatus.layerErrors.addAll(this.layerErrors);
......
239 244
	public List getErrors() {
240 245
		return layerErrors;
241 246
	}
242

  
247
        
243 248
	/**
244 249
	 * <p>Returns if has been loaded successfully the driver for managing the layer.</p>
245 250
	 * 
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/LayerChangeSupport.java
28 28

  
29 29
import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendChangedEvent;
30 30
import org.gvsig.fmap.mapcontext.rendering.legend.events.listeners.LegendListener;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
31 33

  
32 34

  
33 35

  
......
36 38
 *
37 39
 */
38 40
public class LayerChangeSupport {
41
        private static final Logger logger = LoggerFactory.getLogger(LayerChangeSupport.class);
39 42
	/**
40 43
	 * <p>The legend listeners of a layer.</p>
41 44
	 */
......
47 50
	 * @param listener the legend listener
48 51
	 */
49 52
	public void addLayerListener(LegendListener listener) {
50
		listeners.add(listener);
53
            if( listener == null ) {
54
                return;
55
            }
56
            listeners.add(listener);
51 57
	}
52 58

  
53 59
	/**
......
66 72
	 */
67 73
	public void callLegendChanged(LegendChangedEvent e) {
68 74
            for (LegendListener listener : listeners) {
69
                listener.legendChanged(e);
75
                try {
76
                    listener.legendChanged(e);
77
                } catch(Exception ex) {
78
                    logger.warn("Error calling listener '"+listener.toString()+"'.",ex);
79
                }
70 80
            }
71 81
	}
72 82
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/FLyrDefault.java
26 26
import java.awt.Image;
27 27
import java.awt.geom.Point2D;
28 28
import java.net.URI;
29
import java.util.ArrayList;
29
import java.util.HashSet;
30 30
import java.util.Iterator;
31 31
import java.util.List;
32 32
import java.util.Map;
33
import java.util.Set;
33 34

  
34 35
import org.cresques.cts.ICoordTrans;
35 36
import org.cresques.cts.IProjection;
......
150 151
	 * @see #removeLayerListener(LayerListener)
151 152
	 * @see #callEditionChanged(LayerEvent)
152 153
	 */
153
	protected ArrayList layerListeners = new ArrayList();
154
	protected Set<LayerListener> layerListeners = new HashSet<>();
154 155

  
155 156
	//by default, all is active, visible and avalaible
156 157
	/**
......
434 435
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#addLayerListener(com.iver.cit.gvsig.fmap.layers.LayerListener)
435 436
	 */
436 437
	public boolean addLayerListener(LayerListener o) {
437
		if (layerListeners.contains(o)) {
438
			return false;
439
		}
440
		return layerListeners.add(o);
438
            if( o == null ) {
439
                return true;
440
            }
441
            return layerListeners.add(o);
441 442
	}
442 443
	/*
443 444
	 * (non-Javadoc)
......
457 458
	 *
458 459
	 */
459 460
	private void callDrawValueChanged(LayerEvent e) {
460
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
461
			LayerListener listener = (LayerListener) iter.next();
462

  
463
			listener.drawValueChanged(e);
464
		}
461
           for (LayerListener listener : this.layerListeners) {
462
               try {
463
                   listener.drawValueChanged(e);
464
               } catch (Exception ex) {
465
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
466
               }
467
           }                
465 468
	}
466 469
	/**
467 470
	 * Called by the method {@linkplain #setName(String)}. Notifies all listeners associated to this layer,
......
472 475
	 * @see #setName(String)
473 476
	 */
474 477
	private void callNameChanged(LayerEvent e) {
475
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
476
			LayerListener listener = (LayerListener) iter.next();
477

  
478
			listener.nameChanged(e);
479
		}
478
           for (LayerListener listener : this.layerListeners) {
479
               try {
480
                   listener.nameChanged(e);
481
               } catch (Exception ex) {
482
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
483
               }
484
           }                
480 485
	}
481 486

  
482 487
	/**
......
488 493
	 * @see #setVisible(boolean)
489 494
	 */
490 495
	private void callVisibilityChanged(LayerEvent e) {
491
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
492
			LayerListener listener = (LayerListener) iter.next();
493

  
494
			listener.visibilityChanged(e);
495
		}
496
           for (LayerListener listener : this.layerListeners) {
497
               try {
498
                   listener.visibilityChanged(e);
499
               } catch (Exception ex) {
500
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
501
               }
502
           }                                
496 503
	}
497 504

  
498 505
	/**
......
502 509
	 * @param e a layer event with the name of the property that has changed
503 510
	 *
504 511
	 * @see #setActive(boolean)
505
	 */
506
	private void callActivationChanged(LayerEvent e) {
507
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
508
			LayerListener listener = (LayerListener) iter.next();
512
         */
513
       private void callActivationChanged(LayerEvent e) {
514
           for (LayerListener listener : this.layerListeners) {
515
               try {
516
                   listener.activationChanged(e);
517
               } catch (Exception ex) {
518
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
519
               }
520
           }
521
       }
509 522

  
510
			listener.activationChanged(e);
511
		}
512
	}
513

  
514 523
	/**
515 524
	 * Returns the virtual layers associated to this layer.
516 525
	 *
......
640 649
	 * @see #setEditing(boolean)
641 650
	 */
642 651
	protected void callEditionChanged(LayerEvent e) {
643
		for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
644
			LayerListener listener = (LayerListener) iter.next();
645

  
646
			listener.editionChanged(e);
647
		}
648
	}
652
           for (LayerListener listener : this.layerListeners) {
653
               try {
654
                   listener.editionChanged(e);
655
               } catch (Exception ex) {
656
                   logger.warn("Error calling listener '"+listener.toString()+"'.", ex);
657
               }
658
           } 
659
        }
660
        
649 661
	/*
650 662
	 * (non-Javadoc)
651 663
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#isEditing()
......
754 766
	 *
755 767
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#addError(BaseException)
756 768
	 */
769
        @Override
757 770
	public void addError(BaseException exception){
758 771
		status.addLayerError(exception);
759 772
	}
773
        
774
        @Override
775
        public void setError(Exception ex) {
776
            this.status.setLayerError(ex);
777
        }
778
        
760 779
	/*
761 780
	 * (non-Javadoc)
762 781
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#visibleRequired()
......
825 844
	}
826 845

  
827 846
	public void addLegendListener(LegendListener listener) {
828
		layerChangeSupport.addLayerListener(listener);
847
            if( listener == null ) {
848
                return ;
849
            }
850
            layerChangeSupport.addLayerListener(listener);
829 851
	}
830 852

  
831 853
	/**
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/FLayer.java
402 402
     */
403 403
	public void addError(BaseException exception);
404 404

  
405
        public void setError(Exception ex);
406
        
405 407
	/**
406 408
	 * Returns a list with all layer errors.
407 409
	 *
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/FLyrVect.java
147 147
     * @return VectorialAdapter.
148 148
     */
149 149
    public DataStore getDataStore() {
150
        if (!this.isAvailable()) {
151
            return null;
152
        }
150
//        if (!this.isAvailable()) {
151
//            return null;
152
//        }
153 153
        return featureStore;
154 154
    }
155 155

  
......
315 315
                    + (System.currentTimeMillis() - tini) + " milliseconds.");
316 316

  
317 317
        } catch (LegendException e) {
318
            this.setVisible(false);
319
            this.setActive(false);
318
            this.setAvailable(false);
319
            this.setError(e);
320 320
            throw new ReadException(getName(), e);
321 321
        } finally {
322 322
            if (spatialCache.isEnabled()) {
trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/ui/mdiFrame/NewStatusBar.java
25 25

  
26 26
import java.awt.BorderLayout;
27 27
import java.awt.Component;
28
import java.awt.Cursor;
28 29
import java.awt.Dimension;
29 30
import java.awt.FlowLayout;
30 31
import java.awt.LayoutManager;
......
140 141
        lblTexto.setVerticalAlignment(SwingConstants.CENTER);
141 142
        lblTexto.setVerticalTextPosition(SwingConstants.CENTER);
142 143
        lblIcon.setText("");
144
        lblTexto.setCursor(new Cursor(Cursor.HAND_CURSOR));
143 145
        lblTexto.setText(Messages.getString("StatusBar.Aplicacion_iniciada"));
144 146

  
145 147
        JPanel panelLeft = new JPanel();
......
237 239
    	
238 240
    	this.lblTexto.addMouseListener( new MouseListener() {
239 241
			public void mouseReleased(MouseEvent e) {
240
				if( e.isPopupTrigger() ) {
241
					if( getStatusText().length() > 0 || estado!=INFO ) {
242
						menu.show(lblTexto, e.getX(), e.getY());
243
					}
244
				}
242
//				if( e.isPopupTrigger() ) {
243
//					if( getStatusText().length() > 0 || estado!=INFO ) {
244
//						menu.show(lblTexto, e.getX(), e.getY());
245
//					}
246
//				}
245 247
			}
246 248
			public void mousePressed(MouseEvent e) {
247
				if( e.isPopupTrigger() ) {
249
				if( e.isPopupTrigger() || e.getClickCount()==1 ) {
248 250
					if( getStatusText().length() > 0 || estado!=INFO ) {
249 251
						menu.show(lblTexto, e.getX(), e.getY());
250 252
					}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/gui/AbstractViewPanel.java
27 27
import java.awt.image.BufferedImage;
28 28
import java.beans.PropertyChangeEvent;
29 29
import java.beans.PropertyChangeListener;
30
import java.util.Iterator;
31
import java.util.List;
30 32
import javax.swing.JComponent;
31 33

  
32 34
import javax.swing.JPanel;
33 35
import javax.swing.JSplitPane;
36
import org.apache.commons.lang3.StringUtils;
34 37

  
35 38
import org.cresques.cts.IProjection;
36 39
import org.gvsig.andami.PluginServices;
......
41 44
import org.gvsig.app.project.documents.gui.WindowLayout;
42 45
import org.gvsig.app.project.documents.view.MapOverview;
43 46
import org.gvsig.app.project.documents.view.ViewDocument;
47
import org.gvsig.app.project.documents.view.toc.actions.ShowLayerErrorsTocMenuEntry;
44 48
import org.gvsig.app.project.documents.view.toc.gui.TOC;
45 49
import org.gvsig.fmap.mapcontrol.MapControl;
46 50
import org.gvsig.tools.swing.api.Component;
......
247 251
        /**
248 252
         * @see com.iver.cit.gvsig.fmap.ExceptionListener#exceptionThrown(java.lang.Throwable)
249 253
         */
254
        @Override
250 255
        public void exceptionThrown(Throwable t) {
251
            NotificationManager.addError(t.getMessage(), t);
256
            
257
            NotificationManager.addError(getMessages(t), t);
252 258
        }
259
        
260
        private class ExceptionIterator implements Iterator {
253 261

  
262
            Throwable exception;
263

  
264
            ExceptionIterator(Throwable exception) {
265
                this.exception = exception;
266
            }
267

  
268
            @Override
269
            public boolean hasNext() {
270
                return this.exception != null;
271
            }
272

  
273
            @Override
274
            public Object next() {
275
                Throwable exception = this.exception;
276
                this.exception = exception.getCause();
277
                return exception;
278
            }
279

  
280
            @Override
281
            public void remove() {
282
                throw new UnsupportedOperationException();
283
            }
284
        }
285
        
286
        private String getMessages(Throwable ex) {
287
            StringBuilder msg = new StringBuilder();
288
            boolean firstline = true;
289
            Iterator exceptions = new ExceptionIterator(ex);
290
            String lastmsg = "";
291

  
292
            while (exceptions.hasNext()) {
293
                Throwable ex1 = ((Throwable) exceptions.next());
294
                String message;
295
                message = ex1.getMessage();
296
                if ( !StringUtils.isEmpty(message) ) {
297
                    if( firstline ) {
298
                        msg.append(message);
299
                        msg.append("\n\n");
300
                        firstline = false;
301
                    } else {
302
                        if (!message.equalsIgnoreCase(lastmsg)) {
303
                            msg.append("- ");
304
                            msg.append(message.replace("\n","\n  "));
305
                            msg.append("\n");
306
                        }
307
                    }
308
                    lastmsg = message;
309
                }
310
            }
311
            return msg.toString();
312
        }
313

  
254 314
    }
255 315

  
256 316
    /**
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/ReloadLayerTocMenuEntry.java
74 74

  
75 75
	public void execute(ITocItem item, FLayer[] selectedItems) {
76 76
		try {
77
			getNodeLayer(item).reload();
77
                    FLayer layer = getNodeLayer(item);
78
                    layer.reload();
79
                    layer.getMapContext().invalidate();
78 80
		} catch (Exception ex) {
79 81
            logger.info("While reloading layer", ex);
80 82
            getNodeLayer(item).setAvailable(false);
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/LayerErrorsView.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<object classname="com.jeta.forms.store.memento.FormPackage">
4
 <at name="fileversion">
5
  <object classname="com.jeta.forms.store.memento.FormsVersion2">
6
   <at name="major">2</at>
7
   <at name="minor">0</at>
8
   <at name="sub">0</at>
9
  </object>
10
 </at>
11
 <at name="form">
12
  <object classname="com.jeta.forms.store.memento.FormMemento">
13
   <super classname="com.jeta.forms.store.memento.ComponentMemento">
14
    <at name="cellconstraints">
15
     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
16
      <at name="column">1</at>
17
      <at name="row">1</at>
18
      <at name="colspan">1</at>
19
      <at name="rowspan">1</at>
20
      <at name="halign">default</at>
21
      <at name="valign">default</at>
22
      <at name="insets" object="insets">0,0,0,0</at>
23
     </object>
24
    </at>
25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26
   </super>
27
   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/LayerErrorsView.xml</at>
28
   <at name="path">datos/devel/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/LayerErrorsView.xml</at>
29
   <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
30
   <at name="colspecs">FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE</at>
31
   <at name="components">
32
    <object classname="java.util.LinkedList">
33
     <item >
34
      <at name="value">
35
       <object classname="com.jeta.forms.store.memento.BeanMemento">
36
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
37
         <at name="cellconstraints">
38
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
39
           <at name="column">2</at>
40
           <at name="row">2</at>
41
           <at name="colspan">1</at>
42
           <at name="rowspan">1</at>
43
           <at name="halign">default</at>
44
           <at name="valign">default</at>
45
           <at name="insets" object="insets">0,0,0,0</at>
46
          </object>
47
         </at>
48
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
49
        </super>
50
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
51
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
52
        <at name="beanproperties">
53
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
54
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
55
          <at name="properties">
56
           <object classname="com.jeta.forms.store.support.PropertyMap">
57
            <at name="text">Layer:</at>
58
            <at name="height">14</at>
59
            <at name="width">51</at>
60
            <at name="name">lblLayer</at>
61
            <at name="fill">
62
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
63
              <at name="name">fill</at>
64
             </object>
65
            </at>
66
            <at name="border">
67
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
68
              <super classname="com.jeta.forms.store.properties.BorderProperty">
69
               <at name="name">border</at>
70
              </super>
71
              <at name="borders">
72
               <object classname="java.util.LinkedList">
73
                <item >
74
                 <at name="value">
75
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
76
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
77
                    <at name="name">border</at>
78
                   </super>
79
                  </object>
80
                 </at>
81
                </item>
82
               </object>
83
              </at>
84
             </object>
85
            </at>
86
           </object>
87
          </at>
88
         </object>
89
        </at>
90
       </object>
91
      </at>
92
     </item>
93
     <item >
94
      <at name="value">
95
       <object classname="com.jeta.forms.store.memento.BeanMemento">
96
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
97
         <at name="cellconstraints">
98
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
99
           <at name="column">4</at>
100
           <at name="row">2</at>
101
           <at name="colspan">1</at>
102
           <at name="rowspan">1</at>
103
           <at name="halign">default</at>
104
           <at name="valign">default</at>
105
           <at name="insets" object="insets">0,0,0,0</at>
106
          </object>
107
         </at>
108
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
109
        </super>
110
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
111
        <at name="beanclass">javax.swing.JTextField</at>
112
        <at name="beanproperties">
113
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
114
          <at name="classname">javax.swing.JTextField</at>
115
          <at name="properties">
116
           <object classname="com.jeta.forms.store.support.PropertyMap">
117
            <at name="height">20</at>
118
            <at name="width">346</at>
119
            <at name="name">txtLayerName</at>
120
            <at name="background" object="color">236,233,216</at>
121
            <at name="border">
122
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
123
              <super classname="com.jeta.forms.store.properties.BorderProperty">
124
               <at name="name">border</at>
125
              </super>
126
              <at name="borders">
127
               <object classname="java.util.LinkedList">
128
                <item >
129
                 <at name="value">
130
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
131
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
132
                    <at name="name">border</at>
133
                   </super>
134
                  </object>
135
                 </at>
136
                </item>
137
               </object>
138
              </at>
139
             </object>
140
            </at>
141
            <at name="editable">false</at>
142
           </object>
143
          </at>
144
         </object>
145
        </at>
146
       </object>
147
      </at>
148
     </item>
149
     <item >
150
      <at name="value">
151
       <object classname="com.jeta.forms.store.memento.BeanMemento">
152
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
153
         <at name="cellconstraints">
154
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
155
           <at name="column">2</at>
156
           <at name="row">4</at>
157
           <at name="colspan">1</at>
158
           <at name="rowspan">1</at>
159
           <at name="halign">default</at>
160
           <at name="valign">default</at>
161
           <at name="insets" object="insets">0,0,0,0</at>
162
          </object>
163
         </at>
164
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
165
        </super>
166
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
167
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
168
        <at name="beanproperties">
169
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
170
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
171
          <at name="properties">
172
           <object classname="com.jeta.forms.store.support.PropertyMap">
173
            <at name="text">Problem:</at>
174
            <at name="height">14</at>
175
            <at name="width">51</at>
176
            <at name="name">lblProblem</at>
177
            <at name="fill">
178
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
179
              <at name="name">fill</at>
180
             </object>
181
            </at>
182
            <at name="border">
183
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
184
              <super classname="com.jeta.forms.store.properties.BorderProperty">
185
               <at name="name">border</at>
186
              </super>
187
              <at name="borders">
188
               <object classname="java.util.LinkedList">
189
                <item >
190
                 <at name="value">
191
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
192
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
193
                    <at name="name">border</at>
194
                   </super>
195
                  </object>
196
                 </at>
197
                </item>
198
               </object>
199
              </at>
200
             </object>
201
            </at>
202
           </object>
203
          </at>
204
         </object>
205
        </at>
206
       </object>
207
      </at>
208
     </item>
209
     <item >
210
      <at name="value">
211
       <object classname="com.jeta.forms.store.memento.BeanMemento">
212
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
213
         <at name="cellconstraints">
214
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
215
           <at name="column">2</at>
216
           <at name="row">6</at>
217
           <at name="colspan">3</at>
218
           <at name="rowspan">1</at>
219
           <at name="halign">default</at>
220
           <at name="valign">default</at>
221
           <at name="insets" object="insets">0,0,0,0</at>
222
          </object>
223
         </at>
224
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
225
        </super>
226
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
227
        <at name="beanclass">javax.swing.JEditorPane</at>
228
        <at name="beanproperties">
229
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
230
          <at name="classname">javax.swing.JEditorPane</at>
231
          <at name="properties">
232
           <object classname="com.jeta.forms.store.support.PropertyMap">
233
            <at name="height">367</at>
234
            <at name="width">508</at>
235
            <at name="name">txtMessage</at>
236
            <at name="scollBars">
237
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
238
              <at name="name">scollBars</at>
239
              <at name="verticalpolicy">20</at>
240
              <at name="horizontalpolicy">30</at>
241
              <at name="border">
242
               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
243
                <super classname="com.jeta.forms.store.properties.BorderProperty">
244
                 <at name="name">border</at>
245
                </super>
246
                <at name="borders">
247
                 <object classname="java.util.LinkedList">
248
                  <item >
249
                   <at name="value">
250
                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
251
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
252
                      <at name="name">border</at>
253
                     </super>
254
                    </object>
255
                   </at>
256
                  </item>
257
                 </object>
258
                </at>
259
               </object>
260
              </at>
261
             </object>
262
            </at>
263
            <at name="border">
264
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
265
              <super classname="com.jeta.forms.store.properties.BorderProperty">
266
               <at name="name">border</at>
267
              </super>
268
              <at name="borders">
269
               <object classname="java.util.LinkedList">
270
                <item >
271
                 <at name="value">
272
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
273
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
274
                    <at name="name">border</at>
275
                   </super>
276
                  </object>
277
                 </at>
278
                </item>
279
               </object>
280
              </at>
281
             </object>
282
            </at>
283
            <at name="scrollableTracksViewportHeight">true</at>
284
            <at name="editable">false</at>
285
           </object>
286
          </at>
287
         </object>
288
        </at>
289
       </object>
290
      </at>
291
     </item>
292
     <item >
293
      <at name="value">
294
       <object classname="com.jeta.forms.store.memento.FormMemento">
295
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
296
         <at name="cellconstraints">
297
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
298
           <at name="column">2</at>
299
           <at name="row">8</at>
300
           <at name="colspan">3</at>
301
           <at name="rowspan">1</at>
302
           <at name="halign">default</at>
303
           <at name="valign">default</at>
304
           <at name="insets" object="insets">0,0,0,0</at>
305
          </object>
306
         </at>
307
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
308
        </super>
309
        <at name="id">embedded.2013415053</at>
310
        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
311
        <at name="colspecs">RIGHT:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
312
        <at name="components">
313
         <object classname="java.util.LinkedList">
314
          <item >
315
           <at name="value">
316
            <object classname="com.jeta.forms.store.memento.BeanMemento">
317
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
318
              <at name="cellconstraints">
319
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
320
                <at name="column">3</at>
321
                <at name="row">1</at>
322
                <at name="colspan">1</at>
323
                <at name="rowspan">1</at>
324
                <at name="halign">default</at>
325
                <at name="valign">default</at>
326
                <at name="insets" object="insets">0,0,0,0</at>
327
               </object>
328
              </at>
329
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
330
             </super>
331
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
332
             <at name="beanclass">javax.swing.JButton</at>
333
             <at name="beanproperties">
334
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
335
               <at name="classname">javax.swing.JButton</at>
336
               <at name="properties">
337
                <object classname="com.jeta.forms.store.support.PropertyMap">
338
                 <at name="text">Close</at>
339
                 <at name="height">22</at>
340
                 <at name="width">64</at>
341
                 <at name="name">btnClose</at>
342
                 <at name="actionCommand">Close</at>
343
                 <at name="border">
344
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
345
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
346
                    <at name="name">border</at>
347
                   </super>
348
                   <at name="borders">
349
                    <object classname="java.util.LinkedList">
350
                     <item >
351
                      <at name="value">
352
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
353
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
354
                         <at name="name">border</at>
355
                        </super>
356
                       </object>
357
                      </at>
358
                     </item>
359
                    </object>
360
                   </at>
361
                  </object>
362
                 </at>
363
                </object>
364
               </at>
365
              </object>
366
             </at>
367
            </object>
368
           </at>
369
          </item>
370
          <item >
371
           <at name="value">
372
            <object classname="com.jeta.forms.store.memento.BeanMemento">
373
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
374
              <at name="cellconstraints">
375
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
376
                <at name="column">1</at>
377
                <at name="row">1</at>
378
                <at name="colspan">1</at>
379
                <at name="rowspan">1</at>
380
                <at name="halign">default</at>
381
                <at name="valign">default</at>
382
                <at name="insets" object="insets">0,0,0,0</at>
383
               </object>
384
              </at>
385
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
386
             </super>
387
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
388
             <at name="beanclass">javax.swing.JButton</at>
389
             <at name="beanproperties">
390
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
391
               <at name="classname">javax.swing.JButton</at>
392
               <at name="properties">
393
                <object classname="com.jeta.forms.store.support.PropertyMap">
394
                 <at name="text">View properties of data source</at>
395
                 <at name="height">22</at>
396
                 <at name="width">208</at>
397
                 <at name="name">btnViewParameters</at>
398
                 <at name="actionCommand">View parameters</at>
399
                 <at name="border">
400
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
401
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
402
                    <at name="name">border</at>
403
                   </super>
404
                   <at name="borders">
405
                    <object classname="java.util.LinkedList">
406
                     <item >
407
                      <at name="value">
408
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
409
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
410
                         <at name="name">border</at>
411
                        </super>
412
                       </object>
413
                      </at>
414
                     </item>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff