Revision 11194

View differences:

branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/FLayers.java
424 424
			Cancellable cancel,double scale) throws DriverException {
425 425
		draw(image,g,viewPort,cancel, scale, null);
426 426
	}
427
	
428
	
427

  
428

  
429 429
	public ComposedLayer draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
430 430
			Cancellable cancel,double scale, ComposedLayer group) throws DriverException {
431 431
	    //double scale = getFMap().getScaleView();
......
438 438
		    long tg1 = System.currentTimeMillis();
439 439
   			///// CHEMA ComposedLayer
440 440

  
441
        	
442
        	
441

  
442

  
443 443
//    		while (iter.hasNext())
444 444
//    		{
445 445
    		 for (int i=0; i < layers.size(); i++) {
......
448 448
//    			FLayer lyr = (FLayer) iter.next();
449 449
    			FLayer lyr = (FLayer) layers.get(i);
450 450

  
451
    			
452
    			
451

  
452

  
453 453
    		/*	if (lyr instanceof FLyrVect && ((FLyrVect)lyr).isBroken()){
454 454
    				continue;
455 455
    			}
......
494 494
    			        				group = null;
495 495
    			        			}
496 496
       			        			///// CHEMA ComposedLayer
497
       			        			
498 497

  
498

  
499 499
    			        			// Copiamos la imagen actual
500 500
    			        			BufferedImage buff = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
501 501
    			        			WritableRaster w = buff.getRaster();
......
513 513
	    			        			// prepareDrawing de FMap.
514 514
	    			        			if (lyr.isDirty())
515 515
	    			        			{
516
	    			        			
517
	    	   			        			
516

  
517

  
518 518
	    	   			        			///// CHEMA ComposedLayer
519 519
	    			        				// Checks for draw group (ComposedLayer)
520 520
	        			        			if (group != null) {
......
523 523
	        			        				group = null;
524 524
	        			        			}
525 525
	           			        			///// CHEMA ComposedLayer
526
	           			        			
527 526

  
527

  
528 528
	    			        				g.drawImage(lyr.getCacheImageDrawnLayers(), 0, 0, null);
529 529
	    			        				System.err.println("Pinto con acelerado lo que hab?a antes de " + lyr.getName());
530 530
	    			        			}
......
534 534
    			        	// Si la capa est? "sucia" o alguna de las de abajo est? sucia
535 535
    			        	// hay que volver a dibujar.
536 536
   			        		if (lyr.isDirty() || bNeedRecalculateCache)
537
   			        		{   			        			
537
   			        		{
538 538
   			        			if (!lyr.getFLayerStatus().isDriverLoaded())
539 539
   			        			{
540 540
   			        				continue;
541 541
   			        			}
542
   			        			
542

  
543 543
   			        			///// CHEMA ComposedLayer
544 544
   			        			//lyr.draw(image, g, viewPort, cancel,scale);
545 545
   			        			//bNeedRecalculateCache = true;
546 546
   			        			//System.err.println("Pinto sin acelerado " + lyr.getName());
547 547
   			        			///// CHEMA ComposedLayer
548
   			        			
548

  
549 549
   			        			///// CHEMA ComposedLayer
550 550
   			        			// Checks for draw group (ComposedLayer)
551
   			        			if (group != null) {   			        				
551
   			        			if (group != null) {
552 552
   			        				if (lyr instanceof FLayers){
553 553
   			        					group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
554 554
   			        					LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
......
560 560
   			        					} else {
561 561
   			        						// draw the 'pending to draw' layer group
562 562
   			        						group.draw(image, g, viewPort, cancel,scale);
563
   			        						
563

  
564 564
   			        						// gets a new group instance
565
   			        						group = lyr.newComposedLayer();   			        						
566
   			        						// if layer hasn't group, draws it inmediately 
565
   			        						group = lyr.newComposedLayer();
566
   			        						// if layer hasn't group, draws it inmediately
567 567
   			        						if (group == null) {
568 568
   			        							if (lyr instanceof FLayers){
569 569
   			        								group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
......
571 571
   			        								lyr.draw(image, g, viewPort, cancel,scale);
572 572
   			        							}
573 573
   			        							LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
574
   			        							fmap.fireLayerDrawingEvent(afterEvent);   		   			        					
574
   			        							fmap.fireLayerDrawingEvent(afterEvent);
575 575
   			        						} else {
576 576
   			        							// add the layer to the group
577 577
   			        							group.setMapContext(fmap);
578 578
   			        							group.add(lyr);
579
   			        							
579

  
580 580
   			        						}
581 581
   			        					}
582 582
   			        				}
583 583
   			        			} else {
584 584
	   			        			// gets a new group instance
585 585
	   			        			group = lyr.newComposedLayer();
586
	   			        			// if layer hasn't group, draws it inmediately 
586
	   			        			// if layer hasn't group, draws it inmediately
587 587
	   			        			if (group == null) {
588 588
	   			        				if (lyr instanceof FLayers){
589 589
	   			        					group = ((FLayers)lyr).draw(image, g, viewPort, cancel,scale,group);
......
591 591
	   			        					lyr.draw(image, g, viewPort, cancel,scale);
592 592
	   			        				}
593 593
	   			        				LayerDrawEvent afterEvent = new LayerDrawEvent(lyr, g, viewPort, LayerDrawEvent.LAYER_AFTER_DRAW);
594
	   			        				fmap.fireLayerDrawingEvent(afterEvent);	   			        				
594
	   			        				fmap.fireLayerDrawingEvent(afterEvent);
595 595
	   			        			} else {
596 596
	   			        				// adds the layer to the group
597 597
	   			        				group.setMapContext(fmap);
......
621 621
    			}
622 622

  
623 623
    		}
624
    		///// CHEMA ComposedLayer 
624
    		///// CHEMA ComposedLayer
625 625
    		if (group != null && this.getParentLayer() == null) {
626
 				//si tenemos un grupo pendiente de pintar, pintamos    			 
626
 				//si tenemos un grupo pendiente de pintar, pintamos
627 627
 				group.draw(image, g, viewPort, cancel,scale);
628 628
 				group = null;
629 629

  
630 630
 			}
631
			///// CHEMA ComposedLayer    		
631
			///// CHEMA ComposedLayer
632 632
    		if (getVirtualLayers() != null) {
633 633
    			getVirtualLayers().draw(image, g, viewPort, cancel,scale);
634 634
    		}
635
    		
635

  
636 636
    		///// CHEMA ComposedLayer
637 637
    		return group;
638 638
    		///// CHEMA ComposedLayer
639
    		
639

  
640 640
//        }
641 641
//        catch (ConcurrentModificationException e)
642 642
//        {
643 643
//            System.err.println(e.getMessage());
644 644
//        }
645 645
	}
646
		
646

  
647 647
	/**
648 648
	 * @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D,
649 649
	 * 		com.iver.cit.gvsig.fmap.ViewPort,
......
1214 1214
                        driver.setXMLEntity(xml.getChild(2));
1215 1215

  
1216 1216
                        boolean loadOk = false;
1217
                        try {
1218
                        	((DefaultDBDriver)driver).load();
1219
                        	if (((DefaultDBDriver)driver).getConnection() != null) {
1220
                        		loadOk = true;
1221
                        	}
1217
                        if (driver instanceof DefaultDBDriver) {
1218
							try {
1219
								((DefaultDBDriver) driver).load();
1220
								if (((DefaultDBDriver) driver)
1221
										.getConnection() != null) {
1222
									loadOk = true;
1223
								}
1224
							} catch (DriverException e) {
1225
								e.printStackTrace();
1226
								loadOk = false;
1227
							}
1228
						} else {
1229
							try{
1230
								((VectorialDatabaseDriver)driver).load();
1231
								loadOk=true;
1232
							}catch (Exception e) {
1233
								loadOk=false;
1234
							}
1235
						}
1222 1236

  
1223
                        } catch (DriverException e) {
1224
                        	e.printStackTrace();
1225
                        	loadOk = false;
1226

  
1227
                        }
1228

  
1229 1237
                        layer = LayerFactory.createDBLayer(driver, name, proj);
1230 1238
                        if (!loadOk) {
1231 1239
                        	layer.setAvailable(false);
branches/v10/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/VectorialDatabaseDriver.java
56 56
     * @param fields (Todos los campos, el primero ha de ser el de las geometr?as
57 57
     * @param whereClause
58 58
     * @param id_FID_field El identificador del campo que contiene una clave ?nica. 1=> primer campo, 2 => segundo campo, etc
59
     * 
59
     *
60 60
     */
61 61
    // public void setData(Connection conn, String tableName, String fields, String whereClause, int id_FID_field);
62 62
    public Rectangle2D getFullExtent();
63 63
    public int getShapeType();
64
    
64

  
65 65
    public IFeatureIterator getFeatureIterator(Rectangle2D r, String strEPSG) throws DriverException;
66 66
    public IFeatureIterator getFeatureIterator(Rectangle2D r, String strEPSG, String[] alphaNumericFieldsNeeded) throws DriverException;
67 67
	public String[] getFields();
......
77 77
     */
78 78
    public int getRowIndexByFID(IFeature FID);
79 79
    public String getGeometryField(String fieldName);
80
    
80

  
81 81
    public XMLEntity getXMLEntity();
82 82
    /**
83
     * Para evitar que una clase no se pueda instanciar, 
83
     * Para evitar que una clase no se pueda instanciar,
84 84
     * el setXMLEntity deber?a devolver una referencia
85 85
     * a la clase que crea. Ya vorem.
86 86
     */
87 87
    public void setXMLEntity(XMLEntity xml) throws XMLException;
88
 
88

  
89 89
    /**
90 90
     * @return information about catalog, fields, tablename, etc
91 91
     */
92 92
    public DBLayerDefinition getLyrDef();
93
    
93

  
94 94
    /**
95 95
     * This method is called by FLyrVect when its goig to be removed from the
96 96
     * view. The driver can then do what it has to do.
97 97
     *
98 98
     */
99 99
	public void remove();
100
	public void load() throws DriverException;
100 101

  
101 102
}

Also available in: Unified diff