Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FastCrossSectionChunk.java @ 3318:dbe2f85bf160
merged flys-artifacts/2.8
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:35 +0200 |
parents | 5642a83420f2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FastCrossSectionChunk.java Fri Sep 28 12:14:35 2012 +0200 @@ -0,0 +1,83 @@ +package de.intevation.flys.artifacts.model; + +import java.util.List; +import java.util.Collections; + +import java.io.Serializable; + +import de.intevation.flys.model.CrossSection; + +import de.intevation.flys.model.FastCrossSectionLine; + +import org.apache.log4j.Logger; + +public class FastCrossSectionChunk +implements Serializable +{ + private static Logger log = Logger.getLogger(FastCrossSectionChunk.class); + + public static final String PREFIX = "FCSC:"; + public static final double KM_RANGE = 1.0; + + protected double startKm; + protected int crossSectionId; + + protected List<FastCrossSectionLine> crossSectionLines; + + public FastCrossSectionChunk() { + } + + public FastCrossSectionChunk(CrossSection cs, double km) { + + crossSectionId = cs.getId(); + startKm = Math.floor(km); + double stopKm = startKm + KM_RANGE; + + long startTime = System.currentTimeMillis(); + + crossSectionLines = cs.getFastLines(startKm, stopKm); + + long stopTime = System.currentTimeMillis(); + + if (log.isDebugEnabled()) { + log.debug("Fetching cross section lines took " + + (float)(stopTime-startTime)/1000f + " secs."); + } + } + + public FastCrossSectionLine getCrossSectionLine(double km) { + FastCrossSectionLine key = new FastCrossSectionLine(km); + int pos = Collections.binarySearch( + crossSectionLines, key, FastCrossSectionLine.KM_CMP); + return pos < 0 ? null : crossSectionLines.get(pos); + } + + public static String createHashKey(CrossSection cs, double km) { + return PREFIX + cs.getId() + ":" + (int)Math.floor(km); + } + + public String getHashKey() { + return PREFIX + crossSectionId + ":" + (int)Math.floor(startKm); + } + + public double getStartKm() { + return startKm; + } + + public void setStartKm(double startKm) { + this.startKm = startKm; + } + + public double getStopKm() { + return startKm + KM_RANGE; + } + + public int getCrossSectionId() { + return crossSectionId; + } + + public void setCrossSectionId(int crossSectionId) { + this.crossSectionId = crossSectionId; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :