Skip to content
Snippets Groups Projects
Commit 1afc2ae9 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Bugfix: Handling situation when air temp data lasts longer than soil temp data

parent 76811814
No related branches found
No related tags found
No related merge requests found
...@@ -92,7 +92,7 @@ public class DeliaRadicumModel extends I18nImpl implements Model{ ...@@ -92,7 +92,7 @@ public class DeliaRadicumModel extends I18nImpl implements Model{
Date currentDate = this.dataMatrix.getFirstDateWithValues(); Date currentDate = this.dataMatrix.getFirstDateWithValues();
Date lastDate = this.dataMatrix.getLastDateWithValues(); Date lastDate = this.dataMatrix.getLastDateWithValues();
Calendar cal = Calendar.getInstance(this.timeZone); Calendar cal = Calendar.getInstance(this.timeZone);
//System.out.println(this.dataMatrix.toString());
DecimalFormat dFormat = new DecimalFormat("###.##"); DecimalFormat dFormat = new DecimalFormat("###.##");
while(currentDate.compareTo(lastDate) < 0) while(currentDate.compareTo(lastDate) < 0)
{ {
...@@ -110,10 +110,13 @@ public class DeliaRadicumModel extends I18nImpl implements Model{ ...@@ -110,10 +110,13 @@ public class DeliaRadicumModel extends I18nImpl implements Model{
if(this.dataMatrix.getFirstDateWithParameterValue(DeliaRadicumModelDataMatrix.TJM10D) != null) if(this.dataMatrix.getFirstDateWithParameterValue(DeliaRadicumModelDataMatrix.TJM10D) != null)
{ {
soilTempSum = this.dataMatrix.getParamDoubleValueForDate(currentDate, DeliaRadicumModelDataMatrix.TJM10DD4C); soilTempSum = this.dataMatrix.getParamDoubleValueForDate(currentDate, DeliaRadicumModelDataMatrix.TJM10DD4C);
result.setValue(CommonNamespaces.NS_WEATHER, if(soilTempSum != null)
DeliaRadicumModelDataMatrix.TJM10DD4C, {
dFormat.format(soilTempSum) result.setValue(CommonNamespaces.NS_WEATHER,
); DeliaRadicumModelDataMatrix.TJM10DD4C,
dFormat.format(soilTempSum)
);
}
} }
...@@ -278,6 +281,7 @@ public class DeliaRadicumModel extends I18nImpl implements Model{ ...@@ -278,6 +281,7 @@ public class DeliaRadicumModel extends I18nImpl implements Model{
// Setting timezone // Setting timezone
this.timeZone = TimeZone.getTimeZone((String) config.getConfigParameter("timeZone")); this.timeZone = TimeZone.getTimeZone((String) config.getConfigParameter("timeZone"));
//System.out.println("TimeZone=" + this.timeZone);
// Importing weather data, creating collections // Importing weather data, creating collections
// Can accept both hourly and daily data // Can accept both hourly and daily data
...@@ -357,9 +361,8 @@ public class DeliaRadicumModel extends I18nImpl implements Model{ ...@@ -357,9 +361,8 @@ public class DeliaRadicumModel extends I18nImpl implements Model{
* @param outputParameterName the result * @param outputParameterName the result
*/ */
private void calculateTemperatureSum(String inputParameterName, String outputParameterName) throws ModelExcecutionException { private void calculateTemperatureSum(String inputParameterName, String outputParameterName) throws ModelExcecutionException {
//System.out.println("input=" + inputParameterName + ", ouput=" +outputParameterName);
Date today = this.dataMatrix.getFirstDateWithParameterValue(inputParameterName); Date today = this.dataMatrix.getFirstDateWithParameterValue(inputParameterName);
Date lastDate = this.dataMatrix.getLastDateWithValues(); Date lastDate = this.dataMatrix.getLastDateWithParameterValue(inputParameterName);
Calendar cal = Calendar.getInstance(this.timeZone); Calendar cal = Calendar.getInstance(this.timeZone);
Double sum = 0.0; Double sum = 0.0;
......
...@@ -101,7 +101,7 @@ public class DeliaRadicumModelTest { ...@@ -101,7 +101,7 @@ public class DeliaRadicumModelTest {
assertEquals(Result.WARNING_STATUS_HIGH_RISK, result.getWarningStatus()); assertEquals(Result.WARNING_STATUS_HIGH_RISK, result.getWarningStatus());
} }
} }
// Testing withour TJM10 // Testing without TJM10
config = this.getConfiguration("/weatherdata_air.json"); config = this.getConfiguration("/weatherdata_air.json");
instance.setConfiguration(config); instance.setConfiguration(config);
results = instance.getResult(); results = instance.getResult();
...@@ -156,15 +156,20 @@ public class DeliaRadicumModelTest { ...@@ -156,15 +156,20 @@ public class DeliaRadicumModelTest {
assertEquals(Result.WARNING_STATUS_HIGH_RISK, result.getWarningStatus()); assertEquals(Result.WARNING_STATUS_HIGH_RISK, result.getWarningStatus());
} }
} }
// Testing with data in DST transition
/**/
} }
@Test @Test
public void testWithSwedishData() throws Exception{ public void testWithSwedishData() throws Exception{
System.out.println("testWithSwedishData");
DeliaRadicumModel instance = new DeliaRadicumModel(); DeliaRadicumModel instance = new DeliaRadicumModel();
ModelConfiguration config = this.getConfiguration("/weatherdata_fjalkinge_sweden.json"); ModelConfiguration config = this.getConfiguration("/weatherdata_fjalkinge_sweden.json");
config.setConfigParameter("timeZone", "Europe/Stockholm");
instance.setConfiguration(config); instance.setConfiguration(config);
List<Result> results = instance.getResult(); List<Result> results = instance.getResult();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Oslo")); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Stockholm"));
cal.set(2015, Calendar.MAY, 15, 0, 0, 0); cal.set(2015, Calendar.MAY, 15, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.MILLISECOND, 0);
Date lastGreen = cal.getTime(); Date lastGreen = cal.getTime();
...@@ -173,7 +178,37 @@ public class DeliaRadicumModelTest { ...@@ -173,7 +178,37 @@ public class DeliaRadicumModelTest {
for(Result result:results) for(Result result:results)
{ {
System.out.println(result.getResultValidTime() + ": " + result.getWarningStatus()); //System.out.println(result.getResultValidTime() + ": " + result.getWarningStatus());
if(result.getResultValidTime().compareTo(lastGreen) <= 0)
{
assertEquals(Result.WARNING_STATUS_NO_RISK, result.getWarningStatus());
}
else if(result.getResultValidTime().compareTo(lastYellow) <= 0)
{
assertEquals(Result.WARNING_STATUS_MINOR_RISK, result.getWarningStatus());
}
else
{
assertEquals(Result.WARNING_STATUS_HIGH_RISK, result.getWarningStatus());
}
}
// Testing with DST transition data
System.out.println("testDSTSwedishdata");
config = this.getConfiguration("/alnarp_dst_transition.json");
config.setConfigParameter("timeZone", "Europe/Stockholm");
instance.setConfiguration(config);
results = instance.getResult();
cal.set(2015, Calendar.MAY, 15, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
lastGreen = cal.getTime();
cal.set(2015, Calendar.MAY,18,0,0,0);
lastYellow = cal.getTime();
for(Result result:results)
{
//System.out.println(result.getResultValidTime() + ": " + result.getWarningStatus());
if(result.getResultValidTime().compareTo(lastGreen) <= 0) if(result.getResultValidTime().compareTo(lastGreen) <= 0)
{ {
assertEquals(Result.WARNING_STATUS_NO_RISK, result.getWarningStatus()); assertEquals(Result.WARNING_STATUS_NO_RISK, result.getWarningStatus());
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment