Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ public final class ConfigParser {
XSTREAM.setClassLoader(ConfigParser.class.getClassLoader());
XSTREAM.ignoreUnknownElements();
XSTREAM.addPermission(AnyTypePermission.ANY);
XSTREAM.processAnnotations(MspConfig.class);
XSTREAM.processAnnotations(new Class<?>[] { MspConfig.class, SystemConfig.class, BackyardConfig.class,
BodyOfWaterConfig.class, PumpConfig.class, FilterConfig.class, HeaterConfig.class,
VirtualHeaterConfig.class, ChlorinatorConfig.class, ColorLogicLightConfig.class, RelayConfig.class,
SchedulesConfig.class, ScheduleConfig.class, ScheduleActionConfig.class, DeviceConfig.class,
ParameterConfig.class, DmtConfig.class });
}

private ConfigParser() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

/**
* Representation of a device referenced within schedules or the DMT.
*/
@NonNullByDefault
@XStreamAlias("Device")
public class DeviceConfig {
@XStreamAsAttribute
@XStreamAlias("systemId")
private @Nullable String systemId;

@XStreamAlias("System-Id")
private @Nullable String systemIdElement;

@XStreamAsAttribute
private @Nullable String name;

@XStreamAlias("Name")
private @Nullable String nameElement;

@XStreamAsAttribute
private @Nullable String type;

@XStreamAlias("Type")
private @Nullable String typeElement;

@XStreamAsAttribute
private @Nullable String subType;

@XStreamAlias("Sub-Type")
private @Nullable String subTypeElement;

@XStreamAsAttribute
@XStreamAlias("parentSystemId")
private @Nullable String parentSystemId;

@XStreamAlias("Parent-System-Id")
private @Nullable String parentSystemIdElement;

@XStreamImplicit(itemFieldName = "Parameter")
private final List<ParameterConfig> parameters = new ArrayList<>();

public @Nullable String getSystemId() {
return systemId != null ? systemId : systemIdElement;
}

public @Nullable String getName() {
return name != null ? name : nameElement;
}

public @Nullable String getType() {
return type != null ? type : typeElement;
}

public @Nullable String getSubType() {
return subType != null ? subType : subTypeElement;
}

public @Nullable String getParentSystemId() {
return parentSystemId != null ? parentSystemId : parentSystemIdElement;
}

public List<ParameterConfig> getParameters() {
return parameters;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

/**
* Representation of the device mapping table (DMT) within the MSP configuration.
*/
@NonNullByDefault
@XStreamAlias("DMT")
public class DmtConfig {
@XStreamImplicit(itemFieldName = "Device")
private final List<DeviceConfig> devices = new ArrayList<>();

public List<DeviceConfig> getDevices() {
return devices;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

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

@XStreamAlias("Schedules")
private final SchedulesConfig schedules = new SchedulesConfig();

@XStreamAlias("DMT")
private final DmtConfig dmt = new DmtConfig();

@XStreamAlias("CHECKSUM")
private @Nullable String checksum;

public List<SystemConfig> getSystems() {
return systems;
}

public List<BackyardConfig> getBackyards() {
return backyards;
}

public List<ScheduleConfig> getSchedules() {
return schedules.getSchedules();
}

public DmtConfig getDmt() {
return dmt;
}

public @Nullable String getChecksum() {
return checksum;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;

/**
* Representation of a Parameter element within schedules or devices.
*/
@NonNullByDefault
@XStreamAlias("Parameter")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = "value")
public class ParameterConfig {
@XStreamAsAttribute
private @Nullable String name;

@XStreamAsAttribute
private @Nullable String dataType;

@XStreamAsAttribute
private @Nullable String units;

@XStreamAsAttribute
private @Nullable String index;

@XStreamAsAttribute
private @Nullable String readOnly;

private @Nullable String value;

public @Nullable String getName() {
return name;
}

public @Nullable String getDataType() {
return dataType;
}

public @Nullable String getUnits() {
return units;
}

public @Nullable String getIndex() {
return index;
}

public @Nullable String getReadOnly() {
return readOnly;
}

public @Nullable String getValue() {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

/**
* Representation of an action within a schedule.
*/
@NonNullByDefault
@XStreamAlias("Action")
public class ScheduleActionConfig {
@XStreamAsAttribute
private @Nullable String type;

@XStreamAlias("Type")
private @Nullable String typeElement;

@XStreamAsAttribute
@XStreamAlias("systemId")
private @Nullable String systemId;

@XStreamAlias("System-Id")
private @Nullable String systemIdElement;

@XStreamImplicit(itemFieldName = "Device")
private final List<DeviceConfig> devices = new ArrayList<>();

@XStreamImplicit(itemFieldName = "Parameter")
private final List<ParameterConfig> parameters = new ArrayList<>();

public @Nullable String getType() {
return type != null ? type : typeElement;
}

public @Nullable String getSystemId() {
return systemId != null ? systemId : systemIdElement;
}

public List<DeviceConfig> getDevices() {
return devices;
}

public List<ParameterConfig> getParameters() {
return parameters;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

/**
* Representation of a single schedule entry.
*/
@NonNullByDefault
@XStreamAlias("Schedule")
public class ScheduleConfig {
@XStreamAsAttribute
@XStreamAlias("systemId")
private @Nullable String systemId;

@XStreamAlias("System-Id")
private @Nullable String systemIdElement;

@XStreamAsAttribute
private @Nullable String name;

@XStreamAlias("Name")
private @Nullable String nameElement;

@XStreamAsAttribute
private @Nullable String type;

@XStreamAlias("Type")
private @Nullable String typeElement;

@XStreamAsAttribute
private @Nullable String subType;

@XStreamAlias("Sub-Type")
private @Nullable String subTypeElement;

@XStreamAsAttribute
private @Nullable String enabled;

@XStreamAlias("Enabled")
private @Nullable String enabledElement;

@XStreamImplicit(itemFieldName = "Device")
private final List<DeviceConfig> devices = new ArrayList<>();

@XStreamImplicit(itemFieldName = "Parameter")
private final List<ParameterConfig> parameters = new ArrayList<>();

@XStreamImplicit(itemFieldName = "Action")
private final List<ScheduleActionConfig> actions = new ArrayList<>();

public @Nullable String getSystemId() {
return systemId != null ? systemId : systemIdElement;
}

public @Nullable String getName() {
return name != null ? name : nameElement;
}

public @Nullable String getType() {
return type != null ? type : typeElement;
}

public @Nullable String getSubType() {
return subType != null ? subType : subTypeElement;
}

public @Nullable String getEnabled() {
return enabled != null ? enabled : enabledElement;
}

public List<DeviceConfig> getDevices() {
return devices;
}

public List<ParameterConfig> getParameters() {
return parameters;
}

public List<ScheduleActionConfig> getActions() {
return actions;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.openhab.binding.haywardomnilogiclocal.internal.config;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

/**
* Container for all schedule elements in the MSP configuration.
*/
@NonNullByDefault
@XStreamAlias("Schedules")
public class SchedulesConfig {
@XStreamImplicit(itemFieldName = "Schedule")
private final List<ScheduleConfig> schedules = new ArrayList<>();

public List<ScheduleConfig> getSchedules() {
return schedules;
}
}
Loading