Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / operations / strategies / OptimiceStrategy.java @ 652

History | View | Annotate | Download (3.48 KB)

1
package com.iver.cit.gvsig.fmap.operations.strategies;
2

    
3
import java.awt.Graphics2D;
4
import java.awt.geom.AffineTransform;
5
import java.awt.geom.Rectangle2D;
6
import java.awt.image.BufferedImage;
7
import java.io.IOException;
8

    
9
import org.apache.log4j.Logger;
10

    
11
import com.hardcode.driverManager.DriverLoadException;
12
import com.hardcode.gdbms.engine.data.DataSource;
13
import com.iver.cit.gvsig.fmap.DriverException;
14
import com.iver.cit.gvsig.fmap.ViewPort;
15
import com.iver.cit.gvsig.fmap.core.IGeometry;
16
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
17
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
18
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
19
import com.iver.cit.gvsig.fmap.layers.FLayer;
20
import com.iver.cit.gvsig.fmap.layers.VectorialAdapter;
21
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData;
22
import com.iver.cit.gvsig.fmap.layers.layerOperations.ClassifiableVectorial;
23
import com.iver.cit.gvsig.fmap.layers.layerOperations.SingleLayer;
24
import com.iver.cit.gvsig.fmap.operations.Cancellable;
25
import com.iver.cit.gvsig.fmap.rendering.VectorialLegend;
26
import com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D;
27

    
28

    
29
/**
30
 * DOCUMENT ME!
31
 *
32
 * @author Vicente Caballero Navarro
33
 */
34
public class OptimiceStrategy extends DefaultStrategy {
35
        private static Logger logger = Logger.getLogger(OptimiceStrategy.class.getName());
36
        /**
37
     * DOCUMENT ME!
38
     *
39
     * @param capa
40
     */
41
    public OptimiceStrategy(FLayer capa) {
42
        super(capa);
43
    }
44

    
45
    /**
46
     * DOCUMENT ME!
47
     *
48
     * @param image DOCUMENT ME!
49
     * @param g DOCUMENT ME!
50
     * @param viewPort DOCUMENT ME!
51
     * @param cancel DOCUMENT ME!
52
     *
53
     * @throws DriverIOException
54
     * @throws DriverLoadException
55
     * @throws DriverException
56
     *
57
     * @see com.iver.cit.gvsig.fmap.operations.LayerOperations#draw(java.awt.image.BufferedImage,
58
     *      java.awt.Graphics2D, FStyle2D)
59
     */
60
    public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort,
61
        Cancellable cancel) throws DriverException {
62
            try{
63
        VectorialAdapter adapter = ((SingleLayer)getCapa()).getSource();
64
        DataSource ds = ((AlphanumericData)getCapa()).getRecordset();
65
        ShapeInfo shapeinfo = adapter.getShapeInfo();
66
        logger.debug("adapter.start()");
67
        adapter.start();
68
        logger.debug("ds.start()");
69
        ds.start();
70

    
71
        VectorialFileDriver driver = (VectorialFileDriver) adapter.getDriver();
72
        int sc;
73
        long t1 = System.currentTimeMillis();
74
        Rectangle2D extent = viewPort.getAdjustedExtent();
75
        AffineTransform at = viewPort.getAffineTransform();
76

    
77
        sc = adapter.getShapeCount();
78

    
79
        for (int i = 0; i < sc; i++) {
80
            if (cancel.isCanceled()) {
81
                break;
82
            }
83

    
84
            IGeometry geom = adapter.getShape(i);
85
            VectorialLegend l = (VectorialLegend) ((ClassifiableVectorial)getCapa()).getLegend();
86

    
87
            // TODO Falta rematar esta parte.
88
            if (shapeinfo.getBoundingBox(sc).intersects(extent)) {
89
                FSymbol symbol = l.getSymbol(i);
90
                geom.draw(g, viewPort, symbol);
91
            }
92
        }
93

    
94
        long t2 = System.currentTimeMillis();
95
        logger.debug("adapter.stop()");
96
        adapter.stop();
97
        logger.debug("ds.stop()");
98
        ds.stop();
99

    
100
        System.out.println(t2 - t1);
101
                } catch (DriverIOException e) {
102
                        throw new DriverException(e);
103
                } catch (com.hardcode.gdbms.engine.data.DriverException e) {
104
                        throw new DriverException(e);
105
                }
106
        
107
    }
108
}