/** * Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT * All rights reserved. Use is subject to license terms. See LICENSE.TXT */ package org.diirt.datasource.integration; import org.diirt.vtype.VTypeToString; import org.diirt.vtype.VTypeValueEquals; import org.diirt.vtype.ValueUtil; /** * * @author carcassi */ public enum VTypeMatchMask { VALUE(true, false, false, false), ALARM(false, true, false, false), TIME(false, false, true, false), // DISPLAY(false, false, false, true), ALL(true, true, true, true), ALL_EXCEPT_TIME(true, true, false, true); private final boolean value; private final boolean alarm; private final boolean time; private final boolean display; private VTypeMatchMask(boolean value, boolean alarm, boolean time, boolean display) { this.value = value; this.alarm = alarm; this.time = time; this.display = display; } public String match(Object expectedValue, Object actualValue) { if (value && !VTypeValueEquals.typeEquals(actualValue, expectedValue)) { return "TYPE mismatch: was " + actualValue + " (expected " + expectedValue + ")"; } else if (value && !VTypeValueEquals.valueEquals(actualValue, expectedValue)) { return "VALUE mismatch: was " + actualValue + " (expected " + expectedValue + ")"; } else if (alarm && !VTypeValueEquals.alarmEquals(ValueUtil.alarmOf(actualValue), ValueUtil.alarmOf(expectedValue))) { return "ALARM mismatch: was " + VTypeToString.alarmToString(ValueUtil.alarmOf(actualValue)) + " (expected " + VTypeToString.alarmToString(ValueUtil.alarmOf(expectedValue)) + ")"; } else if (time && !VTypeValueEquals.timeEquals(ValueUtil.timeOf(actualValue), ValueUtil.timeOf(expectedValue))) { return "TIME mismatch: was " + actualValue + " (expected " + expectedValue + ")"; } return null; } }