ingo@330: package de.intevation.flys.artifacts.model; ingo@330: ingo@385: import java.math.BigDecimal; ingo@330: import java.util.List; ingo@330: ingo@385: import org.apache.log4j.Logger; ingo@385: ingo@330: import org.hibernate.Session; ingo@330: import org.hibernate.Query; ingo@330: ingo@330: import de.intevation.flys.backend.SessionHolder; ingo@330: ingo@330: import de.intevation.flys.model.Gauge; ingo@330: import de.intevation.flys.model.MainValue; ingo@330: ingo@330: ingo@330: /** ingo@330: * @author Ingo Weinzierl ingo@330: */ ingo@330: public class MainValuesFactory { ingo@330: ingo@385: private static Logger logger = Logger.getLogger(MainValuesFactory.class); ingo@385: ingo@330: public static List getMainValues(Gauge gauge) { ingo@330: Session session = SessionHolder.HOLDER.get(); ingo@330: ingo@330: Query query = session.createQuery( ingo@330: "from MainValue where gauge=:gauge"); ingo@330: query.setParameter("gauge", gauge); ingo@330: ingo@330: return query.list(); ingo@330: } ingo@385: ingo@385: ingo@385: /** ingo@385: * Returns an array of [days, qs] necessary to create duration curves. ingo@385: * ingo@385: * @param gauge The selected gauge. bjoern@3646: * @deprecated ingo@385: * ingo@385: * @return a 2dim array of [days, qs] where days is an int[] and qs is ingo@385: * an double[]. ingo@385: */ bjoern@3646: @Deprecated ingo@385: public static Object[] getDurationCurveData(Gauge gauge) { ingo@385: Session session = SessionHolder.HOLDER.get(); ingo@385: ingo@385: Query query = session.createQuery( ingo@385: "select cast(nmv.name as integer) as days, mv.value as q " + ingo@385: "from MainValue as mv " + ingo@385: "join mv.mainValue as nmv " + ingo@385: "join nmv.type mvt " + ingo@385: "where mvt.name = 'D' and mv.gauge.id = :gauge_id " + ingo@385: "order by days"); ingo@385: ingo@385: query.setParameter("gauge_id", gauge.getId()); ingo@385: ingo@385: List results = query.list(); ingo@385: int[] days = new int[results.size()]; ingo@385: double[] qs = new double[results.size()]; ingo@385: ingo@385: int idx = 0; ingo@385: ingo@385: for (Object obj: results) { ingo@385: Object[] arr = (Object[]) obj; ingo@385: ingo@385: try { ingo@385: int day = ((Integer) arr[0]).intValue(); ingo@385: double q = ((BigDecimal) arr[1]).doubleValue(); ingo@385: ingo@385: days[idx] = day; ingo@385: qs[idx++] = q; ingo@385: } ingo@385: catch (NumberFormatException nfe) { ingo@385: logger.warn(nfe, nfe); ingo@385: } ingo@385: } ingo@385: ingo@385: return new Object[] { days, qs }; ingo@385: } ingo@330: } ingo@330: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :