Revision 2629

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLyrVect.java
224 224
	/**
225 225
	 * @see com.iver.cit.gvsig.fmap.layers.VectorialOperations#createLabelLayer(int)
226 226
	 */
227
	public FLayer createLabelLayer(int fieldId) {
227
	// public FLayer createLabelLayer(int fieldId) {
228
    public FLayer createLabelLayer(SelectableDataSource ds) {
228 229
		ArrayList labels = new ArrayList();
229 230

  
230 231
		try {
231 232
			VectorialAdapter adapter = getSource();
232
			DataSource ds = getRecordset();
233 233
			logger.debug("adapter.start()");
234 234
			adapter.start();
235 235
			ds.start();
236 236

  
237 237
			//VectorialDriver driver = (VectorialDriver) adapter.getDriver();
238
			int sc;
238
            long sc;
239 239

  
240
			sc = adapter.getShapeCount();
240
            sc = ds.getRowCount();
241
            
242
            int fieldId = ds.getFieldIndexByName(legend.getLabelField());
241 243

  
242 244
            DriverAttributes attr = adapter.getDriverAttributes();
243 245
            boolean bMustClone = false;
......
445 447
		}
446 448
		return sds;
447 449
	}
450
    
451
    /**
452
     * Para cuando haces una uni?n, sustituyes el recorset por el nuevo.
453
     * De esta forma, podr?s poner leyendas basadas en el nuevo
454
     * recordset
455
     * @param newSds
456
     */
457
    public void setRecordset(SelectableDataSource newSds)
458
    {
459
        sds = newSds;
460
        sds.setSelectionSupport(selectionSupport);
461
    }
448 462

  
449 463
	/**
450 464
	 * @see com.iver.cit.gvsig.fmap.layers.CommonOperations#setLegend(int,
......
459 473
			legend.setDataSource(getRecordset());
460 474

  
461 475
			if (legend.getLabelField() != null) {
462
			    sds.start();
463
				int idLabelField = getRecordset().getFieldIndexByName(legend.getLabelField());
464
				createLabelLayer(idLabelField);
465
				sds.stop();
476
			    // sds.start();
477
				// int idLabelField = getRecordset().getFieldIndexByName(legend.getLabelField());
478
				createLabelLayer(sds);
479
				// sds.stop();
466 480
			}
467 481
			else
468 482
			    removeLabels();
......
471 485
		} catch (FieldNotFoundException e) {
472 486
			// TODO Auto-generated catch block
473 487
			e.printStackTrace();
474
		} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
475
			throw new DriverException(e);
476 488
        }
477 489

  
478 490
		LegendChangedEvent e = LegendChangedEvent.createLegendChangedEvent(oldLegend, legend);
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/layerOperations/Labelable.java
41 41
package com.iver.cit.gvsig.fmap.layers.layerOperations;
42 42

  
43 43
import com.iver.cit.gvsig.fmap.layers.FLayer;
44
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
44 45

  
45 46

  
46 47
/**
......
55 56
	 *
56 57
	 * @return FLayer.
57 58
	 */
58
	FLayer createLabelLayer(int fieldId);
59
	FLayer createLabelLayer(SelectableDataSource sds);
59 60

  
60 61
	/**
61 62
	 * Borra las labels.
trunk/applications/appgvSIG/src/com/iver/cit/gvsig/project/ProjectTable.java
43 43
import java.io.IOException;
44 44
import java.text.DateFormat;
45 45
import java.util.Date;
46
import java.util.logging.Logger;
46 47

  
47 48
import com.hardcode.driverManager.DriverLoadException;
48 49
import com.hardcode.gdbms.engine.data.DataSource;
......
54 55
import com.iver.cit.gvsig.fmap.DriverException;
55 56
import com.iver.cit.gvsig.fmap.layers.FLayer;
56 57
import com.iver.cit.gvsig.fmap.layers.FLayers;
58
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
57 59
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
58 60
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
59 61
import com.iver.cit.gvsig.fmap.layers.XMLException;
......
186 188
        modelo = ds;
187 189
        ds.setSelectionSupport(original.getSelectionSupport());
188 190
        createAlias();
191
        
192
        // FJP:
193
        // Si la tabla proviene de un layer, cambiamos su recordset
194
        if (associatedTable != null)
195
        {
196
            if (associatedTable instanceof FLyrVect)
197
            {                
198
                ((FLyrVect) associatedTable).setRecordset(ds);
199
            }
200
        }
201
        
189 202
        change.firePropertyChange("model", original, modelo);
190 203
    }
191 204

  
......
197 210
        modelo = original;
198 211
        original = null;
199 212
        createAlias();
213

  
214
        // FJP:
215
        // Si la tabla proviene de un layer, cambiamos su recordset
216
        if (associatedTable != null)
217
        {
218
            if (associatedTable instanceof FLyrVect)
219
            {                
220
                ((FLyrVect) associatedTable).setRecordset(modelo);
221
            }
222
        }
223
        
200 224
        change.firePropertyChange("model", original, modelo);
201 225
    }
202 226

  
......
399 423
    private void setSelectableDataSource(XMLEntity xml)
400 424
        throws XMLException, DriverException {
401 425
        String layerName = null;
426
        boolean bNeedToReplace = false;
427
        XMLEntity xmlAux = null;
402 428

  
403 429
        try {
404 430
            SelectableDataSource sds;
......
418 444
            setDataSource(sds);
419 445

  
420 446
            if (xml.getNumChild() == 2) {
421
                replaceDataSource(SelectableDataSource.createSelectableDataSource(
422
                        xml.getChild(1)));
447
                bNeedToReplace = true;
448
                xmlAux = xml.getChild(1);
449
                // replaceDataSource(SelectableDataSource.createSelectableDataSource(xml.getChild(1)));
423 450
            }
424 451
        } catch (NoSuchTableException e) {
425 452
            throw new XMLException(e);
......
442 469

  
443 470
            //			modelo = ((AlphanumericData) layer).getRecordset();
444 471
            associatedTable = (AlphanumericData) layer;
472
            
473
            if (bNeedToReplace)
474
            {
475
                try {
476
                    replaceDataSource(SelectableDataSource.createSelectableDataSource(xmlAux));
477
                } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
478
                    // TODO Auto-generated catch block
479
                    e.printStackTrace();
480
                } catch (NoSuchTableException e) {
481
                    // TODO Auto-generated catch block
482
                    e.printStackTrace();
483
                } catch (ParseException e) {
484
                    // TODO Auto-generated catch block
485
                    e.printStackTrace();
486
                } catch (DriverLoadException e) {
487
                    // TODO Auto-generated catch block
488
                    e.printStackTrace();
489
                } catch (SemanticException e) {
490
                    // TODO Auto-generated catch block
491
                    e.printStackTrace();
492
                } catch (IOException e) {
493
                    // TODO Auto-generated catch block
494
                    e.printStackTrace();
495
                } catch (XMLException e) {
496
                    // TODO Auto-generated catch block
497
                    e.printStackTrace();
498
                }
499
            }
445 500
        }
446 501
    }
447 502
    private FLayer getLayer(FLayers layers,String name){

Also available in: Unified diff