Revision 32678 branches/v2_0_0_prep/libraries/org.gvsig.fmap.dal.cache/src/main/java/org/gvsig/fmap/dal/cache/h2spatial/FeatureCacheH2SpatialProvider.java

View differences:

FeatureCacheH2SpatialProvider.java
36 36
import org.gvsig.compat.lang.StringUtils;
37 37
import org.gvsig.fmap.dal.DataTypes;
38 38
import org.gvsig.fmap.dal.cache.AbstractFeatureCacheProvider;
39
import org.gvsig.fmap.dal.db.h2spatial.impl.H2SpatialNewStoreParameters;
39
import org.gvsig.fmap.dal.exception.CloseException;
40 40
import org.gvsig.fmap.dal.exception.CreateException;
41 41
import org.gvsig.fmap.dal.exception.DataException;
42
import org.gvsig.fmap.dal.exception.OpenException;
42 43
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
43 44
import org.gvsig.fmap.dal.feature.EditableFeature;
44 45
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
......
49 50
import org.gvsig.fmap.dal.feature.FeatureType;
50 51
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
51 52
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureReference;
52
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore;
53 53
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider;
54 54
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices;
55
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
56 55
import org.gvsig.fmap.geom.Geometry;
57 56

  
58 57
/**
59 58
 * @author Vicente Caballero Navarro
60 59
 */
61
public class FeatureCacheH2SpatialProvider extends AbstractFeatureCacheProvider  {
60
public class FeatureCacheH2SpatialProvider extends AbstractFeatureCacheProvider {
61
	@Override
62
	public void clear() {
63
		// TODO Auto-generated method stub
64
		super.clear();
65
	}
66

  
67
	@Override
68
	public void close() throws CloseException {
69
		// TODO Auto-generated method stub
70
		super.close();
71
	}
72

  
73
	@Override
74
	public void open() throws OpenException {
75
		// TODO Auto-generated method stub
76
		super.open();
77
	}
78

  
62 79
	public static final String NAME = "H2SPATIAL.CACHE";
63 80
	public static final String DESCRIPTION = "Cache provider for H2Spatial";
64
	
81

  
65 82
	private static final String FIELD_SRS = "srs";
66 83
	private static StringUtils stringUtils = CompatLocator.getStringUtils();
67
	
68
	private Map fieldsPosition = null;			
69
	
84

  
85
	private Map fieldsPosition = null;
86

  
70 87
	public FeatureStore createDataStore(double scale) throws DataException {
71 88
		NewFeatureStoreParameters parameters = createDataStoreParameters(0);
72
		EditableFeatureType eft=featureStoreProviderServices.getDefaultFeatureType().getEditable();
73
		EditableFeatureAttributeDescriptor efad=eft.add("IDPK", DataTypes.LONG);
89
		EditableFeatureType eft = featureStoreProviderServices
90
				.getDefaultFeatureType().getEditable();
91
		EditableFeatureAttributeDescriptor efad = eft.add("IDPK",
92
				DataTypes.LONG);
74 93
		efad.setIsPrimaryKey(true);
75 94
		efad.setIsAutomatic(true);
76 95
		parameters.setDefaultFeatureType(eft);
77 96
		parameters.setDynValue("pkfields", "IDPK");
78
		
97

  
79 98
		calculateFieldsPosition();
80
		
99
//		try {
100
//			parameters.invokeDynMethod("initialize", null);
101
//		} catch (DynMethodException e1) {
102
//			e1.printStackTrace();
103
//		}
81 104
		dataServerExplorer.add(parameters, true);
82 105
		dataServerExplorer.dispose();
83 106
		try {
84
			FeatureStore store=(FeatureStore)dataManager.createStore(parameters);
107
			FeatureStore store = (FeatureStore) dataManager
108
					.createStore(parameters);
85 109
			store.getParameters().setDynValue("pkfields", "IDPK");
86
			return store;			
110
			return store;
87 111
		} catch (ValidateDataParametersException e) {
88 112
			throw new CreateException("Cache for scale" + scale, e);
89
		}		
90
	}	
91
	
92
	private void calculateFieldsPosition() throws DataException{
93
		double d=0;
94
		FeatureType featureType = featureStoreProviderServices.getDefaultFeatureType().getEditable();
113
		}
114
	}
115

  
116
	private void calculateFieldsPosition() throws DataException {
117
		double d = 0;
118
		FeatureType featureType = featureStoreProviderServices
119
				.getDefaultFeatureType().getEditable();
95 120
		Iterator it = featureType.iterator();
96 121
		fieldsPosition = new HashMap();
97
		int i=0;
98
		while( it.hasNext() ) {
99
			FeatureAttributeDescriptor attr = (FeatureAttributeDescriptor) it.next();
100
			if (attr.getDataType() != DataTypes.GEOMETRY){
122
		int i = 0;
123
		while (it.hasNext()) {
124
			FeatureAttributeDescriptor attr = (FeatureAttributeDescriptor) it
125
					.next();
126
			if (attr.getDataType() != DataTypes.GEOMETRY) {
101 127
				fieldsPosition.put(attr.getName(), i);
102 128
				i++;
103 129
			}
104 130
		}
105 131
	}
106 132

  
107
	private NewFeatureStoreParameters createDataStoreParameters(double scale) throws DataException {
108
		NewFeatureStoreParameters parameters = (NewFeatureStoreParameters)dataServerExplorer.getAddParameters("H2Spatial");
109
		parameters.setDynValue("dbname",  System.getProperty("user.home")+File.separator+"gvsigcache"+File.separator+"cache");
133
	private NewFeatureStoreParameters createDataStoreParameters(double scale)
134
			throws DataException {
135
		NewFeatureStoreParameters parameters = (NewFeatureStoreParameters) dataServerExplorer
136
				.getAddParameters("H2Spatial");
137
		parameters.setDynValue("dbname", System.getProperty("user.home")
138
				+ File.separator + "gvSIG"+File.separator+"cache" + File.separator + "cache");
110 139
		parameters.setDynValue("schema", "PUBLIC");
111
		
112
		parameters.setDynValue("table",getStoreIdByScale(scale));
140

  
141
		parameters.setDynValue("table", getStoreIdByScale(scale));
113 142
		parameters.setDynValue(FIELD_SRS, sourceProjection);
114 143
		return parameters;
115 144
	}
116 145

  
117 146
	private String getStoreIdByScale(double scale) {
118 147
		String cacheName = featureStoreProvider.getSourceId().toString();
119
		cacheName = cacheName.substring(cacheName.lastIndexOf("/")+1, cacheName.length());
120
		cacheName = stringUtils.replaceAll(cacheName, "\\.", "_"); 
121
		cacheName = stringUtils.replaceAll(cacheName, ":", "_"); 
122
		return cacheName + "_" + stringUtils.replaceAll(String.valueOf(scale), "\\.", "_").toUpperCase();
123
//		return "tablaprueba";
148
		cacheName = cacheName.substring(cacheName.lastIndexOf("/") + 1,
149
				cacheName.length());
150
		cacheName = stringUtils.replaceAll(cacheName, "\\.", "_");
151
		cacheName = stringUtils.replaceAll(cacheName, ":", "_");
152
		return cacheName
153
				+ "_"
154
				+ stringUtils.replaceAll(String.valueOf(scale), "\\.", "_")
155
						.toUpperCase();
156
		// return "tablaprueba";
124 157
	}
125 158

  
126 159
	@Override
127 160
	protected void copyFeature(EditableFeature editableFeature,
128 161
			Feature sourceFeature) {
129
		FeatureAttributeDescriptor[] attDescriptors = editableFeature.getType().getAttributeDescriptors();		
130
		String geomField = editableFeature.getType().getDefaultGeometryAttributeName();
131
 		FeatureAttributeDescriptor[] pks=editableFeature.getType().getPrimaryKey();
132
		for (int i=0 ; i<attDescriptors.length ; i++){
162
		FeatureAttributeDescriptor[] attDescriptors = editableFeature.getType()
163
				.getAttributeDescriptors();
164
		String geomField = editableFeature.getType()
165
				.getDefaultGeometryAttributeName();
166
		FeatureAttributeDescriptor[] pks = editableFeature.getType()
167
				.getPrimaryKey();
168
		for (int i = 0; i < attDescriptors.length; i++) {
133 169
			FeatureAttributeDescriptor attr = attDescriptors[i];
134
			if (attr.getDataType() != DataTypes.GEOMETRY){
135
				if (attr.equals(pks[0])){
136
					editableFeature.set(attr.getName(),((DefaultFeatureReference)sourceFeature.getReference()).getOID());
137
				}else{
170
			if (attr.getDataType() != DataTypes.GEOMETRY) {
171
				if (attr.equals(pks[0])) {
172
					editableFeature.set(attr.getName(),
173
							((DefaultFeatureReference) sourceFeature
174
									.getReference()).getOID());
175
				} else {
138 176
					Object obj = sourceFeature.get(attr.getName());
139
					if (obj != null){
177
					if (obj != null) {
140 178
						editableFeature.set(attr.getName(), obj);
141 179
					}
142 180
				}
143
			}else{
144
				editableFeature.setGeometry(geomField, (Geometry)sourceFeature.get(attr.getName()));
181
			} else {
182
				editableFeature.setGeometry(geomField, (Geometry) sourceFeature
183
						.get(attr.getName()));
145 184
			}
146 185
		}
147 186
	}
......
149 188
	public void apply(
150 189
			FeatureStoreProviderServices featureStoreProviderServices,
151 190
			FeatureStoreProvider featureStoreProvider) throws DataException {
152
//		EditableFeatureType eft = featureStoreProviderServices.getDefaultFeatureType().getEditable();
153
//		if (featureType.getDefaultGeometryAttribute().getGeometryType() == TYPES.GEOMETRY){
154
//			throw new NotSupportMultipleGeometriesException();
155
//		}
156
		
157
		
191
		// EditableFeatureType eft =
192
		// featureStoreProviderServices.getDefaultFeatureType().getEditable();
193
		// if (featureType.getDefaultGeometryAttribute().getGeometryType() ==
194
		// TYPES.GEOMETRY){
195
		// throw new NotSupportMultipleGeometriesException();
196
		// }
197

  
158 198
		super.apply(featureStoreProviderServices, featureStoreProvider);
159 199
	}
160 200
}
161

  

Also available in: Unified diff