diff --git a/src/main/java/no/bioforsk/vips/model/applescabmodel/AppleScabModel.java b/src/main/java/no/bioforsk/vips/model/applescabmodel/AppleScabModel.java index a49df19237fec49ffd07f54f527338ad2eb9b5b3..7ba5f207b38902dc225422af56b98304782d3ca9 100644 --- a/src/main/java/no/bioforsk/vips/model/applescabmodel/AppleScabModel.java +++ b/src/main/java/no/bioforsk/vips/model/applescabmodel/AppleScabModel.java @@ -320,47 +320,18 @@ public class AppleScabModel extends I18nImpl implements Model{ } } + // Basic time series health check WeatherUtil wUtil = new WeatherUtil(); - // Must be of same length, - if(this.TM.size() != this.RR.size() || this.TM.size() != BT.size()) + try { - throw new ConfigValidationException("Unequal length of weather parameter lists. " - + "Temperature list size = " + this.TM.size() - + ", precipitation list size = " + this.RR.size() - + ", leaf wetness list size = " + this.BT.size() - ); + wUtil.isHomogenousTimeSeries(this.TM, this.RR, this.BT); } - - // Must be starting at same time - if( - this.TM.get(0).getTimeMeasured().compareTo(this.RR.get(0).getTimeMeasured()) != 0 - || this.TM.get(0).getTimeMeasured().compareTo(this.BT.get(0).getTimeMeasured()) != 0 - ) + catch(WeatherObservationListException ex) { - throw new ConfigValidationException("Weather parameter lists do not start at same time " - + "Temperature list starts at = " + this.TM.get(0).getTimeMeasured() - + ", precipitation list starts at = " + this.RR.get(0).getTimeMeasured() - + ", leaf wetness list starts at = " + this.BT.get(0).getTimeMeasured() - ); + throw new ConfigValidationException(ex.getMessage()); } - // Must be ending at same time - int lastIndex = this.TM.size() -1; - if( - this.TM.get(lastIndex).getTimeMeasured().compareTo(this.RR.get(lastIndex).getTimeMeasured()) != 0 - || this.TM.get(lastIndex).getTimeMeasured().compareTo(this.BT.get(lastIndex).getTimeMeasured()) != 0 - ) - { - throw new ConfigValidationException("Weather parameter lists do not end at same time " - + "Temperature list ends at = " + this.TM.get(lastIndex).getTimeMeasured() - + ", precipitation list ends at = " + this.RR.get(lastIndex).getTimeMeasured() - + ", leaf wetness list ends at = " + this.BT.get(lastIndex).getTimeMeasured() - ); - } - - - // If all that's OK, chop of all hour values exceeding the last full day // of hourly data this.TM = wUtil.cutTrailingHourlyValues(this.TM, timeZone);