Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / fmap / dal / serverexplorer / filesystem / swing / FilesystemExplorerWizardTableModel.java @ 44198

History | View | Annotate | Download (9.21 KB)

1
package org.gvsig.fmap.dal.serverexplorer.filesystem.swing;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5

    
6
import javax.swing.table.AbstractTableModel;
7
import org.gvsig.fmap.dal.DALLocator;
8
import org.gvsig.fmap.dal.DataManager;
9

    
10
import org.gvsig.fmap.dal.DataStoreParameters;
11
import org.gvsig.fmap.dal.DataStoreProviderFactory;
12
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
13
import org.gvsig.tools.ToolsLocator;
14
import org.gvsig.tools.i18n.I18nManager;
15

    
16

    
17
/**
18
 * @author fdiaz
19
 *
20
 */
21
public class FilesystemExplorerWizardTableModel extends AbstractTableModel {
22

    
23
    /**
24
     *
25
     */
26
    private static final long serialVersionUID = -1289509561088757725L;
27

    
28
    private static final int COLUMNS = 2;
29

    
30
    private static final int COLUMN_STORE_PARAMETERS = 0;
31
    private static final int COLUMN_TILED = 1;
32

    
33
    public static final String COLUMN_STORE_PARAMETERS_NAME = "Fichero";
34
    public static final String COLUMN_TILED_NAME = "_tiled";
35

    
36
    private List<FilesystemStoreParametersToLoad> data = null;
37

    
38
    /**
39
     *
40
     */
41
    public FilesystemExplorerWizardTableModel() {
42
        this.data = (List<FilesystemStoreParametersToLoad>) new ArrayList<FilesystemStoreParametersToLoad>();
43
    }
44

    
45
    @Override
46
    public int getColumnCount() {
47
        return COLUMNS;
48
    }
49

    
50
    @Override
51
    public int getRowCount() {
52
        return data.size();
53
    }
54

    
55

    
56
    @Override
57
    public Class<?> getColumnClass(int columnIndex) {
58
        switch (columnIndex) {
59
        case COLUMN_STORE_PARAMETERS:
60
            return FilesystemStoreParametersToLoad.class;
61
        case COLUMN_TILED:
62
            return Boolean.class;
63
        }
64
        return super.getColumnClass(columnIndex);
65
    }
66

    
67
    @Override
68
    public Object getValueAt(int i, int j) {
69
        if (i < data.size()) {
70
            FilesystemStoreParametersToLoad filesystemStoreParametersToLoad = (FilesystemStoreParametersToLoad) data.get(i);
71
            switch (j) {
72
            case COLUMN_STORE_PARAMETERS:
73
                return filesystemStoreParametersToLoad.getParameters();
74
            case COLUMN_TILED:
75
                return filesystemStoreParametersToLoad.isTiled();
76
            }
77
        }
78
        return null;
79
    }
80

    
81
    @Override
82
    public String getColumnName(int col) {
83
        I18nManager i18nManager = ToolsLocator.getI18nManager();
84
        if(col < COLUMNS){
85
            switch (col) {
86
            case COLUMN_STORE_PARAMETERS:
87
                return i18nManager.getTranslation(COLUMN_STORE_PARAMETERS_NAME);
88
            case COLUMN_TILED:
89
                return i18nManager.getTranslation(COLUMN_TILED_NAME);
90
            default:
91
                break;
92
            }
93
        }
94
        throw new IndexOutOfBoundsException("Column '"+col+"' > "+COLUMNS);
95
    }
96

    
97
    public boolean isCellEditable(int row, int col) {
98
        if (col == COLUMN_TILED && isEditableTiled(row) ) {
99
            return true;
100
        }
101
        return false;
102
    }
103

    
104
    public void setValueAt(Object value, int row, int col) {
105
        if (row < data.size()) {
106
            if (col < COLUMNS) {
107
                FilesystemStoreParametersToLoad filesystemStoreParametersToLoad = data.get(row);
108
                switch (col) {
109
                case COLUMN_STORE_PARAMETERS:
110
                    if (value == null || !(value instanceof FilesystemStoreParameters)) {
111
                        throw new IllegalArgumentException("The object '" + value.toString() + "' must be a FilesystemStoreParameters.");
112
                    }
113
                    filesystemStoreParametersToLoad.setParameters((FilesystemStoreParameters) value);
114
                    break;
115
                case COLUMN_TILED:
116
                    if (value == null) {
117
                        filesystemStoreParametersToLoad.setTiled(false);
118
                        break;
119
                    }
120
                    if (!(value instanceof Boolean)) {
121
                        throw new IllegalArgumentException("The object '" + value.toString() + "' must be a Boolean.");
122
                    }
123
                    filesystemStoreParametersToLoad.setTiled((boolean) value);
124
                    break;
125

    
126
                default:
127
                    break;
128
                }
129

    
130
            }
131
        }
132
    }
133

    
134
    /**
135
     * @param fileParams
136
     * @param projection
137
     * @param tiled
138
     */
139
    public void add(FilesystemStoreParameters fileParams){
140
        DataManager dataManager = DALLocator.getDataManager();
141
        DataStoreProviderFactory factory = dataManager.getStoreProviderFactory( ((DataStoreParameters)fileParams).getDataStoreName());
142
        boolean editable = false;
143
        boolean tiled = false;
144
        if( factory != null ) {
145
            if( factory.getClass().getSimpleName().equalsIgnoreCase("TileProviderFactory")){
146
                editable = false;
147
                tiled = true;
148
            } else {
149
                switch (factory.isTiledSupported()) {
150
                case DataStoreProviderFactory.NO:
151
                    editable = false;
152
                    tiled = false;
153
                    break;
154
                case DataStoreProviderFactory.YES:
155
                    editable = true;
156
                    tiled = (factory.worksBestTiled()==DataStoreProviderFactory.YES);
157
                    break;
158
                case DataStoreProviderFactory.UNKNOWN:
159
                    //De momento, si no sabemos si se puede tilear lo marcamos como no
160
                    editable = false;
161
                    tiled = false;
162
                    break;
163
                default:
164
                    break;
165
                }
166
            }
167
        }
168
        FilesystemStoreParametersToLoad filesystemStoreParametersToLoad = new FilesystemStoreParametersToLoad(fileParams, tiled, editable) ;
169
        data.add(filesystemStoreParametersToLoad);
170
    }
171

    
172
    /**
173
     * @param listFileParams
174
     * @param tiled
175
     */
176
    public void add(List<FilesystemStoreParameters> listFileParams){
177
        for (FilesystemStoreParameters filesystemStoreParameters : listFileParams) {
178
            this.add(filesystemStoreParameters);
179
        }
180
    }
181

    
182
    /**
183
     * @param row
184
     */
185
    public void remove(int row){
186
        this.data.remove(row);
187
    }
188

    
189
    /**
190
     * @param row
191
     * @return FilesystemStoreParameters
192
     */
193
    public FilesystemStoreParameters getParams(int row){
194
        return this.data.get(row).getParameters();
195
    }
196

    
197
    /**
198
     * @param row
199
     * @return boolean
200
     */
201
    public boolean isTiled(int row){
202
        return this.data.get(row).isTiled();
203
    }
204

    
205
    /**
206
     * @param row
207
     * @return
208
     */
209
    public boolean isEditableTiled(int row){
210
        return this.data.get(row).isEditable();
211
    }
212
    /**
213
     * @param row
214
     */
215
    public void up(int row){
216
        if(row>0 && row<this.data.size()){
217
            FilesystemStoreParametersToLoad aux = this.data.get(row-1);
218
            this.data.set(row-1, this.data.get(row));
219
            this.data.set(row, aux);
220
        }
221
    }
222

    
223
    /**
224
     * @param row
225
     */
226
    public void down(int row){
227
        if(row>=0 && row<(this.data.size()-1)){
228
            FilesystemStoreParametersToLoad aux = this.data.get(row);
229
            this.data.set(row, this.data.get(row+1));
230
            this.data.set(row+1, aux);
231
        }
232
    }
233

    
234
    /**
235
     * @return DataStoreParameters[]
236
     */
237
    public DataStoreParameters[] getParameters() {
238
        List<FilesystemStoreParameters> result = new ArrayList<FilesystemStoreParameters>();
239
        for (FilesystemStoreParametersToLoad rowData : this.data) {
240
            result.add(rowData.getParameters());
241
        }
242
        return result.toArray(new DataStoreParameters[0]);
243
    }
244

    
245
    /**
246
     * @param parameters
247
     * @return boolean
248
     */
249
    public boolean isTiled(DataStoreParameters parameters) {
250
        for (FilesystemStoreParametersToLoad filesystemStoreParametersToLoad : data) {
251
            if(filesystemStoreParametersToLoad.getParameters()==parameters){
252
                return filesystemStoreParametersToLoad.isTiled();
253
            }
254
        }
255
        return false;
256
    }
257

    
258
    /**
259
     * @author fdiaz
260
     *
261
     */
262
    public static class FilesystemStoreParametersToLoad{
263
        private FilesystemStoreParameters params;
264
        private boolean tiled;
265
        private boolean editable = false;
266

    
267
        /**
268
         * @param params
269
         */
270
        public FilesystemStoreParametersToLoad(FilesystemStoreParameters params) {
271
            this.setParameters(params);
272
        }
273

    
274
        /**
275
         * @param params
276
         * @param tiled
277
         * @param editable
278
         */
279
        public FilesystemStoreParametersToLoad(FilesystemStoreParameters params, boolean tiled, boolean editable) {
280
            this.setParameters(params);
281
            this.setTiled(tiled);
282
            this.editable = editable;
283
        }
284

    
285
        FilesystemStoreParameters getParameters(){
286
            return this.params;
287
        }
288

    
289
        /**
290
         * @param file the file to set
291
         */
292
        public void setParameters(FilesystemStoreParameters file) {
293
            this.params = file;
294
        }
295

    
296
        /**
297
         * @return the tiled
298
         */
299
        public boolean isTiled() {
300
            return tiled;
301
        }
302

    
303
        /**
304
         * @param tiled the tiled to set
305
         */
306
        public void setTiled(boolean tiled) {
307
                this.tiled = tiled;
308
        }
309

    
310
        public boolean isEditable() {
311
            return this.editable;
312
        }
313
    }
314

    
315
}