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.
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: */
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