Skip to content

Commit 1c6a115

Browse files
authored
Merge pull request #80 from matchews/codex/update-mspconfig-with-new-fields-and-dtos
Add schedule and DMT parsing to MSP configuration
2 parents dc64f7d + 984f117 commit 1c6a115

9 files changed

Lines changed: 395 additions & 1 deletion

File tree

bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/ConfigParser.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ public final class ConfigParser {
1717
XSTREAM.setClassLoader(ConfigParser.class.getClassLoader());
1818
XSTREAM.ignoreUnknownElements();
1919
XSTREAM.addPermission(AnyTypePermission.ANY);
20-
XSTREAM.processAnnotations(MspConfig.class);
20+
XSTREAM.processAnnotations(new Class<?>[] { MspConfig.class, SystemConfig.class, BackyardConfig.class,
21+
BodyOfWaterConfig.class, PumpConfig.class, FilterConfig.class, HeaterConfig.class,
22+
VirtualHeaterConfig.class, ChlorinatorConfig.class, ColorLogicLightConfig.class, RelayConfig.class,
23+
SchedulesConfig.class, ScheduleConfig.class, ScheduleActionConfig.class, DeviceConfig.class,
24+
ParameterConfig.class, DmtConfig.class });
2125
}
2226

2327
private ConfigParser() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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 a device referenced within schedules or the DMT.
15+
*/
16+
@NonNullByDefault
17+
@XStreamAlias("Device")
18+
public class DeviceConfig {
19+
@XStreamAsAttribute
20+
@XStreamAlias("systemId")
21+
private @Nullable String systemId;
22+
23+
@XStreamAlias("System-Id")
24+
private @Nullable String systemIdElement;
25+
26+
@XStreamAsAttribute
27+
private @Nullable String name;
28+
29+
@XStreamAlias("Name")
30+
private @Nullable String nameElement;
31+
32+
@XStreamAsAttribute
33+
private @Nullable String type;
34+
35+
@XStreamAlias("Type")
36+
private @Nullable String typeElement;
37+
38+
@XStreamAsAttribute
39+
private @Nullable String subType;
40+
41+
@XStreamAlias("Sub-Type")
42+
private @Nullable String subTypeElement;
43+
44+
@XStreamAsAttribute
45+
@XStreamAlias("parentSystemId")
46+
private @Nullable String parentSystemId;
47+
48+
@XStreamAlias("Parent-System-Id")
49+
private @Nullable String parentSystemIdElement;
50+
51+
@XStreamImplicit(itemFieldName = "Parameter")
52+
private final List<ParameterConfig> parameters = new ArrayList<>();
53+
54+
public @Nullable String getSystemId() {
55+
return systemId != null ? systemId : systemIdElement;
56+
}
57+
58+
public @Nullable String getName() {
59+
return name != null ? name : nameElement;
60+
}
61+
62+
public @Nullable String getType() {
63+
return type != null ? type : typeElement;
64+
}
65+
66+
public @Nullable String getSubType() {
67+
return subType != null ? subType : subTypeElement;
68+
}
69+
70+
public @Nullable String getParentSystemId() {
71+
return parentSystemId != null ? parentSystemId : parentSystemIdElement;
72+
}
73+
74+
public List<ParameterConfig> getParameters() {
75+
return parameters;
76+
}
77+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 device mapping table (DMT) within the MSP configuration.
13+
*/
14+
@NonNullByDefault
15+
@XStreamAlias("DMT")
16+
public class DmtConfig {
17+
@XStreamImplicit(itemFieldName = "Device")
18+
private final List<DeviceConfig> devices = new ArrayList<>();
19+
20+
public List<DeviceConfig> getDevices() {
21+
return devices;
22+
}
23+
}

bundles/org.openhab.binding.haywardomnilogiclocal/src/main/java/org/openhab/binding/haywardomnilogiclocal/internal/config/MspConfig.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55

66
import org.eclipse.jdt.annotation.NonNullByDefault;
7+
import org.eclipse.jdt.annotation.Nullable;
78

89
import com.thoughtworks.xstream.annotations.XStreamAlias;
910
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@@ -20,12 +21,33 @@ public class MspConfig {
2021
@XStreamImplicit(itemFieldName = "Backyard")
2122
private final List<BackyardConfig> backyards = new ArrayList<>();
2223

24+
@XStreamAlias("Schedules")
25+
private final SchedulesConfig schedules = new SchedulesConfig();
26+
27+
@XStreamAlias("DMT")
28+
private final DmtConfig dmt = new DmtConfig();
29+
30+
@XStreamAlias("CHECKSUM")
31+
private @Nullable String checksum;
32+
2333
public List<SystemConfig> getSystems() {
2434
return systems;
2535
}
2636

2737
public List<BackyardConfig> getBackyards() {
2838
return backyards;
2939
}
40+
41+
public List<ScheduleConfig> getSchedules() {
42+
return schedules.getSchedules();
43+
}
44+
45+
public DmtConfig getDmt() {
46+
return dmt;
47+
}
48+
49+
public @Nullable String getChecksum() {
50+
return checksum;
51+
}
3052
}
3153

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
import com.thoughtworks.xstream.annotations.XStreamConverter;
9+
import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;
10+
11+
/**
12+
* Representation of a Parameter element within schedules or devices.
13+
*/
14+
@NonNullByDefault
15+
@XStreamAlias("Parameter")
16+
@XStreamConverter(value = ToAttributedValueConverter.class, strings = "value")
17+
public class ParameterConfig {
18+
@XStreamAsAttribute
19+
private @Nullable String name;
20+
21+
@XStreamAsAttribute
22+
private @Nullable String dataType;
23+
24+
@XStreamAsAttribute
25+
private @Nullable String units;
26+
27+
@XStreamAsAttribute
28+
private @Nullable String index;
29+
30+
@XStreamAsAttribute
31+
private @Nullable String readOnly;
32+
33+
private @Nullable String value;
34+
35+
public @Nullable String getName() {
36+
return name;
37+
}
38+
39+
public @Nullable String getDataType() {
40+
return dataType;
41+
}
42+
43+
public @Nullable String getUnits() {
44+
return units;
45+
}
46+
47+
public @Nullable String getIndex() {
48+
return index;
49+
}
50+
51+
public @Nullable String getReadOnly() {
52+
return readOnly;
53+
}
54+
55+
public @Nullable String getValue() {
56+
return value;
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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 an action within a schedule.
15+
*/
16+
@NonNullByDefault
17+
@XStreamAlias("Action")
18+
public class ScheduleActionConfig {
19+
@XStreamAsAttribute
20+
private @Nullable String type;
21+
22+
@XStreamAlias("Type")
23+
private @Nullable String typeElement;
24+
25+
@XStreamAsAttribute
26+
@XStreamAlias("systemId")
27+
private @Nullable String systemId;
28+
29+
@XStreamAlias("System-Id")
30+
private @Nullable String systemIdElement;
31+
32+
@XStreamImplicit(itemFieldName = "Device")
33+
private final List<DeviceConfig> devices = new ArrayList<>();
34+
35+
@XStreamImplicit(itemFieldName = "Parameter")
36+
private final List<ParameterConfig> parameters = new ArrayList<>();
37+
38+
public @Nullable String getType() {
39+
return type != null ? type : typeElement;
40+
}
41+
42+
public @Nullable String getSystemId() {
43+
return systemId != null ? systemId : systemIdElement;
44+
}
45+
46+
public List<DeviceConfig> getDevices() {
47+
return devices;
48+
}
49+
50+
public List<ParameterConfig> getParameters() {
51+
return parameters;
52+
}
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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 a single schedule entry.
15+
*/
16+
@NonNullByDefault
17+
@XStreamAlias("Schedule")
18+
public class ScheduleConfig {
19+
@XStreamAsAttribute
20+
@XStreamAlias("systemId")
21+
private @Nullable String systemId;
22+
23+
@XStreamAlias("System-Id")
24+
private @Nullable String systemIdElement;
25+
26+
@XStreamAsAttribute
27+
private @Nullable String name;
28+
29+
@XStreamAlias("Name")
30+
private @Nullable String nameElement;
31+
32+
@XStreamAsAttribute
33+
private @Nullable String type;
34+
35+
@XStreamAlias("Type")
36+
private @Nullable String typeElement;
37+
38+
@XStreamAsAttribute
39+
private @Nullable String subType;
40+
41+
@XStreamAlias("Sub-Type")
42+
private @Nullable String subTypeElement;
43+
44+
@XStreamAsAttribute
45+
private @Nullable String enabled;
46+
47+
@XStreamAlias("Enabled")
48+
private @Nullable String enabledElement;
49+
50+
@XStreamImplicit(itemFieldName = "Device")
51+
private final List<DeviceConfig> devices = new ArrayList<>();
52+
53+
@XStreamImplicit(itemFieldName = "Parameter")
54+
private final List<ParameterConfig> parameters = new ArrayList<>();
55+
56+
@XStreamImplicit(itemFieldName = "Action")
57+
private final List<ScheduleActionConfig> actions = new ArrayList<>();
58+
59+
public @Nullable String getSystemId() {
60+
return systemId != null ? systemId : systemIdElement;
61+
}
62+
63+
public @Nullable String getName() {
64+
return name != null ? name : nameElement;
65+
}
66+
67+
public @Nullable String getType() {
68+
return type != null ? type : typeElement;
69+
}
70+
71+
public @Nullable String getSubType() {
72+
return subType != null ? subType : subTypeElement;
73+
}
74+
75+
public @Nullable String getEnabled() {
76+
return enabled != null ? enabled : enabledElement;
77+
}
78+
79+
public List<DeviceConfig> getDevices() {
80+
return devices;
81+
}
82+
83+
public List<ParameterConfig> getParameters() {
84+
return parameters;
85+
}
86+
87+
public List<ScheduleActionConfig> getActions() {
88+
return actions;
89+
}
90+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
* Container for all schedule elements in the MSP configuration.
13+
*/
14+
@NonNullByDefault
15+
@XStreamAlias("Schedules")
16+
public class SchedulesConfig {
17+
@XStreamImplicit(itemFieldName = "Schedule")
18+
private final List<ScheduleConfig> schedules = new ArrayList<>();
19+
20+
public List<ScheduleConfig> getSchedules() {
21+
return schedules;
22+
}
23+
}

0 commit comments

Comments
 (0)