Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_dalfile / src / org / gvsig / fmap / dal / store / dbf / DBFLibrary.java @ 33718

History | View | Annotate | Download (4.31 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

    
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2008 IVER T.I. S.A.   {{Task}}
26
*/
27

    
28
package org.gvsig.fmap.dal.store.dbf;
29

    
30
import java.nio.charset.Charset;
31
import java.util.ArrayList;
32
import java.util.Arrays;
33
import java.util.Iterator;
34
import java.util.LinkedHashSet;
35
import java.util.List;
36
import java.util.Map;
37
import java.util.Set;
38

    
39
import org.gvsig.fmap.dal.DALFileLibrary;
40
import org.gvsig.fmap.dal.DALFileLocator;
41
import org.gvsig.fmap.dal.DALLibrary;
42
import org.gvsig.fmap.dal.DALLocator;
43
import org.gvsig.fmap.dal.FileHelper;
44
import org.gvsig.fmap.dal.impl.DALDefaultImplLibrary;
45
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
46
import org.gvsig.fmap.dal.store.shp.SHPLibrary;
47
import org.gvsig.metadata.exceptions.MetadataException;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.dynobject.DynObjectValueItem;
50
import org.gvsig.tools.dynobject.DynStruct;
51
import org.gvsig.tools.library.AbstractLibrary;
52
import org.gvsig.tools.library.Library;
53
import org.gvsig.tools.library.LibraryException;
54

    
55
public class DBFLibrary extends AbstractLibrary {
56

    
57
        public DBFLibrary() {
58
                super(DBFLibrary.class,Library.TYPE.IMPL);
59
                require(DALLibrary.class);
60
                require(DALFileLibrary.class);
61
        }
62
        
63
        @Override
64
        protected void doInitialize() throws LibraryException {
65
        }
66

    
67
        @Override
68
        protected void doPostInitialize() throws LibraryException {
69
                List<Throwable> exs = new ArrayList<Throwable>();
70

    
71
                FileHelper.registerParametersDefinition(
72
                                DBFStoreParameters.PARAMETERS_DEFINITION_NAME, 
73
                                DBFStoreParameters.class,
74
                                "DBFParameters.xml"
75
                );
76
                updateEncodingDefinition();
77
                FileHelper.registerParametersDefinition(
78
                                DBFNewStoreParameters.PARAMETERS_DEFINITION_NAME, 
79
                                DBFNewStoreParameters.class,
80
                                "DBFParameters.xml"
81
                );
82
                try {
83
                        FileHelper.registerMetadataDefinition(
84
                                        DBFStoreProvider.METADATA_DEFINITION_NAME, 
85
                                        DBFStoreProvider.class,
86
                                        "DBFMetadata.xml"
87
                        );
88
                } catch (MetadataException e) {
89
                        exs.add(e);
90
                }
91

    
92
        DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator
93
                                .getDataManager();
94

    
95
                try {
96
                        if (!dataman.getStoreProviders().contains(DBFStoreProvider.NAME)) {
97
                                dataman.registerStoreProvider(DBFStoreProvider.NAME,
98
                                                DBFStoreProvider.class, DBFStoreParameters.class);
99
                        }
100
                } catch (RuntimeException e) {
101
                        exs.add(e);
102
                }
103

    
104
                try {
105
                        DALFileLocator.getFilesystemServerExplorerManager()
106
                                        .registerProvider(DBFStoreProvider.NAME,
107
                                                        DBFStoreProvider.DESCRIPTION,
108
                                                        DBFFilesystemServerProvider.class);
109
                } catch (RuntimeException e) {
110
                        exs.add(e);
111
                }
112

    
113
                if( exs.size()>0 ) {
114
                        throw new LibraryException(this.getClass(), exs);
115
                }
116
        }
117
        
118
        private static void updateEncodingDefinition() {
119
                DynStruct parametersDefinition = ToolsLocator.getPersistenceManager().getDefinition(DBFStoreParameters.PARAMETERS_DEFINITION_NAME);
120
                
121
                DynObjectValueItem[] values = parametersDefinition.getDynField("encoding").getAvailableValues();
122
            
123
                Set<DynObjectValueItem> charsetSet = new LinkedHashSet<DynObjectValueItem>(160);
124

    
125
                charsetSet.addAll( Arrays.asList(values) );
126
                Map<String,Charset> charsets = Charset.availableCharsets();
127
                Iterator<String> iter = charsets.keySet().iterator();
128
                while (iter.hasNext()){
129
                        String value = (String) iter.next();
130
                        String label= value;
131
                        charsetSet.add(new DynObjectValueItem(value, label));
132
                }
133

    
134
                parametersDefinition.getDynField("Encoding")
135
                        .setAvailableValues(
136
                                        (DynObjectValueItem[]) charsetSet.toArray(new DynObjectValueItem[charsets.size()])
137
                        );
138

    
139
                
140
        }
141
}