# HG changeset patch # User Felix Wolfsteller # Date 1380524930 -7200 # Node ID f707ee04ac8075777383e110c7f0fdd1f62a6478 # Parent 1750b4448c0ceade32ee97ee3e65ac377f37e566 issue1435: Prepare SedimentDensityFactory to delive data by sedimentdesity.id and .year. diff -r 1750b4448c0c -r f707ee04ac80 artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java Mon Sep 30 07:40:19 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensityFactory.java Mon Sep 30 09:08:50 2013 +0200 @@ -39,6 +39,15 @@ " JOIN sediment_density_values sdv ON sd.id = sdv.sediment_density_id" + " WHERE r.name = :name"; + /** Query to get sediment density values and kms by id and year. */ + private static final String SQL_SELECT_DENSITY_BY_ID_YEAR = + "SELECT sdv.station AS km, " + + " sdv.density AS density," + + " sdv.year AS year " + + " FROM sediment_density sd" + + " JOIN sediment_density_values sdv ON sd.id = sdv.sediment_density_id" + + " WHERE sdv.year = :year AND sd.id = :id"; + private SedimentDensityFactory() {} public static SedimentDensity getSedimentDensity( @@ -96,5 +105,29 @@ density.cleanUp(); return density; } + + public static SedimentDensity getSedimentDensityUncached( + int id, + int year + ) { + log.debug("getSedimentDensityUncached id/year"); + Session session = SessionHolder.HOLDER.get(); + SQLQuery sqlQuery = session.createSQLQuery(SQL_SELECT_DENSITY) + .addScalar("km", StandardBasicTypes.DOUBLE) + .addScalar("density", StandardBasicTypes.DOUBLE) + .addScalar("year", StandardBasicTypes.INTEGER); + sqlQuery.setInteger("id", id); + sqlQuery.setInteger("year", year); + List results = sqlQuery.list(); + SedimentDensity density = new SedimentDensity(); + for (Object[] row : results) { + if (row[0] != null && row[1] != null && row[2] != null) { + density.addDensity((Double)row[0], (Double)row[1], (Integer)row[2]); + } + } + + density.cleanUp(); + return density; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :