ingo@1072: package de.intevation.gnv.state.profile.vertical; ingo@1072: ingo@1072: import de.intevation.artifacts.CallContext; ingo@1072: ingo@1072: import de.intevation.gnv.artifacts.cache.CacheFactory; ingo@1072: ingo@1072: import de.intevation.gnv.geobackend.base.Result; ingo@1072: ingo@1072: import de.intevation.gnv.utils.VectorDataProcessor; ingo@1072: ingo@1072: import java.util.Collection; ingo@1072: ingo@1072: import net.sf.ehcache.Cache; ingo@1072: ingo@1072: import org.apache.log4j.Logger; ingo@1072: ingo@1072: ingo@1072: /** ingo@1072: * @author Ingo Weinzierl ingo@1072: */ ingo@1072: public class VerticalProfileMeshVectorOutputState ingo@1072: extends VerticalProfileVectorOutputState ingo@1072: { ingo@1072: public static final String[] RESULT_COLUMNS = { ingo@1072: "YORDINATE", "XORDINATE", "KPOSITION", ingo@1072: "GROUP1", "GROUP2", "GROUP3", ingo@1072: "DATAID", "FEATUREID", "MESHID", ingo@1072: "SERIES" ingo@1072: }; ingo@1072: ingo@1072: private static Logger logger = ingo@1072: Logger.getLogger(VerticalProfileMeshVectorOutputState.class); ingo@1072: ingo@1072: ingo@1072: @Override ingo@1072: protected Object getChartResult(String uuid, CallContext callContext) { ingo@1072: logger.debug("Fetch chart data for vertical profile with vector data."); ingo@1072: CacheFactory factory = CacheFactory.getInstance(); ingo@1072: ingo@1072: if (factory.isInitialized()) { ingo@1072: // we use a cache ingo@1072: logger.info("Using cache."); ingo@1072: Cache cache = factory.getCache(); ingo@1072: String key = "chart_" + getHash(); ingo@1072: ingo@1072: net.sf.ehcache.Element value = cache.get(key); ingo@1072: if (value != null) { ingo@1072: logger.debug("Found element in cache."); ingo@1072: return value.getObjectValue(); ingo@1072: } ingo@1072: else { ingo@1072: logger.debug("Element not in cache, we ask the database"); ingo@1072: Collection res = (Collection)getData(queryID); ingo@1072: logger.debug("Got " + res.size() + " elements from db."); ingo@1072: ingo@1072: res = VectorDataProcessor.process(res, RESULT_COLUMNS); ingo@1072: cache.put(new net.sf.ehcache.Element(key, res)); ingo@1072: ingo@1072: return res; ingo@1072: } ingo@1072: } ingo@1072: else { ingo@1072: // we don't use a cache, so we have to query the database every ingo@1072: // single time ingo@1072: logger.info("Not using a cache."); ingo@1072: return VectorDataProcessor.process( ingo@1072: getData(queryID), RESULT_COLUMNS); ingo@1072: } ingo@1072: } ingo@1072: } ingo@1072: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :