public final class Priority
{
/**
* System priority, reserved for high priority management and system configuration.
* <p>
*/
public static final Priority SYSTEM = new Priority(0x00);
/**
* Urgent priority, for urgent frames.
* <p>
*/
public static final Priority URGENT = new Priority(0x02);
/**
* Normal priority, the default for short frames.
* <p>
*/
public static final Priority NORMAL = new Priority(0x01);
/**
* Low priority, used for long frames.
* <p>
*/
public static final Priority LOW = new Priority(0x03);
/**
* Constant with the 2 Bit representation of this priority used in the message
* priority field.
* <p>
*/
public final byte value;
private Priority(int v)
{
value = (byte) v;
}
/**
* Returns the priority of the supplied priority value code.
* <p>
*
* @param value priority value code, 0 <= value <= 3
* @return the corresponding priority object
*/
public static Priority get(int value)
{
if (value == 1)
return NORMAL;
if (value == 0)
return SYSTEM;
if (value == 3)
return LOW;
if (value == 2)
return URGENT;
throw new KNXIllegalArgumentException("invalid priority value");
}
/**
* Returns the priority of the supplied priority value representation.
* <p>
* The following textual representations for <code>value</code> are allowed:
* <ul>
* <li>"system"</li>
* <li>"normal"</li>
* <li>"urgent"</li>
* <li>"low"</li>
* </ul>
* These are in accordance with the ones returned by {@link #toString()}.
*
* @param value priority value in textual representation, value is treated case
* insensitive
* @return the corresponding priority object
*/
public static Priority get(String value)
{
if ("system".equalsIgnoreCase(value))
return SYSTEM;
if ("normal".equalsIgnoreCase(value))
return NORMAL;
if ("urgent".equalsIgnoreCase(value))
return URGENT;
if ("low".equalsIgnoreCase(value))
return LOW;
throw new KNXIllegalArgumentException("invalid priority value");
}
/**
* Returns the priority in textual representation.
* <p>
* <ul>
* <li>{@link #SYSTEM} returns "system"</li>
* <li>{@link #NORMAL} returns "normal"</li>
* <li>{@link #LOW} returns "low"</li>
* <li>{@link #URGENT} returns "urgent"</li>
* </ul>
*
* @return priority as string
*/
public String toString()
{
return value == 0 ? "system" : value == 1 ? "normal" : value == 2 ? "urgent"
: "low";
}
}
{
/**
* System priority, reserved for high priority management and system configuration.
* <p>
*/
public static final Priority SYSTEM = new Priority(0x00);
/**
* Urgent priority, for urgent frames.
* <p>
*/
public static final Priority URGENT = new Priority(0x02);
/**
* Normal priority, the default for short frames.
* <p>
*/
public static final Priority NORMAL = new Priority(0x01);
/**
* Low priority, used for long frames.
* <p>
*/
public static final Priority LOW = new Priority(0x03);
/**
* Constant with the 2 Bit representation of this priority used in the message
* priority field.
* <p>
*/
public final byte value;
private Priority(int v)
{
value = (byte) v;
}
/**
* Returns the priority of the supplied priority value code.
* <p>
*
* @param value priority value code, 0 <= value <= 3
* @return the corresponding priority object
*/
public static Priority get(int value)
{
if (value == 1)
return NORMAL;
if (value == 0)
return SYSTEM;
if (value == 3)
return LOW;
if (value == 2)
return URGENT;
throw new KNXIllegalArgumentException("invalid priority value");
}
/**
* Returns the priority of the supplied priority value representation.
* <p>
* The following textual representations for <code>value</code> are allowed:
* <ul>
* <li>"system"</li>
* <li>"normal"</li>
* <li>"urgent"</li>
* <li>"low"</li>
* </ul>
* These are in accordance with the ones returned by {@link #toString()}.
*
* @param value priority value in textual representation, value is treated case
* insensitive
* @return the corresponding priority object
*/
public static Priority get(String value)
{
if ("system".equalsIgnoreCase(value))
return SYSTEM;
if ("normal".equalsIgnoreCase(value))
return NORMAL;
if ("urgent".equalsIgnoreCase(value))
return URGENT;
if ("low".equalsIgnoreCase(value))
return LOW;
throw new KNXIllegalArgumentException("invalid priority value");
}
/**
* Returns the priority in textual representation.
* <p>
* <ul>
* <li>{@link #SYSTEM} returns "system"</li>
* <li>{@link #NORMAL} returns "normal"</li>
* <li>{@link #LOW} returns "low"</li>
* <li>{@link #URGENT} returns "urgent"</li>
* </ul>
*
* @return priority as string
*/
public String toString()
{
return value == 0 ? "system" : value == 1 ? "normal" : value == 2 ? "urgent"
: "low";
}
}