Skip to content

Commit ea0c64d

Browse files
committed
Add MSP configuration parser and model
1 parent fd54688 commit ea0c64d

13 files changed

Lines changed: 454 additions & 0 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.eclipse.jdt.annotation.NonNullByDefault;
7+
import org.eclipse.jdt.annotation.Nullable;
8+
9+
import com.thoughtworks.xstream.annotations.XStreamAlias;
10+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
11+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
12+
13+
/**
14+
* Representation of the Backyard element within the MSP configuration.
15+
*/
16+
@NonNullByDefault
17+
@XStreamAlias("Backyard")
18+
public class BackyardConfig {
19+
@XStreamAsAttribute
20+
@XStreamAlias("systemId")
21+
private @Nullable String systemId;
22+
23+
@XStreamImplicit(itemFieldName = "BodyOfWater")
24+
private final List<BodyOfWaterConfig> bodiesOfWater = new ArrayList<>();
25+
26+
@XStreamImplicit(itemFieldName = "Pump")
27+
private final List<PumpConfig> pumps = new ArrayList<>();
28+
29+
@XStreamImplicit(itemFieldName = "Filter")
30+
private final List<FilterConfig> filters = new ArrayList<>();
31+
32+
@XStreamImplicit(itemFieldName = "Heater")
33+
private final List<HeaterConfig> heaters = new ArrayList<>();
34+
35+
@XStreamImplicit(itemFieldName = "VirtualHeater")
36+
private final List<VirtualHeaterConfig> virtualHeaters = new ArrayList<>();
37+
38+
@XStreamImplicit(itemFieldName = "Chlorinator")
39+
private final List<ChlorinatorConfig> chlorinators = new ArrayList<>();
40+
41+
@XStreamImplicit(itemFieldName = "ColorLogic-Light")
42+
private final List<ColorLogicLightConfig> colorLogicLights = new ArrayList<>();
43+
44+
@XStreamImplicit(itemFieldName = "Relay")
45+
private final List<RelayConfig> relays = new ArrayList<>();
46+
47+
public @Nullable String getSystemId() {
48+
return systemId;
49+
}
50+
51+
public List<BodyOfWaterConfig> getBodiesOfWater() {
52+
return bodiesOfWater;
53+
}
54+
55+
public List<PumpConfig> getPumps() {
56+
return pumps;
57+
}
58+
59+
public List<FilterConfig> getFilters() {
60+
return filters;
61+
}
62+
63+
public List<HeaterConfig> getHeaters() {
64+
return heaters;
65+
}
66+
67+
public List<VirtualHeaterConfig> getVirtualHeaters() {
68+
return virtualHeaters;
69+
}
70+
71+
public List<ChlorinatorConfig> getChlorinators() {
72+
return chlorinators;
73+
}
74+
75+
public List<ColorLogicLightConfig> getColorLogicLights() {
76+
return colorLogicLights;
77+
}
78+
79+
public List<RelayConfig> getRelays() {
80+
return relays;
81+
}
82+
}
83+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a BodyOfWater element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("BodyOfWater")
14+
public class BodyOfWaterConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
public @Nullable String getSystemId() {
20+
return systemId;
21+
}
22+
}
23+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Chlorinator element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Chlorinator")
14+
public class ChlorinatorConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
public @Nullable String getSystemId() {
20+
return systemId;
21+
}
22+
}
23+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a ColorLogic light element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("ColorLogic-Light")
14+
public class ColorLogicLightConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
public @Nullable String getSystemId() {
20+
return systemId;
21+
}
22+
}
23+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
5+
import com.thoughtworks.xstream.XStream;
6+
import com.thoughtworks.xstream.io.xml.StaxDriver;
7+
import com.thoughtworks.xstream.security.AnyTypePermission;
8+
9+
/**
10+
* Utility for parsing MSP configuration XML using XStream.
11+
*/
12+
@NonNullByDefault
13+
public final class ConfigParser {
14+
private static final XStream XSTREAM = new XStream(new StaxDriver());
15+
16+
static {
17+
XSTREAM.ignoreUnknownElements();
18+
XSTREAM.addPermission(AnyTypePermission.ANY);
19+
XSTREAM.processAnnotations(MspConfig.class);
20+
}
21+
22+
private ConfigParser() {
23+
}
24+
25+
public static MspConfig parse(String xml) {
26+
return (MspConfig) XSTREAM.fromXML(xml);
27+
}
28+
}
29+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Filter element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Filter")
14+
public class FilterConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
@XStreamAsAttribute
20+
@XStreamAlias("pumpId")
21+
private @Nullable String pumpId;
22+
23+
public @Nullable String getSystemId() {
24+
return systemId;
25+
}
26+
27+
public @Nullable String getPumpId() {
28+
return pumpId;
29+
}
30+
}
31+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Heater element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Heater")
14+
public class HeaterConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
@XStreamAsAttribute
20+
private @Nullable String type;
21+
22+
public @Nullable String getSystemId() {
23+
return systemId;
24+
}
25+
26+
public @Nullable String getType() {
27+
return type;
28+
}
29+
}
30+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.eclipse.jdt.annotation.NonNullByDefault;
7+
8+
import com.thoughtworks.xstream.annotations.XStreamAlias;
9+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
10+
11+
/**
12+
* Representation of the MSP configuration root element.
13+
*/
14+
@NonNullByDefault
15+
@XStreamAlias("MspConfig")
16+
public class MspConfig {
17+
@XStreamImplicit(itemFieldName = "System")
18+
private final List<SystemConfig> systems = new ArrayList<>();
19+
20+
public List<SystemConfig> getSystems() {
21+
return systems;
22+
}
23+
}
24+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Pump element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Pump")
14+
public class PumpConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
@XStreamAsAttribute
20+
private @Nullable String name;
21+
22+
public @Nullable String getSystemId() {
23+
return systemId;
24+
}
25+
26+
public @Nullable String getName() {
27+
return name;
28+
}
29+
}
30+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.openhab.binding.haywardomnilogiclocal.internal.config;
2+
3+
import org.eclipse.jdt.annotation.NonNullByDefault;
4+
import org.eclipse.jdt.annotation.Nullable;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
9+
/**
10+
* Representation of a Relay element.
11+
*/
12+
@NonNullByDefault
13+
@XStreamAlias("Relay")
14+
public class RelayConfig {
15+
@XStreamAsAttribute
16+
@XStreamAlias("systemId")
17+
private @Nullable String systemId;
18+
19+
@XStreamAsAttribute
20+
private @Nullable String name;
21+
22+
public @Nullable String getSystemId() {
23+
return systemId;
24+
}
25+
26+
public @Nullable String getName() {
27+
return name;
28+
}
29+
}
30+

0 commit comments

Comments
 (0)