Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java @ 7099:24f153ad1f40 generator-refactoring
Use pre-converted diagram attributes now.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Mon, 23 Sep 2013 12:28:22 +0200 |
parents | a2abd87c0d3b |
children | 8ab618dda850 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java Mon Sep 23 12:21:59 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java Mon Sep 23 12:28:22 2013 +0200 @@ -8,26 +8,8 @@ package org.dive4elements.river.artifacts.context; -import org.dive4elements.artifactdatabase.state.State; -import org.dive4elements.artifactdatabase.state.StateEngine; -import org.dive4elements.artifactdatabase.transition.Transition; -import org.dive4elements.artifactdatabase.transition.TransitionEngine; -import org.dive4elements.artifacts.ArtifactContextFactory; -import org.dive4elements.artifacts.GlobalContext; -import org.dive4elements.artifacts.common.utils.Config; -import org.dive4elements.artifacts.common.utils.XMLUtils; -import org.dive4elements.river.artifacts.model.Module; -import org.dive4elements.river.artifacts.model.ZoomScale; -import org.dive4elements.river.artifacts.states.StateFactory; -import org.dive4elements.river.artifacts.transitions.TransitionFactory; -import org.dive4elements.river.themes.Theme; -import org.dive4elements.river.themes.ThemeFactory; -import org.dive4elements.river.themes.ThemeGroup; -import org.dive4elements.river.themes.ThemeMapping; -import org.dive4elements.river.utils.Pair; -import org.dive4elements.river.exports.OutGenerator; +import java.io.File; -import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -36,12 +18,41 @@ import javax.xml.xpath.XPathConstants; import org.apache.log4j.Logger; + +import org.dive4elements.artifactdatabase.state.State; +import org.dive4elements.artifactdatabase.state.StateEngine; + +import org.dive4elements.artifactdatabase.transition.Transition; +import org.dive4elements.artifactdatabase.transition.TransitionEngine; + +import org.dive4elements.artifacts.ArtifactContextFactory; +import org.dive4elements.artifacts.GlobalContext; + +import org.dive4elements.artifacts.common.utils.Config; +import org.dive4elements.artifacts.common.utils.ElementConverter; +import org.dive4elements.artifacts.common.utils.XMLUtils; + +import org.dive4elements.river.artifacts.model.Module; +import org.dive4elements.river.artifacts.model.ZoomScale; + +import org.dive4elements.river.artifacts.states.StateFactory; + +import org.dive4elements.river.artifacts.transitions.TransitionFactory; + +import org.dive4elements.river.exports.OutGenerator; + +import org.dive4elements.river.themes.Theme; +import org.dive4elements.river.themes.ThemeFactory; +import org.dive4elements.river.themes.ThemeGroup; +import org.dive4elements.river.themes.ThemeMapping; + +import org.dive4elements.river.utils.Pair; + import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; - /** * The ArtifactContextFactory is used to initialize basic components and put * them into the global context of the application. @@ -324,8 +335,8 @@ logger.info("Found " + num + " configured output generators."); - Map<String, Pair<Class<OutGenerator>, Element>> generators = - new HashMap<String, Pair<Class<OutGenerator>, Element>>(); + Map<String, Pair<Class<OutGenerator>, Object>> generators = + new HashMap<String, Pair<Class<OutGenerator>, Object>>(); int idx = 0; @@ -334,6 +345,7 @@ String names = item.getAttribute("names").trim(); String clazz = item.getAttribute("class").trim(); + String converter = item.getAttribute("converter").trim(); if (names.isEmpty() || clazz.isEmpty()) { continue; @@ -345,12 +357,32 @@ generatorClass = (Class<OutGenerator>)Class.forName(clazz); } catch (ClassNotFoundException cnfe) { - logger.warn(cnfe, cnfe); + logger.error(cnfe, cnfe); continue; } - Pair<Class<OutGenerator>, Element> pair = - new Pair<Class<OutGenerator>, Element>(generatorClass, item); + Object cfg = null; + + if (!converter.isEmpty()) { + try { + ElementConverter ec = + (ElementConverter)Class.forName(converter) + .newInstance(); + cfg = ec.convert(item); + } + catch (ClassNotFoundException cnfe) { + logger.error(cnfe, cnfe); + } + catch (InstantiationException ie) { + logger.error(ie); + } + catch (IllegalAccessException iae) { + logger.error(iae); + } + } + + Pair<Class<OutGenerator>, Object> pair = + new Pair<Class<OutGenerator>, Object>(generatorClass, cfg); for (String key: names.split("[\\s,]")) { if (!(key = key.trim()).isEmpty()) {