Revision 44376 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/DefaultFeatureTypeDefinitionsManager.java
DefaultFeatureTypeDefinitionsManager.java | ||
---|---|---|
17 | 17 |
import org.gvsig.andami.PluginServices; |
18 | 18 |
import org.gvsig.andami.PluginsLocator; |
19 | 19 |
import org.gvsig.andami.PluginsManager; |
20 |
import org.gvsig.fmap.dal.DataServerExplorer; |
|
21 | 20 |
import org.gvsig.fmap.dal.DataStoreParameters; |
22 | 21 |
import org.gvsig.fmap.dal.complements.RelatedFeatures; |
23 | 22 |
import org.gvsig.fmap.dal.feature.AbstractFeatureTypeDefinitionsManager; |
... | ... | |
27 | 26 |
import org.gvsig.fmap.dal.feature.FeatureTypeDefinitionsManager; |
28 | 27 |
import org.gvsig.tools.ToolsLocator; |
29 | 28 |
import org.gvsig.tools.dataTypes.DataTypes; |
30 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
31 | 29 |
import org.gvsig.tools.dynform.JDynForm; |
32 | 30 |
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_LAYOUTMODE; |
33 | 31 |
import org.gvsig.tools.dynobject.DynClass; |
... | ... | |
44 | 42 |
@SuppressWarnings("UseSpecificCatch") |
45 | 43 |
public class DefaultFeatureTypeDefinitionsManager extends AbstractFeatureTypeDefinitionsManager implements FeatureTypeDefinitionsManager { |
46 | 44 |
|
47 |
private static final Logger logger = LoggerFactory.getLogger(DefaultFeatureTypeDefinitionsManager.class);
|
|
45 |
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultFeatureTypeDefinitionsManager.class);
|
|
48 | 46 |
|
49 | 47 |
private static final String FILE_EXTENSION = "form"; |
50 | 48 |
|
... | ... | |
147 | 145 |
return dynClass; |
148 | 146 |
} |
149 | 147 |
String xml = null; |
148 |
Resource resource = null; |
|
149 |
DynObjectManager dynObjectManager = ToolsLocator.getDynObjectManager(); |
|
150 | 150 |
File definitionFile = getDefinitionFile(key); |
151 |
if (definitionFile == null) { |
|
152 |
DataServerExplorer explorer = null; |
|
153 |
Resource resource = null; |
|
154 |
try { |
|
151 |
try { |
|
152 |
if (definitionFile == null) { |
|
155 | 153 |
ResourcesStorage resourcesStorage = store.getResourcesStorage(); |
156 |
if( resourcesStorage==null ) { |
|
157 |
return this.getDynClass(store, featureType); |
|
158 |
} else { |
|
154 |
if( resourcesStorage!=null ) { |
|
159 | 155 |
resource = resourcesStorage.getResource(FILE_EXTENSION); |
160 | 156 |
if( resource !=null && resource.exists() ) { |
161 | 157 |
xml = IOUtils.toString(resource.asInputStream()); |
162 |
} else { |
|
163 |
DynClass aDynClass = this.getDynClass(store, featureType); |
|
164 |
this.getDynClasses().put(aDynClass.getName(), aDynClass); |
|
165 |
return aDynClass; |
|
166 | 158 |
} |
167 | 159 |
} |
168 |
} catch(Exception ex) { |
|
169 |
// Do nothing, leave xml to null |
|
170 |
} finally { |
|
171 |
IOUtils.closeQuietly(resource); |
|
172 |
DisposeUtils.disposeQuietly(explorer); |
|
173 |
} |
|
174 |
} |
|
175 |
DynObjectManager dynObjectManager = ToolsLocator.getDynObjectManager(); |
|
176 |
try { |
|
177 |
if( xml!=null ) { |
|
160 |
} else { |
|
178 | 161 |
xml = FileUtils.readFileToString(definitionFile); |
179 | 162 |
xml = xml.replaceAll("[$][{]CWD[}]",definitionFile.getParentFile().getAbsolutePath()); |
180 | 163 |
} |
181 |
InputStream is = IOUtils.toInputStream(xml, Charset.forName("UTF-8")); |
|
182 |
Map<String, DynClass> dynClasses = dynObjectManager.importDynClassDefinitions(is, this.getClass().getClassLoader()); |
|
183 |
for (DynClass aDynClass : dynClasses.values()) { |
|
184 |
this.getDynClasses().put(aDynClass.getName(), aDynClass); |
|
164 |
if( !StringUtils.isEmpty(xml) ) { |
|
165 |
InputStream is = IOUtils.toInputStream(xml, Charset.forName("UTF-8")); |
|
166 |
Map<String, DynClass> theDynClasses = dynObjectManager.importDynClassDefinitions(is, this.getClass().getClassLoader()); |
|
167 |
for (DynClass aDynClass : theDynClasses.values()) { |
|
168 |
this.getDynClasses().put(aDynClass.getName(), aDynClass); |
|
169 |
} |
|
185 | 170 |
} |
186 |
} catch (Exception ex) { |
|
187 |
logger.warn("Can't parse xml definition.", ex); |
|
171 |
dynClass = this.getDynClasses().get(key); |
|
172 |
if (dynClass != null) { |
|
173 |
return dynClass; |
|
174 |
} |
|
175 |
return this.getDynClass(store, featureType); |
|
176 |
|
|
177 |
} catch(Exception ex) { |
|
178 |
LOGGER.warn("Can't retrieve definition of '"+key+"'.", ex); |
|
188 | 179 |
return null; |
180 |
} finally { |
|
181 |
IOUtils.closeQuietly(resource); |
|
189 | 182 |
} |
190 |
|
|
191 |
dynClass = this.getDynClasses().get(key); |
|
192 |
if (dynClass != null) { |
|
193 |
return dynClass; |
|
194 |
} |
|
195 |
return this.getDynClass(store, featureType); |
|
196 | 183 |
} |
197 | 184 |
|
198 | 185 |
@Override |
... | ... | |
261 | 248 |
} |
262 | 249 |
|
263 | 250 |
} catch (Exception ex) { |
264 |
logger.warn("Can't parse xml definition.", ex);
|
|
251 |
LOGGER.warn("Can't parse xml definition.", ex);
|
|
265 | 252 |
} |
266 | 253 |
} |
267 | 254 |
|
Also available in: Unified diff