Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsColumnFactory.java @ 3785:a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk
........
r5501 | felix | 2012-09-18 11:49:45 +0200 (Di, 18 Sep 2012) | 1 line
fix issue865 - missing showarea theme prop.
........
r5502 | clins | 2012-09-18 12:18:30 +0200 (Di, 18 Sep 2012) | 1 line
Add robustness checks to prevent NPEs
........
r5504 | felix | 2012-09-18 14:03:15 +0200 (Di, 18 Sep 2012) | 1 line
i18n for area label (fix issue487).
........
r5505 | clins | 2012-09-18 16:19:59 +0200 (Di, 18 Sep 2012) | 1 line
Update themes to show point descriptions
........
r5506 | rrenkert | 2012-09-18 17:00:30 +0200 (Di, 18 Sep 2012) | 3 lines
Removed incorrect characteristic diameter.
........
r5507 | rrenkert | 2012-09-18 17:03:20 +0200 (Di, 18 Sep 2012) | 3 lines
Fixed some stupid bugs in bed quality data factory and calculation.
........
r5508 | teichmann | 2012-09-18 17:45:49 +0200 (Di, 18 Sep 2012) | 1 line
The usual whitespace and import cleanups.
........
r5511 | teichmann | 2012-09-18 18:24:51 +0200 (Di, 18 Sep 2012) | 1 line
Use generics aware Collections.emptyList().
........
r5512 | teichmann | 2012-09-18 20:36:52 +0200 (Di, 18 Sep 2012) | 1 line
Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
........
r5513 | clins | 2012-09-18 23:38:19 +0200 (Di, 18 Sep 2012) | 1 line
A and B facets of fix analyis are now deactivated by default
........
r5516 | bricks | 2012-09-19 10:45:51 +0200 (Mi, 19 Sep 2012) | 2 lines
Add the gauge station to the GaugeOverviewInfoService xml response
........
r5517 | rrenkert | 2012-09-19 10:50:23 +0200 (Mi, 19 Sep 2012) | 3 lines
Added CSV export to bed quality calculation.
........
r5518 | bricks | 2012-09-19 11:04:04 +0200 (Mi, 19 Sep 2012) | 2 lines
Fix date in changelog entry
........
r5519 | teichmann | 2012-09-19 11:17:14 +0200 (Mi, 19 Sep 2012) | 1 line
Removed trailing whitespace.
........
flys-artifacts/tags/2.9.1@5531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 14:58:31 +0000 |
parents | a441be7f1589 |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import de.intevation.flys.artifacts.model.FixingsOverview.Fixing; import de.intevation.flys.artifacts.cache.CacheFactory; import de.intevation.flys.backend.SessionHolder; import java.util.List; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.hibernate.Session; import org.hibernate.SQLQuery; import org.hibernate.type.StandardBasicTypes; import org.apache.log4j.Logger; public class FixingsColumnFactory { private static Logger log = Logger.getLogger(FixingsColumnFactory.class); public static final String CACHE_NAME = "fixings-columns"; public static final String SQL_COLUMN_WS = "SELECT wcv.position AS km, wcv.w AS w " + "FROM wst_column_values wcv " + "WHERE wst_column_id = :column_id " + "ORDER by wcv.position"; public static final String SQL_COLUMN_QS = "SELECT wqr.q AS q, r.a AS a, r.b AS b " + "FROM wst_column_q_ranges wcqr " + "JOIN wst_q_ranges wqr ON wcqr.wst_q_range_id = wqr.id " + "JOIN ranges r ON wqr.range_id = r.id " + "WHERE wcqr.wst_column_id = :column_id ORDER by r.a"; public static final FixingsColumnFactory INSTANCE = new FixingsColumnFactory(); private FixingsColumnFactory() { } public static FixingsColumnFactory getInstance() { return INSTANCE; } public FixingsColumn getColumnData(Fixing.Column column) { boolean debug = log.isDebugEnabled(); if (debug) { log.debug("FixingsColumnFactory.getColumnData"); } Cache cache = CacheFactory.getCache(CACHE_NAME); if (cache == null) { if (debug) { log.debug("Cache unconfigured."); } return getUncached(column); } Integer cacheKey = Integer.valueOf(column.getId()); Element element = cache.get(cacheKey); if (element != null) { if (debug) { log.debug("Column " + cacheKey + " found in cache."); } return (FixingsColumn)element.getValue(); } else { FixingsColumn result = getUncached(column); if (result != null) { if (debug) { log.debug("Store column " + cacheKey + " into cache."); } cache.put(new Element(cacheKey, result)); } return result; } } protected FixingsColumn getUncached(Fixing.Column column) { Session session = SessionHolder.HOLDER.get(); SQLQuery sqlQuery = session.createSQLQuery(SQL_COLUMN_WS) .addScalar("km", StandardBasicTypes.DOUBLE) .addScalar("w", StandardBasicTypes.DOUBLE); sqlQuery.setInteger("column_id", column.getId()); List<Object []> results = sqlQuery.list(); if (results.isEmpty()) { return null; } double [] kms = new double[results.size()]; double [] ws = new double[kms.length]; for (int i = 0; i < kms.length; ++i) { Object [] row = results.get(i); kms[i] = ((Double)row[0]).doubleValue(); ws [i] = ((Double)row[1]).doubleValue(); } sqlQuery = session.createSQLQuery(SQL_COLUMN_QS) .addScalar("q", StandardBasicTypes.DOUBLE) .addScalar("a", StandardBasicTypes.DOUBLE) .addScalar("b", StandardBasicTypes.DOUBLE); sqlQuery.setInteger("column_id", column.getId()); results = sqlQuery.list(); if (results.isEmpty()) { return null; } QRangeTree qs = new QRangeTree( results, QRangeTree.WITHOUT_COLUMN, 0, results.size()); return new FixingsColumn(kms, ws, qs); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :