Statistics
| Revision:

root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / EditionUtilities.java @ 4862

History | View | Annotate | Download (4.26 KB)

1
package com.iver.cit.gvsig;
2

    
3
import java.util.ArrayList;
4

    
5
import com.iver.andami.PluginServices;
6
import com.iver.cit.gvsig.fmap.DriverException;
7
import com.iver.cit.gvsig.fmap.FMap;
8
import com.iver.cit.gvsig.fmap.drivers.FieldDescription;
9
import com.iver.cit.gvsig.fmap.layers.FLayer;
10
import com.iver.cit.gvsig.fmap.layers.FLayers;
11
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
12
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
13
import com.iver.cit.gvsig.gui.View;
14
import com.iver.cit.gvsig.project.ProjectView;
15

    
16
/**
17
 * @author fjp
18
 * 
19
 * Clase con m?todos muy ?tiles a la hora de hacer nuevas extensiones, y otras
20
 * cosas que puedan ser gen?ricas para este plugin.
21
 *
22
 */
23
public class EditionUtilities {
24
        
25
        public static final int EDITION_STATUS_NO_EDITION = 0;
26
        public static final int EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE = 1;
27
        public static final int EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE = 2;
28
        public static final int EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE = 3;
29
        public static final int EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE = 4;
30
        public static int getEditionStatus()
31
        {
32
                int status = EDITION_STATUS_NO_EDITION;
33
        com.iver.andami.ui.mdiManager.View f = PluginServices.getMDIManager()
34
        .getActiveView();
35
        if (f == null)
36
                return status;
37

    
38
        if (f.getClass() == View.class) {
39
                View vista = (View) f;
40
                ProjectView model = vista.getModel();
41
                FMap mapa = model.getMapContext();
42

    
43
                FLayers capas = mapa.getLayers();
44

    
45
                int numActiveVectorial = 0;
46
                int numActiveVectorialEditable = 0;
47
                for (int i = 0; i < capas.getLayersCount(); i++) {
48
                        if (capas.getLayer(i) instanceof FLyrVect &&
49
                                        capas.getLayer(i).isActive()) {
50
                                numActiveVectorial++;
51
                                if (capas.getLayer(i).isEditing())
52
                                        numActiveVectorialEditable++;
53
                        }
54
                }
55
                if (numActiveVectorialEditable == 1)
56
                        return EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE;
57
                if (numActiveVectorialEditable > 1)
58
                        return EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE;
59
                if (numActiveVectorial == 1)
60
                        return EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE;
61
                if (numActiveVectorial > 1)
62
                        return EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE;
63
                
64
        }
65
                
66
                return status;
67
        }
68

    
69
        public static FLayer[] getActiveAndEditedLayers()
70
        {
71
                int status = EDITION_STATUS_NO_EDITION;
72
        com.iver.andami.ui.mdiManager.View f = PluginServices.getMDIManager()
73
        .getActiveView();
74
        if (f == null)
75
                return null;
76

    
77
        if (f.getClass() == View.class) {
78
                View vista = (View) f;
79
                ProjectView model = vista.getModel();
80
                FMap mapa = model.getMapContext();
81
                
82
                ArrayList resul = new ArrayList();
83

    
84
                FLayers capas = mapa.getLayers();
85

    
86
                int numActiveVectorial = 0;
87
                int numActiveVectorialEditable = 0;
88
                for (int i = 0; i < capas.getLayersCount(); i++) {
89
                        if (capas.getLayer(i) instanceof FLyrVect &&
90
                                        capas.getLayer(i).isActive()) {
91
                                numActiveVectorial++;
92
                                if (capas.getLayer(i).isEditing())
93
                                {
94
                                        numActiveVectorialEditable++;
95
                                        resul.add(capas.getLayer(i));
96
                                }
97
                        }
98
                }
99
                       return (FLayer[]) resul.toArray(new FLayer[0]);
100
                
101
        }
102
                
103
                return null;
104
        }
105
        
106
        public static FieldDescription[] getFieldsDescription(FLyrVect lyrVect)
107
        {
108
                SelectableDataSource sds;
109
                FieldDescription[] fieldsDescrip = null;
110
                try {
111
                        sds = lyrVect.getRecordset();
112
                        // Para evitar el PK.
113
                        int numFields = sds.getFieldNames().length; //-sds.getPKCardinality();
114
                        fieldsDescrip = new FieldDescription[numFields];
115
                        for (int i = 0; i < numFields; i++) {
116
                                fieldsDescrip[i] = new FieldDescription();
117
                                fieldsDescrip[i].setFieldType(sds.getFieldType(i));
118
                                fieldsDescrip[i].setFieldName(sds.getFieldName(i));
119
                                fieldsDescrip[i].setFieldLength(sds.getFieldWidth(i));
120
                                System.out.println("Campo " + sds.getFieldName(i) + " con ancho= " + sds.getFieldWidth(i));
121
                        }
122
                } catch (DriverException e) {
123
                        e.printStackTrace();
124
                } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
125
                        e.printStackTrace();
126
                }
127
                return fieldsDescrip;
128
        }
129
}