/*
*
* This file was generated by LLRP Code Generator
* see http://llrp-toolkit.cvs.sourceforge.net/llrp-toolkit/
* for more information
* Generated on: Mon Mar 10 14:26:48 KST 2014;
*
*/
/*
* Copyright (C) 2014 KAIST
* @author Janggwan Im <limg00n@kaist.ac.kr>
*
* Copyright 2007 ETH Zurich
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package kr.ac.kaist.resl.ltk.generated.enumerations;
import org.apache.log4j.Logger;
import org.jdom.Content;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.Text;
import kr.ac.kaist.resl.ltk.generated.LLRPConstants;
import org.llrp.ltk.types.LLRPBitList;
import org.llrp.ltk.types.LLRPEnumeration;
import org.llrp.ltk.types.UnsignedByte;
import org.llrp.ltk.types.UnsignedByteArray;
import java.lang.IllegalArgumentException;
import java.math.BigInteger;
import java.util.LinkedList;
import java.util.List;
/**
* AirProtocolsArray is Enumeration of Type UnsignedByteArray
*/
public class AirProtocolsArray extends UnsignedByteArray
implements LLRPEnumeration {
public static final int Unspecified = 0;
public static final int EPCGlobalClass1Gen2 = 1;
Logger logger = Logger.getLogger(AirProtocolsArray.class);
public AirProtocolsArray() {
super(0);
}
/**
* Create new AirProtocolsArray by passing integer value.
*
* @throws IllegalArgumentException
* if the value is not allowed for this enumeration
* @param value an Integer value allowed - might check first
* with isValidValue it it is an allowed value
*/
public AirProtocolsArray(int value) {
// Enumerations must use String constructor
super(new Integer(value).toString());
if (!isValidValue(value)) {
throw new IllegalArgumentException("Value not allowed");
}
}
/**
* Create new AirProtocolsArray by passing jdom element.
*
* @throws IllegalArgumentException
* String must be a concatenation of several enumeration strings seperated by whitespace
* @param element - jdom element where the child is a string
* that contains several names for values of the enumeration.
*/
public AirProtocolsArray(final Element element) {
String[] items = element.getText().split(" ");
this.bytes = new UnsignedByte[items.length];
for (int i = 0; i < items.length; i++) {
this.bytes[i] = new UnsignedByte(getValue(items[i]));
}
}
/**
* Create new AirProtocolsArray by passing a string
*
* @throws IllegalArgumentException
* String must be a concatenation of several enumeration strings seperated by whitespace
* @param element - string that contains several names for values of the enumeration.
*/
public AirProtocolsArray(final String element) {
String[] items = element.split(" ");
this.bytes = new UnsignedByte[items.length];
for (int i = 0; i < items.length; i++) {
this.bytes[i] = new UnsignedByte(getValue(items[i]));
}
}
/**
* Create new AirProtocolsArray by passing LLRPBitList.
*
* @throws IllegalArgumentException
* if the value found in the BitList is not allowed
* for this enumeration.
* @param list - LLRPBitList
*/
public AirProtocolsArray(final LLRPBitList list) {
decodeBinary(list);
if (!isValidValue(new Integer(toInteger()))) {
throw new IllegalArgumentException("Value not allowed");
}
}
/**
* set a value of this enumeration to the
* value identified by given string.
*
* @throws IllegalArgumentException
* if the value found for given String is not allowed
* for this enumeration.
* @param name set this enumeration to hold one of the allowed values
*/
public final void set(final String name, int position) {
if (!isValidName(name)) {
throw new IllegalArgumentException("name not allowed");
}
if (position > this.bytes.length) {
throw new IllegalArgumentException(
"position is bigger than array size");
}
bytes[position] = new UnsignedByte(getValue(name));
}
/**
* if no position is provided, the first element is set
**/
public final void set(final String name) {
set(name, 0);
}
/**
* set a value of this enumeration to the
* value identified by given string.
*
* @throws IllegalArgumentException
* if the value found for given String is not allowed
* for this enumeration.
* @param value to be set at position
*/
public final void set(final int value, int position) {
if (!isValidValue(value)) {
throw new IllegalArgumentException("name not allowed");
}
if (position > this.bytes.length) {
throw new IllegalArgumentException(
"position is bigger than array size");
}
bytes[position] = new UnsignedByte(value);
}
/**
* if no position is provided, the first element is set
**/
public final void set(final int value) {
set(value, 0);
}
/**
* {@inheritDoc}
*/
public Content encodeXML(final String name, Namespace ns) {
Element element = new Element(name, ns);
//Element element = new Element(name, Namespace.getNamespace("llrp",LLRPConstants.LLRPNAMESPACE));
element.setContent(new Text(toString()));
return element;
}
/**
* {@inheritDoc}
*/
public String toString() {
String s = "";
for (UnsignedByte b : this.bytes) {
s += " ";
s += getName(b.toInteger());
}
return s.replaceFirst(" ", "");
}
/**
* There is no reasonable representation as int
* return 0
*/
public int intValue() {
return 0;
}
/**
* {@inheritDoc}
*/
public boolean isValidValue(final int value) {
switch (value) {
case 0:
return true;
case 1:
return true;
default:
return false;
}
}
/**
* {@inheritDoc}
*/
public final int getValue(final String name) {
if (name.equalsIgnoreCase("Unspecified")) {
return 0;
}
if (name.equalsIgnoreCase("EPCGlobalClass1Gen2")) {
return 1;
}
return -1;
}
/**
* {@inheritDoc}
*/
public final String getName(final int value) {
if (0 == value) {
return "Unspecified";
}
if (1 == value) {
return "EPCGlobalClass1Gen2";
}
return "";
}
/**
* {@inheritDoc}
*/
public boolean isValidName(final String name) {
if (name.equals("Unspecified")) {
return true;
}
if (name.equals("EPCGlobalClass1Gen2")) {
return true;
}
return false;
}
/**
* number of bits used to represent this type.
*
* @return Integer
*/
public static int length() {
return UnsignedByteArray.length();
}
/**
* wrapper method for UnsignedIntegers that use BigIntegers to store value
*
*/
private final String getName(final BigInteger value) {
logger.warn("AirProtocolsArray must convert BigInteger " + value +
" to Integer value " + value.intValue());
return getName(value.intValue());
}
/**
* wrapper method for UnsignedIntegers that use BigIntegers to store value
*
*/
private final boolean isValidValue(final BigInteger value) {
logger.warn("AirProtocolsArray must convert BigInteger " + value +
" to Integer value " + value.intValue());
return isValidValue(value.intValue());
}
}