Revision 44307
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/feature/spi/simpleprovider/SimpleSequentialReaderStoreParameters.java | ||
---|---|---|
30 | 30 |
import org.apache.commons.lang3.StringUtils; |
31 | 31 |
import org.cresques.cts.IProjection; |
32 | 32 |
import org.gvsig.fmap.dal.DALLocator; |
33 |
import org.gvsig.fmap.dal.DataStoreProviderFactory; |
|
34 | 33 |
import org.gvsig.fmap.dal.FileHelper; |
35 | 34 |
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters; |
36 | 35 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
... | ... | |
45 | 44 |
import org.slf4j.Logger; |
46 | 45 |
import org.slf4j.LoggerFactory; |
47 | 46 |
|
48 |
public class SimpleSequentialReaderStoreParameters extends AbstractDataParameters implements |
|
49 |
OpenFeatureStoreParameters, FilesystemStoreParameters { |
|
47 |
public class SimpleSequentialReaderStoreParameters |
|
48 |
extends AbstractDataParameters |
|
49 |
implements OpenFeatureStoreParameters, FilesystemStoreParameters, Cloneable |
|
50 |
{ |
|
50 | 51 |
|
51 | 52 |
private static final Logger LOGGER = LoggerFactory.getLogger(SimpleSequentialReaderStoreParameters.class); |
52 | 53 |
|
... | ... | |
75 | 76 |
} |
76 | 77 |
|
77 | 78 |
@Override |
79 |
protected Object clone() throws CloneNotSupportedException { |
|
80 |
SimpleSequentialReaderStoreParameters other = (SimpleSequentialReaderStoreParameters) super.clone(); |
|
81 |
other.parameters = (DelegatedDynObject) FileHelper.newParameters(readerFactory.getName()); |
|
82 |
this.copyValuesTo(other); |
|
83 |
return other; |
|
84 |
} |
|
85 |
|
|
86 |
|
|
87 |
@Override |
|
78 | 88 |
public String getDataStoreName() { |
79 | 89 |
return (String) this.getDynValue(DataStoreProviderServices.PROVIDER_PARAMTER_NAME); |
80 | 90 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/feature/spi/simpleprovider/AbstractSimpleSequentialReader.java | ||
---|---|---|
28 | 28 |
return this.factory; |
29 | 29 |
} |
30 | 30 |
|
31 |
protected OpenFeatureStoreParameters getParameters() { |
|
31 |
@Override |
|
32 |
public OpenFeatureStoreParameters getParameters() { |
|
32 | 33 |
return this.params; |
33 | 34 |
} |
34 | 35 |
|
... | ... | |
42 | 43 |
} |
43 | 44 |
|
44 | 45 |
@Override |
46 |
public String getAlias() { |
|
47 |
return null; |
|
48 |
} |
|
49 |
|
|
50 |
@Override |
|
45 | 51 |
public String getDescription() { |
46 | 52 |
return null; |
47 | 53 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/feature/spi/simpleprovider/SimpleSequentialReaderStoreProvider.java | ||
---|---|---|
34 | 34 |
|
35 | 35 |
import org.apache.commons.lang3.StringUtils; |
36 | 36 |
import org.cresques.cts.IProjection; |
37 |
import org.gvsig.fmap.dal.BaseStoresRepository; |
|
37 | 38 |
import org.gvsig.fmap.dal.DALLocator; |
38 | 39 |
import org.gvsig.fmap.dal.DataManager; |
39 | 40 |
import org.gvsig.fmap.dal.DataServerExplorer; |
... | ... | |
55 | 56 |
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator; |
56 | 57 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
57 | 58 |
import org.gvsig.fmap.dal.feature.FeatureType; |
59 |
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters; |
|
58 | 60 |
import org.gvsig.fmap.dal.feature.exception.PerformEditingException; |
59 | 61 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
60 | 62 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices; |
... | ... | |
78 | 80 |
import org.gvsig.timesupport.Interval; |
79 | 81 |
import org.gvsig.tools.ToolsLocator; |
80 | 82 |
import org.gvsig.tools.dataTypes.CoercionException; |
83 |
import org.gvsig.tools.dataTypes.DataTypeUtils; |
|
81 | 84 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
82 | 85 |
import org.gvsig.tools.dataTypes.DataTypesManager.Coercion; |
83 | 86 |
import org.gvsig.tools.dataTypes.DataTypesManager.CoercionWithLocale; |
87 |
import org.gvsig.tools.dispose.Disposable; |
|
88 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
84 | 89 |
import org.gvsig.tools.dynobject.Tags; |
85 | 90 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException; |
86 | 91 |
import org.gvsig.tools.exception.BaseException; |
... | ... | |
100 | 105 |
|
101 | 106 |
private static final Logger LOGGER = LoggerFactory.getLogger(SimpleSequentialReaderStoreProvider.class); |
102 | 107 |
|
103 |
private class ReaderData { |
|
108 |
private class StoresRepositoryWithChildren extends BaseStoresRepository { |
|
109 |
|
|
110 |
public StoresRepositoryWithChildren() { |
|
111 |
super(SimpleSequentialReaderStoreProvider.this.getName()); |
|
112 |
} |
|
113 |
|
|
114 |
@Override |
|
115 |
public DataStore getStore(String name) { |
|
116 |
if( StringUtils.equalsIgnoreCase(name, readerData.getName()) || |
|
117 |
StringUtils.equalsIgnoreCase(name, readerData.getAlias()) ) { |
|
118 |
return readerData.getStore(); |
|
119 |
} |
|
120 |
for (ReaderData child : childrenData) { |
|
121 |
if( StringUtils.equalsIgnoreCase(name, child.getName()) || |
|
122 |
StringUtils.equalsIgnoreCase(name, child.getAlias()) ) { |
|
123 |
return child.getStore(); |
|
124 |
} |
|
125 |
} |
|
126 |
return super.getStore(name); |
|
127 |
} |
|
128 |
|
|
129 |
} |
|
130 |
|
|
131 |
private class ReaderData implements Disposable { |
|
104 | 132 |
private FeatureType defaultFeatureType; |
105 | 133 |
private List<FeatureType> featureTypes; |
106 |
private final List<FeatureProvider> features;
|
|
134 |
private List<FeatureProvider> features; |
|
107 | 135 |
private boolean needCalculateEnvelope; |
108 | 136 |
private String name; |
137 |
private String alias; |
|
109 | 138 |
private long OIDcounter; |
110 | 139 |
private DataStore store; |
111 | 140 |
private StoresRepository storesRepository; |
141 |
private OpenFeatureStoreParameters parameters; |
|
112 | 142 |
|
113 | 143 |
public ReaderData() { |
114 | 144 |
this.needCalculateEnvelope = false; |
... | ... | |
116 | 146 |
this.OIDcounter = 0; |
117 | 147 |
this.store = null; |
118 | 148 |
} |
149 |
|
|
150 |
@Override |
|
151 |
public void dispose() { |
|
152 |
DisposeUtils.disposeQuietly(store); |
|
153 |
this.store = null; |
|
154 |
this.features = null; |
|
155 |
this.OIDcounter = 0; |
|
156 |
this.defaultFeatureType = null; |
|
157 |
this.featureTypes = null; |
|
158 |
this.parameters = null; |
|
159 |
this.storesRepository = null; |
|
160 |
} |
|
119 | 161 |
|
120 | 162 |
public void addFeatureProvider(FeatureProvider feature) { |
121 | 163 |
feature.setOID(this.OIDcounter++); |
... | ... | |
155 | 197 |
return this.features; |
156 | 198 |
} |
157 | 199 |
|
158 |
public DataStore getStore() throws InitializeException {
|
|
200 |
public DataStore getStore() { |
|
159 | 201 |
if( this.store == null ) { |
160 |
SimpleSequentialReaderStoreProvider provider = new SimpleSequentialReaderStoreProvider( |
|
161 |
readerFactory, |
|
162 |
getParameters(), |
|
163 |
null, |
|
164 |
childrenData, |
|
165 |
this |
|
166 |
); |
|
167 |
DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices(); |
|
168 |
this.store = manager.openStore( |
|
169 |
getParameters(), |
|
170 |
provider |
|
171 |
); |
|
172 |
provider.setStoreServices((FeatureStoreProviderServices) this.store); |
|
173 |
provider.name = this.name; |
|
202 |
try { |
|
203 |
SimpleSequentialReaderStoreProvider provider = new SimpleSequentialReaderStoreProvider( |
|
204 |
readerFactory, |
|
205 |
(SimpleSequentialReaderStoreParameters) getParameters(), |
|
206 |
null, |
|
207 |
childrenData, |
|
208 |
this |
|
209 |
); |
|
210 |
DataManagerProviderServices manager = DALSPILocator.getDataManagerProviderServices(); |
|
211 |
this.store = manager.openStore( |
|
212 |
getParameters(), |
|
213 |
provider |
|
214 |
); |
|
215 |
provider.setStoreServices((FeatureStoreProviderServices) this.store); |
|
216 |
provider.name = this.name; |
|
217 |
DisposeUtils.bind(this.store); |
|
218 |
} catch(Exception ex) { |
|
219 |
LOGGER.warn("Can't build store form child '"+name+"'.",ex); |
|
220 |
return null; |
|
221 |
} |
|
174 | 222 |
} |
223 |
DisposeUtils.bind(this.store); |
|
175 | 224 |
return this.store; |
176 | 225 |
} |
177 | 226 |
|
... | ... | |
182 | 231 |
public StoresRepository getStoresRepository() { |
183 | 232 |
return storesRepository; |
184 | 233 |
} |
234 |
|
|
235 |
public void setParameters(OpenFeatureStoreParameters parameters) { |
|
236 |
if( parameters==null ) { |
|
237 |
LOGGER.warn("Can't set parameters to null"); |
|
238 |
return; |
|
239 |
} |
|
240 |
this.parameters = parameters; |
|
241 |
} |
|
242 |
|
|
243 |
public OpenFeatureStoreParameters getParameters() { |
|
244 |
return parameters; |
|
245 |
} |
|
246 |
|
|
247 |
public String getAlias() { |
|
248 |
return this.alias; |
|
249 |
} |
|
250 |
|
|
251 |
public void setAlias(String alias) { |
|
252 |
this.alias = alias; |
|
253 |
} |
|
185 | 254 |
|
255 |
|
|
186 | 256 |
} |
187 | 257 |
|
188 | 258 |
class Children implements UnmodifiableBasicMap<String, DataStore> { |
... | ... | |
194 | 264 |
public DataStore get(String key) { |
195 | 265 |
for (ReaderData child : childrenData) { |
196 | 266 |
if( StringUtils.equalsIgnoreCase(child.getName(), key) ) { |
197 |
try { |
|
198 |
return child.getStore(); |
|
199 |
} catch (Exception ex) { |
|
200 |
throw new RuntimeException(ex); |
|
201 |
} |
|
267 |
return child.getStore(); |
|
202 | 268 |
} |
203 | 269 |
} |
204 | 270 |
return null; |
... | ... | |
289 | 355 |
private final SimpleSequentialReaderFactory readerFactory; |
290 | 356 |
private List<ReaderData> childrenData; |
291 | 357 |
private ReaderData readerData; |
358 |
private final boolean isAChild; |
|
292 | 359 |
|
293 | 360 |
public SimpleSequentialReaderStoreProvider( |
294 | 361 |
SimpleSequentialReaderFactory readerFactory, |
... | ... | |
314 | 381 |
this.childrenData = childrenData; |
315 | 382 |
this.readerData = readerData; |
316 | 383 |
this.readerFactory = readerFactory; |
317 |
|
|
384 |
this.isAChild = this.readerData!=null; |
|
385 |
|
|
318 | 386 |
File file = getParameters().getFile(); |
319 | 387 |
resource = this.createResource( |
320 | 388 |
FileResource.NAME, |
... | ... | |
329 | 397 |
initializeFeatureTypes(); |
330 | 398 |
} |
331 | 399 |
} |
332 |
|
|
400 |
|
|
401 |
private boolean isChild() { |
|
402 |
return this.isAChild; |
|
403 |
} |
|
404 |
|
|
333 | 405 |
private void setStoreServices(FeatureStoreProviderServices storeServices) throws InitializeException { |
334 | 406 |
this.store = storeServices; |
335 | 407 |
initializeFeatureTypes(); |
336 | 408 |
} |
409 |
|
|
410 |
@Override |
|
411 |
public FeatureStoreProviderServices getStoreServices() { |
|
412 |
if( this.store==null ) { |
|
413 |
// Por aqui no deberia de pasar. |
|
414 |
// Si pasa es que algo va mal. |
|
415 |
LOGGER.warn("Algo no anda bien, el store es null"); |
|
416 |
DataStore theStore = this.readerData.getStore(); |
|
417 |
if( theStore==null ) { |
|
418 |
return null; |
|
419 |
} |
|
420 |
this.store = (FeatureStoreProviderServices) theStore ; |
|
421 |
} |
|
422 |
return this.store; |
|
423 |
} |
|
337 | 424 |
|
338 | 425 |
@Override |
339 | 426 |
public SimpleSequentialReaderStoreParameters getParameters() { |
... | ... | |
437 | 524 |
throw new UnsupportedOperationException(); |
438 | 525 |
} |
439 | 526 |
|
440 |
protected void initializeFeatureTypes() throws InitializeException { |
|
527 |
@Override |
|
528 |
protected void doDispose() throws BaseException { |
|
529 |
for (ReaderData theReaderData : this.childrenData) { |
|
530 |
DisposeUtils.disposeQuietly(theReaderData); |
|
531 |
} |
|
532 |
this.childrenData = null; |
|
533 |
DisposeUtils.disposeQuietly(this.readerData); |
|
534 |
this.readerData = null; |
|
535 |
// this.resource = null; |
|
536 |
// this.readerFactory = null; |
|
537 |
this.envelope = null; |
|
538 |
super.doDispose(); |
|
539 |
} |
|
540 |
|
|
541 |
|
|
542 |
private void initializeFeatureTypes() throws InitializeException { |
|
441 | 543 |
try { |
442 | 544 |
this.open(); |
443 | 545 |
} catch (OpenException e) { |
... | ... | |
723 | 825 |
try { |
724 | 826 |
switch(entry.getKey().toLowerCase()) { |
725 | 827 |
case "hidden": |
726 |
fad.setHidden((boolean) dataTypesManager.coerce(DataTypes.BOOLEAN, entry.getValue()));
|
|
828 |
fad.setHidden(DataTypeUtils.toBoolean(entry.getValue(), false));
|
|
727 | 829 |
break; |
728 | 830 |
case "allownull": |
729 |
fad.setAllowNull((boolean) dataTypesManager.coerce(DataTypes.BOOLEAN, entry.getValue()));
|
|
831 |
fad.setAllowNull(DataTypeUtils.toBoolean(entry.getValue(), false));
|
|
730 | 832 |
break; |
731 | 833 |
case "pk": |
732 | 834 |
case "ispk": |
733 | 835 |
case "primarykey": |
734 | 836 |
case "isprimarykey": |
735 |
fad.setIsPrimaryKey((boolean) dataTypesManager.coerce(DataTypes.BOOLEAN, entry.getValue()));
|
|
837 |
fad.setIsPrimaryKey(DataTypeUtils.toBoolean(entry.getValue(), false));
|
|
736 | 838 |
break; |
737 | 839 |
case "isautomatic": |
738 | 840 |
case "automatic": |
739 |
fad.setIsAutomatic((boolean) dataTypesManager.coerce(DataTypes.BOOLEAN, entry.getValue()));
|
|
841 |
fad.setIsAutomatic(DataTypeUtils.toBoolean(entry.getValue(), false));
|
|
740 | 842 |
break; |
741 | 843 |
case "time": |
742 | 844 |
case "istime": |
743 |
fad.setIsTime((boolean) dataTypesManager.coerce(DataTypes.BOOLEAN, entry.getValue()));
|
|
845 |
fad.setIsTime(DataTypeUtils.toBoolean(entry.getValue(), false));
|
|
744 | 846 |
break; |
745 | 847 |
case "profile": |
746 |
fad.setDataProfileName((String) dataTypesManager.coerce(DataTypes.STRING, entry.getValue()));
|
|
848 |
fad.setDataProfileName(DataTypeUtils.toString(entry.getValue(), ""));
|
|
747 | 849 |
break; |
748 | 850 |
case "group": |
749 |
fad.setGroup((String) dataTypesManager.coerce(DataTypes.STRING, entry.getValue()));
|
|
851 |
fad.setGroup(DataTypeUtils.toString(entry.getValue(), ""));
|
|
750 | 852 |
break; |
751 | 853 |
case "description": |
752 |
fad.setDescription((String) dataTypesManager.coerce(DataTypes.STRING, entry.getValue()));
|
|
854 |
fad.setDescription(DataTypeUtils.toString(entry.getValue(), ""));
|
|
753 | 855 |
break; |
754 | 856 |
case "label": |
755 |
fad.setLabel((String) dataTypesManager.coerce(DataTypes.STRING, entry.getValue()));
|
|
857 |
fad.setLabel(DataTypeUtils.toString(entry.getValue(), ""));
|
|
756 | 858 |
break; |
757 | 859 |
case "expression": |
758 | 860 |
// Los campos calculados los procesamos en una segunda |
... | ... | |
760 | 862 |
// ya que pueden requerir campos que aun no se han definido. |
761 | 863 |
break; |
762 | 864 |
case "size": |
763 |
fad.setSize((int) dataTypesManager.coerce(DataTypes.INT, entry.getValue()));
|
|
865 |
fad.setSize(DataTypeUtils.toInteger(entry.getValue(), 50));
|
|
764 | 866 |
break; |
765 | 867 |
case "precision": |
766 |
fad.setPrecision((int) dataTypesManager.coerce(DataTypes.INT, entry.getValue()));
|
|
868 |
fad.setPrecision(DataTypeUtils.toInteger(entry.getValue(), 10));
|
|
767 | 869 |
break; |
768 | 870 |
case "order": |
769 |
fad.setOrder((int) dataTypesManager.coerce(DataTypes.INT, entry.getValue()));
|
|
871 |
fad.setOrder(DataTypeUtils.toInteger(entry.getValue(), 0));
|
|
770 | 872 |
break; |
873 |
case "foreingkey": |
|
874 |
fad.getForeingKey().setForeingKey(DataTypeUtils.toBoolean(entry.getValue(), false)); |
|
875 |
break; |
|
876 |
case "foreingkey.code": |
|
877 |
fad.getForeingKey().setCodeName(DataTypeUtils.toString(entry.getValue(), "")); |
|
878 |
break; |
|
879 |
case "foreingkey.label": |
|
880 |
fad.getForeingKey().setLabelFormula(DataTypeUtils.toString(entry.getValue(), "")); |
|
881 |
break; |
|
882 |
case "foreingkey.selectable": |
|
883 |
fad.getForeingKey().setSelectable(DataTypeUtils.toBoolean(entry.getValue(), false)); |
|
884 |
break; |
|
885 |
case "foreingkey.table": |
|
886 |
fad.getForeingKey().setTableName(DataTypeUtils.toString(entry.getValue(), "")); |
|
887 |
break; |
|
771 | 888 |
case "interval": |
772 | 889 |
fad.setInterval((Interval) dataTypesManager.coerce(DataTypes.INTERVAL, entry.getValue())); |
773 | 890 |
break; |
... | ... | |
934 | 1051 |
SimpleSequentialReader reader = this.readerFactory.createReader(this.getParameters()); |
935 | 1052 |
try { |
936 | 1053 |
loadFeatures(reader, theReaderData); |
1054 |
StoresRepositoryWithChildren repoWithChildren = new StoresRepositoryWithChildren(); |
|
1055 |
StoresRepository repo = reader.getStoresRepository(); |
|
1056 |
if( repo!=null ) { |
|
1057 |
repoWithChildren.addRepository(repo); |
|
1058 |
} |
|
937 | 1059 |
this.childrenData = new ArrayList<>(); |
938 |
for(SimpleSequentialReader childReader : reader.getChildren() ) { |
|
1060 |
List<SimpleSequentialReader> children = reader.getChildren(); |
|
1061 |
for(SimpleSequentialReader childReader : children ) { |
|
939 | 1062 |
ReaderData childData = new ReaderData(); |
940 | 1063 |
loadFeatures(childReader, childData); |
941 | 1064 |
this.childrenData.add(childData); |
1065 |
repoWithChildren.add(childReader.getName(), childData.getParameters()); |
|
1066 |
if( !StringUtils.isBlank(childReader.getAlias()) ) { |
|
1067 |
repoWithChildren.add(childReader.getAlias(), childData.getParameters()); |
|
1068 |
} |
|
1069 |
childData.setStoresRepository(repoWithChildren); |
|
942 | 1070 |
} |
1071 |
repoWithChildren.add(reader.getName(), theReaderData.getParameters()); |
|
1072 |
if( !StringUtils.isBlank(reader.getAlias()) ) { |
|
1073 |
repoWithChildren.add(reader.getAlias(), theReaderData.getParameters()); |
|
1074 |
} |
|
1075 |
theReaderData.setStoresRepository(repoWithChildren); |
|
943 | 1076 |
this.readerData = theReaderData; |
944 | 1077 |
} finally { |
945 | 1078 |
reader.close(); |
... | ... | |
967 | 1100 |
taskStatus.message("_preparing"); |
968 | 1101 |
readerData.setName(reader.getName()); |
969 | 1102 |
readerData.setStoresRepository(reader.getStoresRepository()); |
1103 |
readerData.setParameters(reader.getParameters()); |
|
1104 |
readerData.setAlias(reader.getAlias()); |
|
970 | 1105 |
|
971 | 1106 |
boolean ignore_errors = getParameters().getIgnoreErrors(); |
972 | 1107 |
|
... | ... | |
1129 | 1264 |
|
1130 | 1265 |
@Override |
1131 | 1266 |
public UnmodifiableBasicMap<String, DataStore> getChildren() { |
1267 |
if( this.isChild() ) { |
|
1268 |
return null; |
|
1269 |
} |
|
1132 | 1270 |
return new Children(); |
1133 | 1271 |
} |
1134 | 1272 |
|
1135 | 1273 |
@Override |
1136 | 1274 |
public StoresRepository getStoresRepository() { |
1137 | 1275 |
StoresRepository repo = this.readerData.getStoresRepository(); |
1138 |
if( repo == null ) { |
|
1139 |
return super.getStoresRepository(); |
|
1140 |
} |
|
1141 | 1276 |
return repo; |
1142 | 1277 |
} |
1143 | 1278 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/feature/spi/simpleprovider/SimpleSequentialReader.java | ||
---|---|---|
9 | 9 |
import java.util.List; |
10 | 10 |
import java.util.Map; |
11 | 11 |
import org.gvsig.fmap.dal.StoresRepository; |
12 |
import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters; |
|
12 | 13 |
import org.gvsig.fmap.dal.feature.spi.simpleprovider.AutomaticDetectionOfTypes.Rows; |
13 | 14 |
|
14 | 15 |
/** |
... | ... | |
32 | 33 |
|
33 | 34 |
public String getName(); |
34 | 35 |
|
36 |
public String getAlias(); |
|
37 |
|
|
35 | 38 |
public String getLabel(); |
36 | 39 |
|
37 | 40 |
public String getDescription(); |
... | ... | |
44 | 47 |
|
45 | 48 |
public StoresRepository getStoresRepository(); |
46 | 49 |
|
50 |
public OpenFeatureStoreParameters getParameters(); |
|
47 | 51 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/complements/relatedfeatures/RelatedFeaturesImpl.java | ||
---|---|---|
90 | 90 |
if( store != null ) { |
91 | 91 |
StoresRepository repository = store.getStoresRepository(); |
92 | 92 |
if( repository.containsKey(getTableName()) ) { |
93 |
this.featureStore = (FeatureStore) repository.get(getTableName()); |
|
93 |
this.featureStore = (FeatureStore) repository.getStore(getTableName());
|
|
94 | 94 |
if( this.featureStore!=null) { |
95 | 95 |
return this.featureStore; |
96 | 96 |
} |
... | ... | |
98 | 98 |
} |
99 | 99 |
} |
100 | 100 |
StoresRepository repository = this.getStoresRepository(); |
101 |
this.featureStore = (FeatureStore) repository.get(getTableName()); |
|
101 |
this.featureStore = (FeatureStore) repository.getStore(getTableName());
|
|
102 | 102 |
if (this.featureStore == null) { |
103 | 103 |
LOGGER.warn("Can't locate store '" + getTableName() + "'."); |
104 | 104 |
return null; |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureStore.java | ||
---|---|---|
319 | 319 |
|
320 | 320 |
@Override |
321 | 321 |
public DataStoreParameters getParameters() { |
322 |
if( this.parameters==null ) { |
|
323 |
LOG.warn("Store parametes are null"); |
|
324 |
} |
|
322 | 325 |
return parameters; |
323 | 326 |
} |
324 | 327 |
|
... | ... | |
333 | 336 |
|
334 | 337 |
@Override |
335 | 338 |
public UnmodifiableBasicMap<String,DataStore> getChildren() { |
336 |
return this.provider.getChildren(); |
|
339 |
UnmodifiableBasicMap<String, DataStore> children = this.provider.getChildren(); |
|
340 |
if( children == null ) { |
|
341 |
return UnmodifiableBasicMap.EMPTY_UNMODIFIABLEBASICMAP; |
|
342 |
} |
|
343 |
return children; |
|
337 | 344 |
} |
338 | 345 |
|
339 | 346 |
@Override |
... | ... | |
743 | 750 |
); |
744 | 751 |
} |
745 | 752 |
|
746 |
public DataStoreProviderServices getStoreProviderServices() {
|
|
747 |
return this;
|
|
748 |
}
|
|
753 |
public DataStoreProviderServices getStoreProviderServices() {
|
|
754 |
return this;
|
|
755 |
}
|
|
749 | 756 |
|
750 | 757 |
public static void registerPersistenceDefinition() { |
751 | 758 |
PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
... | ... | |
2994 | 3001 |
public StoresRepository getStoresRepository() { |
2995 | 3002 |
final StoresRepository mainRepository = this.dataManager.getStoresRepository(); |
2996 | 3003 |
StoresRepository localRepository = this.provider.getStoresRepository(); |
2997 |
StoresRepository repository = new BaseStoresRepository(this.getName()) { |
|
2998 |
|
|
2999 |
@Override |
|
3000 |
protected DataStoreParameters getMyParameters(String name) { |
|
3001 |
// Uff, esta implementacion no es nada buena |
|
3002 |
UnmodifiableBasicMap<String, DataStore> children = getChildren(); |
|
3003 |
if( children==null ) { |
|
3004 |
return null; |
|
3005 |
} |
|
3006 |
DataStore store = children.get(name); |
|
3007 |
if( store==null ) { |
|
3008 |
return null; |
|
3009 |
} |
|
3010 |
return store.getParameters(); |
|
3011 |
} |
|
3012 |
|
|
3013 |
@Override |
|
3014 |
protected boolean isEmptyMyRepository() { |
|
3015 |
UnmodifiableBasicMap<String, DataStore> children = getChildren(); |
|
3016 |
return children==null || children.isEmpty(); |
|
3017 |
} |
|
3018 |
|
|
3019 |
@Override |
|
3020 |
protected int getMySize() { |
|
3021 |
UnmodifiableBasicMap<String, DataStore> children = getChildren(); |
|
3022 |
if( children==null ) { |
|
3023 |
return 0; |
|
3024 |
} |
|
3025 |
return children.size(); |
|
3026 |
} |
|
3027 |
|
|
3028 |
@Override |
|
3029 |
public void add(String name, DataStoreParameters parameters) { |
|
3030 |
mainRepository.add(name, parameters); |
|
3031 |
} |
|
3032 |
|
|
3033 |
@Override |
|
3034 |
public void remove(String name) { |
|
3035 |
mainRepository.remove(name); |
|
3036 |
} |
|
3037 |
|
|
3038 |
}; |
|
3039 |
if( localRepository!=null ) { |
|
3040 |
repository.addRepository(localRepository); |
|
3004 |
if( localRepository==null ) { |
|
3005 |
return mainRepository; |
|
3041 | 3006 |
} |
3007 |
StoresRepository repository = new BaseStoresRepository(this.getName()); |
|
3008 |
repository.addRepository(localRepository); |
|
3042 | 3009 |
repository.addRepository(mainRepository); |
3043 | 3010 |
return repository; |
3044 | 3011 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/linkforeingkey/JDynFormFieldForeingKey.java | ||
---|---|---|
35 | 35 |
import javax.swing.Icon; |
36 | 36 |
import javax.swing.ImageIcon; |
37 | 37 |
import javax.swing.JButton; |
38 |
import javax.swing.JComponent; |
|
38 | 39 |
import javax.swing.JList; |
39 | 40 |
import javax.swing.JPanel; |
40 | 41 |
import javax.swing.JTextField; |
... | ... | |
43 | 44 |
import javax.swing.text.JTextComponent; |
44 | 45 |
import org.gvsig.featureform.swing.JFeaturesForm; |
45 | 46 |
import org.gvsig.featureform.swing.JFeaturesForm.FeaturesFormContext; |
46 |
import org.gvsig.fmap.dal.StoresRepository; |
|
47 | 47 |
import org.gvsig.fmap.dal.feature.Feature; |
48 | 48 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
49 | 49 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
50 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
51 | 50 |
import org.gvsig.fmap.dal.feature.FeatureType; |
52 | 51 |
import org.gvsig.fmap.dal.feature.ForeingKey; |
53 | 52 |
import org.gvsig.fmap.dal.feature.ForeingKey.ContextForeingKey; |
54 | 53 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
55 | 54 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
56 |
import org.gvsig.tools.ToolsLocator; |
|
57 | 55 |
import org.gvsig.tools.dispose.DisposeUtils; |
58 | 56 |
import org.gvsig.tools.dynform.DynFormFieldDefinition; |
59 | 57 |
import org.gvsig.tools.dynform.JDynForm; |
... | ... | |
343 | 341 |
public void setReadOnly(boolean readonly) { |
344 | 342 |
initComponentIfNeed(); |
345 | 343 |
boolean editable = !readonly; |
344 |
JComponent jlabel = this.getJLabel(); |
|
345 |
if( jlabel !=null ) { |
|
346 |
jlabel.setEnabled(editable); |
|
347 |
} |
|
346 | 348 |
this.txtDescription.setEditable(false); |
347 | 349 |
this.btnEdit.setEnabled(true); |
348 | 350 |
this.btnLink.setEnabled(editable); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/BaseStoresRepository.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.util.HashMap; |
4 | 4 |
import java.util.Map; |
5 |
import org.apache.commons.lang3.StringUtils; |
|
5 | 6 |
import org.gvsig.tools.util.UnmodifiableBasicSet; |
6 | 7 |
import org.gvsig.tools.util.UnmodifiableBasicSetAdapter; |
7 | 8 |
|
... | ... | |
45 | 46 |
|
46 | 47 |
@Override |
47 | 48 |
public void add(String name, DataStoreParameters parameters) { |
49 |
if( parameters == null ) { |
|
50 |
throw new IllegalArgumentException("parameters can't be null."); |
|
51 |
} |
|
52 |
if( StringUtils.isBlank(name) ) { |
|
53 |
throw new IllegalArgumentException("name can't be blank."); |
|
54 |
} |
|
48 | 55 |
this.repository.put(name, parameters); |
49 | 56 |
} |
50 | 57 |
|
51 | 58 |
@Override |
52 | 59 |
public void remove(String name) { |
60 |
if( StringUtils.isBlank(name) ) { |
|
61 |
LOGGER.warn("parameter name can't be blank"); |
|
62 |
return; |
|
63 |
} |
|
53 | 64 |
this.repository.remove(name); |
54 | 65 |
} |
55 | 66 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/AbstractStoresRepository.java | ||
---|---|---|
8 | 8 |
import org.apache.commons.lang3.StringUtils; |
9 | 9 |
import org.gvsig.tools.util.UnmodifiableBasicSet; |
10 | 10 |
import org.gvsig.tools.util.UnmodifiableBasicSetChained; |
11 |
import org.slf4j.Logger; |
|
12 |
import org.slf4j.LoggerFactory; |
|
11 | 13 |
|
12 | 14 |
/** |
13 | 15 |
* |
... | ... | |
16 | 18 |
@SuppressWarnings("UseSpecificCatch") |
17 | 19 |
public abstract class AbstractStoresRepository implements StoresRepository { |
18 | 20 |
|
21 |
protected final Logger LOGGER = LoggerFactory.getLogger(AbstractStoresRepository.class); |
|
22 |
|
|
19 | 23 |
private final String name; |
20 | 24 |
private final String label; |
21 | 25 |
private final List<StoresRepository> subrepositories; |
... | ... | |
102 | 106 |
|
103 | 107 |
@Override |
104 | 108 |
public DataStore getStore(String name) { |
105 |
DataStoreParameters parameters = this.get(name); |
|
109 |
DataStoreParameters parameters = this.getMyParameters(name);
|
|
106 | 110 |
if( parameters!=null ) { |
107 | 111 |
try { |
108 | 112 |
DataStore store = DALLocator.getDataManager().openStore( |
... | ... | |
114 | 118 |
throw new RuntimeException("Can't open store '"+name+"'.", ex); |
115 | 119 |
} |
116 | 120 |
} |
121 |
for ( StoresRepository theRepository : this.subrepositories) { |
|
122 |
DataStore store = theRepository.getStore(name); |
|
123 |
if( store!=null ) { |
|
124 |
return store; |
|
125 |
} |
|
126 |
} |
|
117 | 127 |
return null; |
118 | 128 |
} |
119 | 129 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/AbstractFeatureStoreProvider.java | ||
---|---|---|
215 | 215 |
return resource; |
216 | 216 |
} |
217 | 217 |
|
218 |
/* |
|
219 |
* (non-Javadoc) |
|
220 |
* |
|
221 |
* @see |
|
222 |
* org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider#getStoreServices() |
|
223 |
*/ |
|
218 |
@Override |
|
224 | 219 |
public FeatureStoreProviderServices getStoreServices() { |
225 | 220 |
return this.store; |
226 | 221 |
} |
227 | 222 |
|
223 |
@Override |
|
228 | 224 |
public FeatureStore getFeatureStore() { |
229 |
if(this.store == null){ |
|
230 |
return null; |
|
231 |
} |
|
232 |
return this.store.getFeatureStore(); |
|
225 |
FeatureStoreProviderServices services = this.getStoreServices(); |
|
226 |
if(services == null){ |
|
227 |
return null; |
|
228 |
} |
|
229 |
return services.getFeatureStore(); |
|
233 | 230 |
} |
234 | 231 |
|
235 |
/** |
|
236 |
* unsupported by default, override this otherwise |
|
237 |
* |
|
238 |
* @see org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider#allowWrite() |
|
239 |
*/ |
|
232 |
@Override |
|
240 | 233 |
public boolean allowWrite() { |
241 | 234 |
return false; |
242 | 235 |
} |
... | ... | |
280 | 273 |
|
281 | 274 |
public FeatureProvider createFeatureProvider(FeatureType type) |
282 | 275 |
throws DataException { |
283 |
return this.store.createDefaultFeatureProvider(type); |
|
276 |
FeatureStoreProviderServices services = this.getStoreServices(); |
|
277 |
return services.createDefaultFeatureProvider(type); |
|
284 | 278 |
} |
285 | 279 |
|
286 | 280 |
/** |
... | ... | |
305 | 299 |
* |
306 | 300 |
* @see org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider#createFeatureSelection() |
307 | 301 |
*/ |
302 |
@Override |
|
308 | 303 |
public FeatureSelection createFeatureSelection() throws DataException { |
309 |
return this.store.createDefaultFeatureSelection(); |
|
304 |
FeatureStoreProviderServices services = this.getStoreServices(); |
|
305 |
return services.createDefaultFeatureSelection(); |
|
310 | 306 |
} |
311 | 307 |
|
312 | 308 |
/** |
... | ... | |
323 | 319 |
* |
324 | 320 |
* @see org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider#close() |
325 | 321 |
*/ |
322 |
@Override |
|
326 | 323 |
public void close() throws CloseException { |
327 | 324 |
// Do nothing by default |
328 | 325 |
} |
329 | 326 |
|
327 |
@Override |
|
330 | 328 |
protected void doDispose() throws BaseException { |
331 | 329 |
this.metadata = null; |
332 | 330 |
this.store = null; |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/spi/AbstractDataParameters.java | ||
---|---|---|
102 | 102 |
manager.clear(this); |
103 | 103 |
} |
104 | 104 |
|
105 |
protected void copyValuesTo(AbstractDataParameters target) {
|
|
105 |
protected void copyValuesTo(DataParameters target) { |
|
106 | 106 |
DynObjectManager manager = ToolsLocator.getDynObjectManager(); |
107 | 107 |
manager.copy(this, target); |
108 | 108 |
} |
109 | 109 |
|
110 | 110 |
@Override |
111 | 111 |
public DataParameters getCopy() { |
112 |
// TODO Delegar en el DynObject cuando tenga este servicio |
|
113 |
AbstractDataParameters copy; |
|
112 |
DataParameters copy; |
|
114 | 113 |
try { |
115 |
copy = (AbstractDataParameters) this.getClass().newInstance(); |
|
116 |
} catch (InstantiationException | IllegalAccessException e) { |
|
114 |
if( this instanceof Cloneable ) { |
|
115 |
copy = (DataParameters) this.clone(); |
|
116 |
} else { |
|
117 |
copy = (DataParameters) this.getClass().newInstance(); |
|
118 |
this.copyValuesTo(copy); |
|
119 |
} |
|
120 |
} catch (Exception e) { |
|
117 | 121 |
throw new CopyParametersException("data parameters", e); |
118 | 122 |
} |
119 |
this.copyValuesTo(copy); |
|
120 | 123 |
return copy; |
121 | 124 |
} |
122 | 125 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/ViewManager.java | ||
---|---|---|
104 | 104 |
if (filter == null || filter.test(store)) { |
105 | 105 |
all.put(store.getName(), store.getParameters()); |
106 | 106 |
} |
107 |
UnmodifiableBasicMap<String, DataStore> children = store.getChildren(); |
|
108 |
if (children != null) { |
|
109 |
for (DataStore dataStore : children) { |
|
110 |
if (filter == null || filter.test(dataStore)) { |
|
111 |
all.put(dataStore.getName(), dataStore.getParameters()); |
|
112 |
} |
|
113 |
} |
|
114 |
} |
|
107 |
// UnmodifiableBasicMap<String, DataStore> children = store.getChildren();
|
|
108 |
// if (children != null) {
|
|
109 |
// for (DataStore dataStore : children) {
|
|
110 |
// if (filter == null || filter.test(dataStore)) {
|
|
111 |
// all.put(dataStore.getName(), dataStore.getParameters());
|
|
112 |
// }
|
|
113 |
// }
|
|
114 |
// }
|
|
115 | 115 |
} |
116 | 116 |
if (limit > 0 && all.size() >= limit) { |
117 | 117 |
break; |
Also available in: Unified diff