view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/GaugesFactory.java @ 2792:fe987587ebc9

Merged revisions 4539-4540,4543,4545-4546 via svnmerge from file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk ........ r4539 | teichmann | 2012-05-27 20:02:13 +0200 (So, 27 Mai 2012) | 1 line FixA: Added forgotten csv/report facets/generators to conf. ........ r4540 | teichmann | 2012-05-27 20:11:31 +0200 (So, 27 Mai 2012) | 1 line FixA: Fixed class cast bug in report facet. ........ r4543 | teichmann | 2012-05-28 20:35:01 +0200 (Mo, 28 Mai 2012) | 1 line FixA: Added facet to return delta w/t as CSV ........ r4545 | teichmann | 2012-05-28 22:59:27 +0200 (Mo, 28 Mai 2012) | 1 line FixA: Made Delta W/t calculation finally work ........ r4546 | teichmann | 2012-05-28 23:34:24 +0200 (Mo, 28 Mai 2012) | 1 line FixA: corrected fitting (Q->W instead W->Q). ........ flys-artifacts/tags/2.7@4547 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 29 May 2012 04:58:29 +0000
parents 7e19449d7826
children
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import java.util.List;
import java.util.ArrayList;

import de.intevation.flys.backend.SessionHolder;
import de.intevation.flys.model.River;
import de.intevation.flys.model.Gauge;
import de.intevation.flys.model.Range;

import org.hibernate.Session;
import org.hibernate.Query;

public class GaugesFactory
{
    public static List<Gauge> getGauges(River river) {
        return getGauges(river.getName());
    }


    public static Gauge getGauge(String gaugeName) {
        Session session = SessionHolder.HOLDER.get();
        Query query = session.createQuery(
            "from Gauge where name=:name");
        query.setParameter("name", gaugeName);

        List<Gauge> res = query.list();

        return res.isEmpty() ? null : res.get(0);
    }


    public static List<Gauge> getGauges(String river) {
        Session session = SessionHolder.HOLDER.get();
        Query query = session.createQuery(
            "from Gauge where river.name=:name");
        query.setParameter("name", river);
        return query.list();
    }

    public static List<Gauge> filterRanges(
        List<Gauge>     gauges,
        List<double []> ranges
    ) {
        // XXX: Inefficent!
        ArrayList<Range> rs = new ArrayList<Range>();
        for (double [] range: ranges) {
            double a = range[0];
            double b = range[1];
            rs.add(new Range(Math.min(a, b), Math.max(a, b), null));
        }
        return filter(gauges, rs);
    }

    public static List<Gauge> filter(List<Gauge> gauges, List<Range> ranges) {
        // TODO: Make it an HQL filter!
        ArrayList<Gauge> out = new ArrayList<Gauge>();
        for (Gauge gauge: gauges) {
            Range range = gauge.getRange();
            for (Range cmp: ranges) {
                if (range.intersects(cmp)) {
                    out.add(gauge);
                    break;
                }
            }
        }
        return out;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org