Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixColumnLoader.java @ 9646:0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
author | Gernot Belger <g.belger@bjoernsen.de> |
---|---|
date | Mon, 02 Dec 2019 17:56:15 +0100 |
parents | 9744ce3c3853 |
children |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.model.fixings; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.dive4elements.river.artifacts.model.fixings.FixingsOverview.FixColumn; import org.dive4elements.river.utils.BatchLoader; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.type.StandardBasicTypes; final class FixColumnLoader extends BatchLoader<List<FixColumn>> { private static final String SQL_FIXING_COLUMNS_BATCH = "SELECT " + "wc.wst_id AS wst_id," + "wc.id AS wst_column_id," + "ti.start_time AS start_time," + "wc.name AS name " + "FROM wst_columns wc " + "JOIN time_intervals ti ON wc.time_interval_id = ti.id " + "WHERE " + "wc.wst_id IN ($IDS) " + "ORDER BY wc.wst_id, position"; public FixColumnLoader(final List<Integer> columns, final Session session) { super(columns, session, SQL_FIXING_COLUMNS_BATCH); } @Override protected void fill(final SQLQuery query) { query.addScalar("wst_id", StandardBasicTypes.INTEGER).addScalar("wst_column_id", StandardBasicTypes.INTEGER) .addScalar("start_time", StandardBasicTypes.TIMESTAMP).addScalar("name", StandardBasicTypes.STRING); int lastId = Integer.MIN_VALUE; List<FixColumn> cols = new ArrayList<>(); final List<Object[]> columns = query.list(); for (final Object[] c : columns) { final int wid = (Integer) c[0]; if (wid != lastId && !cols.isEmpty()) { cache(lastId, cols); cols = new ArrayList<>(); } cols.add(new FixColumn((Integer) c[1], (Date) c[2], (String) c[3])); lastId = wid; } if (!cols.isEmpty()) { cache(lastId, cols); } } }