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

View differences:

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