[Major] changed XML format of time value of TimedStates to be ISO8601

This commit is contained in:
Robert von Burg 2014-10-04 17:45:33 +02:00
parent c1cdfbb4ea
commit 8f50a159b1
6 changed files with 55 additions and 34 deletions

View File

@ -15,6 +15,7 @@
*/
package li.strolch.model.timedstate;
import java.util.Date;
import java.util.SortedSet;
import li.strolch.model.Tags;
@ -25,6 +26,8 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@ -50,7 +53,10 @@ public class BooleanTimedState extends AbstractStrolchTimedState<BooleanValue> {
NodeList timeValueElems = element.getElementsByTagName(Tags.VALUE);
for (int i = 0; i < timeValueElems.getLength(); i++) {
Element timeValueElem = (Element) timeValueElems.item(i);
Long time = Long.valueOf(timeValueElem.getAttribute(Tags.TIME));
String timeS = timeValueElem.getAttribute(Tags.TIME);
Date date = ISO8601FormatFactory.getInstance().parseDate(timeS);
long time = date.getTime();
Boolean value = Boolean.valueOf(timeValueElem.getAttribute(Tags.VALUE));
BooleanValue booleanValue = new BooleanValue(value);
this.state.getTimeEvolution().setValueAt(time, booleanValue);
@ -67,7 +73,7 @@ public class BooleanTimedState extends AbstractStrolchTimedState<BooleanValue> {
Long time = timeValue.getTime();
BooleanValue value = timeValue.getValue();
Element valueElem = doc.createElement(Tags.VALUE);
valueElem.setAttribute(Tags.TIME, time.toString());
valueElem.setAttribute(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
valueElem.setAttribute(Tags.VALUE, value.getValue().toString());
stateElement.appendChild(valueElem);
}

View File

@ -15,6 +15,7 @@
*/
package li.strolch.model.timedstate;
import java.util.Date;
import java.util.SortedSet;
import li.strolch.model.Tags;
@ -25,6 +26,8 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@ -50,7 +53,10 @@ public class FloatTimedState extends AbstractStrolchTimedState<FloatValue> {
NodeList timeValueElems = element.getElementsByTagName(Tags.VALUE);
for (int i = 0; i < timeValueElems.getLength(); i++) {
Element timeValueElem = (Element) timeValueElems.item(i);
Long time = Long.valueOf(timeValueElem.getAttribute(Tags.TIME));
String timeS = timeValueElem.getAttribute(Tags.TIME);
Date date = ISO8601FormatFactory.getInstance().parseDate(timeS);
long time = date.getTime();
Double value = Double.valueOf(timeValueElem.getAttribute(Tags.VALUE));
FloatValue floatValue = new FloatValue(value);
this.state.getTimeEvolution().setValueAt(time, floatValue);
@ -67,7 +73,7 @@ public class FloatTimedState extends AbstractStrolchTimedState<FloatValue> {
Long time = timeValue.getTime();
FloatValue value = timeValue.getValue();
Element valueElem = doc.createElement(Tags.VALUE);
valueElem.setAttribute(Tags.TIME, time.toString());
valueElem.setAttribute(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
valueElem.setAttribute(Tags.VALUE, value.getValue().toString());
stateElement.appendChild(valueElem);
}

View File

@ -15,6 +15,7 @@
*/
package li.strolch.model.timedstate;
import java.util.Date;
import java.util.SortedSet;
import li.strolch.model.Tags;
@ -25,6 +26,8 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@ -50,7 +53,10 @@ public class IntegerTimedState extends AbstractStrolchTimedState<IntegerValue> {
NodeList timeValueElems = element.getElementsByTagName(Tags.VALUE);
for (int i = 0; i < timeValueElems.getLength(); i++) {
Element timeValueElem = (Element) timeValueElems.item(i);
Long time = Long.valueOf(timeValueElem.getAttribute(Tags.TIME));
String timeS = timeValueElem.getAttribute(Tags.TIME);
Date date = ISO8601FormatFactory.getInstance().parseDate(timeS);
long time = date.getTime();
Integer value = Integer.valueOf(timeValueElem.getAttribute(Tags.VALUE));
IntegerValue integerValue = new IntegerValue(value);
this.state.getTimeEvolution().setValueAt(time, integerValue);
@ -67,7 +73,7 @@ public class IntegerTimedState extends AbstractStrolchTimedState<IntegerValue> {
Long time = timeValue.getTime();
IntegerValue value = timeValue.getValue();
Element valueElem = doc.createElement(Tags.VALUE);
valueElem.setAttribute(Tags.TIME, time.toString());
valueElem.setAttribute(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
valueElem.setAttribute(Tags.VALUE, value.getValue().toString());
stateElement.appendChild(valueElem);
}

View File

@ -15,6 +15,7 @@
*/
package li.strolch.model.timedstate;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@ -29,6 +30,8 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import ch.eitchnet.utils.iso8601.ISO8601FormatFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@ -54,7 +57,9 @@ public class StringSetTimedState extends AbstractStrolchTimedState<StringSetValu
NodeList timeValueElems = element.getElementsByTagName(Tags.VALUE);
for (int i = 0; i < timeValueElems.getLength(); i++) {
Element timeValueElem = (Element) timeValueElems.item(i);
Long time = Long.valueOf(timeValueElem.getAttribute(Tags.TIME));
String timeS = timeValueElem.getAttribute(Tags.TIME);
Date date = ISO8601FormatFactory.getInstance().parseDate(timeS);
long time = date.getTime();
String valueAsString = timeValueElem.getAttribute(Tags.VALUE);
Set<AString> value = new HashSet<>();
@ -90,7 +95,7 @@ public class StringSetTimedState extends AbstractStrolchTimedState<StringSetValu
String valueAsString = sb.toString();
Element valueElem = doc.createElement(Tags.VALUE);
valueElem.setAttribute(Tags.TIME, time.toString());
valueElem.setAttribute(Tags.TIME, ISO8601FormatFactory.getInstance().formatDate(time));
valueElem.setAttribute(Tags.VALUE, valueAsString);
stateElement.appendChild(valueElem);
}

View File

@ -213,19 +213,18 @@ public class XmlModelSaxReader extends DefaultHandler {
case Tags.VALUE:
String valueTime = attributes.getValue(Tags.TIME);
Date date = ISO8601FormatFactory.getInstance().parseDate(valueTime);
long time = date.getTime();
String valueValue = attributes.getValue(Tags.VALUE);
switch (this.stateType) {
case FloatTimedState.TYPE:
((FloatTimedState) this.state).getTimeEvolution().setValueAt(Long.valueOf(valueTime),
new FloatValue(valueValue));
((FloatTimedState) this.state).getTimeEvolution().setValueAt(time, new FloatValue(valueValue));
break;
case IntegerTimedState.TYPE:
((IntegerTimedState) this.state).getTimeEvolution().setValueAt(Long.valueOf(valueTime),
new IntegerValue(valueValue));
((IntegerTimedState) this.state).getTimeEvolution().setValueAt(time, new IntegerValue(valueValue));
break;
case BooleanTimedState.TYPE:
((BooleanTimedState) this.state).getTimeEvolution().setValueAt(Long.valueOf(valueTime),
new BooleanValue(valueValue));
((BooleanTimedState) this.state).getTimeEvolution().setValueAt(time, new BooleanValue(valueValue));
break;
case StringSetTimedState.TYPE:
@ -236,8 +235,7 @@ public class XmlModelSaxReader extends DefaultHandler {
}
StringSetValue stringSetValue = new StringSetValue(value);
((StringSetTimedState) this.state).getTimeEvolution().setValueAt(Long.valueOf(valueTime),
stringSetValue);
((StringSetTimedState) this.state).getTimeEvolution().setValueAt(time, stringSetValue);
break;
default:
break;

View File

@ -15,30 +15,30 @@
<Parameter Id="@param1" Name="Boolean Param" Type="Boolean" Value="true" />
</ParameterBag>
<TimedState Id="@booleanState" Name="Boolean State" Type="BooleanState">
<Value Time="0" Value="false" />
<Value Time="1" Value="true" />
<Value Time="2" Value="false" />
<Value Time="1970-01-01T00:00:00.000+01:00" Value="false" />
<Value Time="1970-01-01T00:01:00.000+01:00" Value="true" />
<Value Time="1970-01-01T00:02:00.000+01:00" Value="false" />
</TimedState>
<TimedState Id="@integerState" Name="Integer State" Type="IntegerState">
<Value Time="0" Value="1" />
<Value Time="1" Value="2" />
<Value Time="2" Value="3" />
<Value Time="3" Value="2" />
<Value Time="4" Value="1" />
<Value Time="5" Value="0" />
<Value Time="1970-01-01T00:00:00.000+01:00" Value="1" />
<Value Time="1970-01-01T00:01:00.000+01:00" Value="2" />
<Value Time="1970-01-01T00:02:00.000+01:00" Value="3" />
<Value Time="1970-01-01T00:03:00.000+01:00" Value="2" />
<Value Time="1970-01-01T00:04:00.000+01:00" Value="1" />
<Value Time="1970-01-01T00:05:00.000+01:00" Value="0" />
</TimedState>
<TimedState Id="@floatState" Name="Float State" Type="FloatState">
<Value Time="0" Value="1.1" />
<Value Time="1" Value="2.2" />
<Value Time="2" Value="3.3" />
<Value Time="3" Value="2.2" />
<Value Time="4" Value="1.1" />
<Value Time="5" Value="0.0" />
<Value Time="1970-01-01T00:00:00.000+01:00" Value="1.1" />
<Value Time="1970-01-01T00:01:00.000+01:00" Value="2.2" />
<Value Time="1970-01-01T00:02:00.000+01:00" Value="3.3" />
<Value Time="1970-01-01T00:03:00.000+01:00" Value="2.2" />
<Value Time="1970-01-01T00:04:00.000+01:00" Value="1.1" />
<Value Time="1970-01-01T00:05:00.000+01:00" Value="0.0" />
</TimedState>
<TimedState Id="@stringSetState" Name="StringSet State" Type="StringSetState">
<Value Time="0" Value="foo" />
<Value Time="1" Value="foo, bar" />
<Value Time="2" Value="bar" />
<Value Time="1970-01-01T00:00:00.000+01:00" Value="foo" />
<Value Time="1970-01-01T00:01:00.000+01:00" Value="foo, bar" />
<Value Time="1970-01-01T00:02:00.000+01:00" Value="bar" />
</TimedState>
</Resource>
</StrolchModel>