Revision 43361

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/jdbc2/spi/JDBCStoreProviderBase.java
5 5
import java.util.Collections;
6 6
import java.util.Iterator;
7 7
import java.util.List;
8
import org.apache.commons.lang3.BooleanUtils;
9
import org.apache.commons.lang3.StringUtils;
8 10
import org.cresques.cts.IProjection;
9 11
import org.gvsig.fmap.dal.DALLocator;
10 12
import org.gvsig.fmap.dal.DataManager;
......
135 137
        }
136 138
        
137 139
        @Override
138
        public Envelope get() {
140
        public synchronized Envelope get() {
139 141
            if( needCalculate ) {
140 142
                this.calculate();
141 143
            }
......
196 198
        super(params, storeServices, metadata);
197 199
        this.helper = helper;
198 200
        this.initializeFeatureType();
201
        try {
202
            if( BooleanUtils.isTrue((Boolean) params.getDynValue("precalculateEnvelope"))  ) {
203
                FeatureType featureType = this.getStoreServices().getDefaultFeatureType();
204
                if( !StringUtils.isEmpty(featureType.getDefaultGeometryAttributeName()) ) {
205
                    Thread thread = new Thread(new Runnable() {
206
                        @Override
207
                        public void run() {
208
                            logger.debug("Precalculating envelope of '"+getSourceId()+"'.");
209
                            getEnvelopeValue().get();
210
                        }
211
                    }, "PrecalculateEnvelopeOfDBTable");
212
                    thread.start();
213
                    Thread.sleep(1);
214
                }
215
           }
216
        } catch(Exception ex) {
217
            logger.warn("Probems precalculating the envelope of table '"+this.getSourceId()+"'.", ex);
218
        }
199 219
    }
200 220

  
201 221
    
......
345 365

  
346 366
    @Override
347 367
    public String getSourceId() {
348
        return this.getHelper().getSourceId(this.getParameters());
368
        try {
369
            return this.getHelper().getSourceId(this.getParameters());
370
        } catch(Exception ex) {
371
            return "unknow";
372
        }
349 373
    }
350 374

  
351 375
    @Override
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/resources/org/gvsig/fmap/dal/store/jdbc2/JDBC2Parameters.xml
57 57
          <value name="defaultGroup" value="Basic"/>
58 58
      </tags>
59 59
      <fields>
60
        <field name="precalculateEnvelope" type="boolean" mandatory="false" group="Advanced" defaultValue="false" >
61
          <description>If set to true calculate the envelope when open the store in a background thread</description>
62
        </field>
60 63
      </fields>
61 64
    </class>
62 65

  

Also available in: Unified diff