Mercurial > dive4elements > river
view flys-aft/src/main/java/de/intevation/aft/DIPSGauge.java @ 4082:d13011e53022
Make DIPS check more verbose
flys-aft/trunk@3496 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 20 Dec 2011 14:36:36 +0000 |
parents | fd6d0bc84117 |
children | 067341e86375 |
line wrap: on
line source
package de.intevation.aft; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import java.util.ArrayList; import java.util.List; import java.util.Date; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.regex.Pattern; import java.util.regex.Matcher; import org.apache.log4j.Logger; public class DIPSGauge { private static Logger log = Logger.getLogger(DIPSGauge.class); public static final Pattern DATE_PATTERN = Pattern.compile( "(\\d{4})-(\\d{2})-(\\d{2})\\s+(\\d{2}):(\\d{2}):(\\d{2})"); public static final Comparator<Datum> DATE_CMP = new Comparator<Datum>() { public int compare(Datum a, Datum b) { return a.date.compareTo(b.date); } }; public static class Datum { protected double value; protected Date date; public Datum() { } public Datum(Element element) { value = Double.parseDouble(element.getAttribute("WERT")); String dateString = element.getAttribute("GUELTIGAB"); if (dateString.length() == 0) { throw new IllegalArgumentException("missing GUELTIGAB attribute"); } Matcher m = DATE_PATTERN.matcher(dateString); if (!m.matches()) { throw new IllegalArgumentException("GUELTIGAB does not match"); } int year = Integer.parseInt(m.group(1)); int month = Integer.parseInt(m.group(2)); int day = Integer.parseInt(m.group(3)); int hours = Integer.parseInt(m.group(4)); int mins = Integer.parseInt(m.group(5)); int secs = Integer.parseInt(m.group(6)); Calendar cal = Calendar.getInstance(); cal.set(year, month, day, hours, mins, secs); date = cal.getTime(); } } // class datum protected double aeo; protected String name; protected List<Datum> datums; public DIPSGauge() { } public DIPSGauge(Element element) { name = element.getAttribute("NAME"); String aeoString = element.getAttribute("EINZUGSGEBIET_AEO"); if (aeoString.length() == 0) { log.warn("DIPS: Setting AEO of gauge '" + name + "' to zero."); aeoString = "0"; } aeo = Double.parseDouble(aeoString); datums = new ArrayList<Datum>(); NodeList nodes = element.getElementsByTagName("PNP"); for (int i = 0, N = nodes.getLength(); i < N; ++i) { Element e = (Element)nodes.item(i); Datum datum = new Datum(e); datums.add(datum); } Collections.sort(datums, DATE_CMP); } public List<Datum> getDatums() { return datums; } public String getName() { return name; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :