/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.proto.dom; import com.eas.proto.ProtoReaderException; import java.math.BigDecimal; import java.util.Date; import java.util.Iterator; import java.util.List; /** * * @author pk */ class ProtoEntityRefNode implements ProtoNode { private final int nodeTag; private final byte[] data; private final int offset; private final int size; ProtoEntityRefNode(int tag, byte[] data, int dataOffset, int size) { if (data.length < dataOffset + size) { throw new IllegalArgumentException("Buffer overflow"); } if (size != 8) { throw new IllegalArgumentException("Wrong size " + size + ", expected 8"); } this.nodeTag = tag; this.data = data; this.offset = dataOffset; this.size = size; } @Override public int getNodeTag() { return nodeTag; } @Override public byte getByte() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public Date getDate() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public double getDouble() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public long getEntityID() { return getLong(); } @Override public int getInt() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public long getLong() { return (((long) data[offset + 0] << 56) + ((long) (data[offset + 1] & 255) << 48) + ((long) (data[offset + 2] & 255) << 40) + ((long) (data[offset + 3] & 255) << 32) + ((long) (data[offset + 4] & 255) << 24) + ((data[offset + 5] & 255) << 16) + ((data[offset + 6] & 255) << 8) + ((data[offset + 7] & 255))); } @Override public String getString() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public ProtoNode getChild(int tag) { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public List<ProtoNode> getChildren(int tag) { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public Iterator<ProtoNode> iterator() { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public boolean containsChild(int tag) { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public ProtoNodeType getNodeType() { return ProtoNodeType.ENTITY_REF; } @Override public BigDecimal getBigDecimal() throws ProtoReaderException { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public int getOffset() { return offset; } @Override public int getSize() { return size; } @Override public byte[] getData() { return data; } @Override public boolean getBoolean() throws ProtoReaderException { throw new UnsupportedOperationException("Unsupported for entity ref node"); } @Override public float getFloat() throws ProtoReaderException { throw new UnsupportedOperationException("Unsupported for entity ref node"); } }