svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.geodb.app / org.gvsig.geodb.app.mainplugin / src / main / java / org / gvsig / geodb / workspace / DefaultWorkspaceManager.java @ 44297
History | View | Annotate | Download (6.68 KB)
1 |
package org.gvsig.geodb.workspace; |
---|---|
2 |
|
3 |
import org.apache.commons.lang3.StringUtils; |
4 |
import org.gvsig.fmap.dal.DALLocator; |
5 |
import org.gvsig.fmap.dal.DataManager; |
6 |
import static org.gvsig.fmap.dal.DataManager.RESOURCES_FIELD_NAME; |
7 |
import static org.gvsig.fmap.dal.DataManager.RESOURCES_FIELD_RESOURCE; |
8 |
import static org.gvsig.fmap.dal.DataManager.RESOURCES_TABLE_NAME; |
9 |
import org.gvsig.fmap.dal.DataStoreParameters; |
10 |
import org.gvsig.fmap.dal.DataTypes; |
11 |
import org.gvsig.fmap.dal.StoresRepository; |
12 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
13 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
14 |
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters; |
15 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorer; |
16 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
17 |
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters; |
18 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
19 |
import org.slf4j.Logger; |
20 |
import org.slf4j.LoggerFactory; |
21 |
|
22 |
/**
|
23 |
*
|
24 |
* @author jjdelcerro
|
25 |
*/
|
26 |
@SuppressWarnings("UseSpecificCatch") |
27 |
public class DefaultWorkspaceManager implements WorkspaceManager { |
28 |
|
29 |
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultWorkspaceManager.class); |
30 |
|
31 |
private static final String REPOSITORY_TABLE_NAME = "gvsigd_repository"; |
32 |
private static final String CONFIG_TABLE_NAME = "gvsigd_config"; |
33 |
|
34 |
private final JDBCServerExplorerParameters connection; |
35 |
|
36 |
public DefaultWorkspaceManager(JDBCServerExplorerParameters connection) {
|
37 |
this.connection = connection;
|
38 |
} |
39 |
|
40 |
@Override
|
41 |
public JDBCServerExplorerParameters getConnection() {
|
42 |
return this.connection; |
43 |
} |
44 |
|
45 |
private boolean existsTable(String tableName) { |
46 |
try {
|
47 |
DataManager dataManager = DALLocator.getDataManager(); |
48 |
JDBCServerExplorer server = (JDBCServerExplorer) dataManager.openServerExplorer( |
49 |
this.connection.getExplorerName(),
|
50 |
this.connection
|
51 |
); |
52 |
for (DataStoreParameters params : server.list()) {
|
53 |
String theTableName = ((JDBCStoreParameters)params).getTable();
|
54 |
if( StringUtils.equals(theTableName, tableName) ) {
|
55 |
return true; |
56 |
} |
57 |
} |
58 |
} catch (Exception ex) { |
59 |
LOGGER.warn("Can't check if the table '"+tableName+"' exists.",ex); |
60 |
} |
61 |
return false; |
62 |
} |
63 |
|
64 |
private FeatureStore getTable(String tableName) { |
65 |
try {
|
66 |
DataManager dataManager = DALLocator.getDataManager(); |
67 |
JDBCServerExplorer server = (JDBCServerExplorer) dataManager.openServerExplorer( |
68 |
this.connection.getExplorerName(),
|
69 |
this.connection
|
70 |
); |
71 |
DataStoreParameters params = server.get(tableName); |
72 |
if( params!=null ) { |
73 |
FeatureStore store = (FeatureStore) dataManager.openStore( |
74 |
params.getDataStoreName(), |
75 |
params |
76 |
); |
77 |
return store;
|
78 |
} |
79 |
} catch (Exception ex) { |
80 |
LOGGER.warn("Can't open table '"+tableName+"'.",ex); |
81 |
} |
82 |
return null; |
83 |
} |
84 |
|
85 |
private void dropTable(String tableName) { |
86 |
try {
|
87 |
DataManager dataManager = DALLocator.getDataManager(); |
88 |
JDBCServerExplorer server = (JDBCServerExplorer) dataManager.openServerExplorer( |
89 |
this.connection.getExplorerName(),
|
90 |
this.connection
|
91 |
); |
92 |
DataStoreParameters params = server.get(tableName); |
93 |
if( params!=null ) { |
94 |
server.remove(params); |
95 |
} |
96 |
} catch (Exception ex) { |
97 |
LOGGER.warn("Can't drop table '"+tableName+"'.",ex); |
98 |
} |
99 |
} |
100 |
|
101 |
@Override
|
102 |
public boolean existsResourcesTable() { |
103 |
return this.existsTable(RESOURCES_TABLE_NAME); |
104 |
} |
105 |
|
106 |
@Override
|
107 |
public void createResourcesTable() { |
108 |
String tableName = RESOURCES_TABLE_NAME;
|
109 |
try {
|
110 |
DataManager dataManager = DALLocator.getDataManager(); |
111 |
JDBCServerExplorer server = (JDBCServerExplorer) dataManager.openServerExplorer( |
112 |
this.connection.getExplorerName(),
|
113 |
this.connection
|
114 |
); |
115 |
JDBCNewStoreParameters params = server.getAddParameters(); |
116 |
params.setTable(tableName); |
117 |
EditableFeatureType ft = params.getDefaultFeatureType(); |
118 |
ft.add(RESOURCES_FIELD_NAME, DataTypes.STRING, 150)
|
119 |
.setAllowNull(false)
|
120 |
.setIsPrimaryKey(true);
|
121 |
ft.add(RESOURCES_FIELD_RESOURCE, DataTypes.BYTEARRAY) |
122 |
.setAllowNull(true);
|
123 |
server.add(tableName, params, false);
|
124 |
} catch (Exception ex) { |
125 |
LOGGER.warn("Can't create table '"+tableName+"'.",ex); |
126 |
} |
127 |
} |
128 |
|
129 |
@Override
|
130 |
public FeatureStore getResourcesTable() {
|
131 |
return this.getTable(RESOURCES_TABLE_NAME); |
132 |
} |
133 |
|
134 |
@Override
|
135 |
public void dropResourcesTable() { |
136 |
this.dropTable(RESOURCES_TABLE_NAME);
|
137 |
} |
138 |
|
139 |
@Override
|
140 |
public String get(String name) { |
141 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
142 |
} |
143 |
|
144 |
@Override
|
145 |
public void set(String name, String value) { |
146 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
147 |
} |
148 |
|
149 |
@Override
|
150 |
public StoresRepository getStoresRepository() {
|
151 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
152 |
} |
153 |
|
154 |
@Override
|
155 |
public boolean canAnonymousUserWriteInTheTables() { |
156 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
157 |
} |
158 |
|
159 |
@Override
|
160 |
public FeatureStore getRepositoryTable() {
|
161 |
return this.getTable(REPOSITORY_TABLE_NAME); |
162 |
} |
163 |
|
164 |
@Override
|
165 |
public FeatureStore getConfigurationTable() {
|
166 |
return this.getTable(CONFIG_TABLE_NAME); |
167 |
} |
168 |
|
169 |
@Override
|
170 |
public void createRepositoryTable() { |
171 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
172 |
} |
173 |
|
174 |
@Override
|
175 |
public void createConfigurationTable() { |
176 |
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. |
177 |
} |
178 |
|
179 |
@Override
|
180 |
public boolean existsRepositoryTable() { |
181 |
return this.existsTable(REPOSITORY_TABLE_NAME); |
182 |
} |
183 |
|
184 |
@Override
|
185 |
public boolean existsConfigurationTable() { |
186 |
return this.existsTable(CONFIG_TABLE_NAME); |
187 |
} |
188 |
|
189 |
} |