package org.openntf.domino.nsfdata.impldxl.item; import static javax.xml.bind.DatatypeConverter.parseBase64Binary; import org.openntf.domino.utils.xml.XMLNode; public class DXLItemRaw extends AbstractDXLItem { private static final long serialVersionUID = 1L; protected static DXLItemRaw create(final XMLNode node, final int dupItemId) { XMLNode rawitemdata = node.selectSingleNode("rawitemdata"); int typeCode = Integer.parseInt(rawitemdata.getAttribute("type"), 16); Type type = Type.valueOf(typeCode); switch (type) { case COMPOSITE: return new DXLItemComposite(node, dupItemId); case NOTEREF_LIST: return new DXLItemRefList(node, dupItemId); case MIME_PART: return new DXLItemMIMEPart(node, dupItemId); case COLLATION: return new DXLItemCollation(node, dupItemId); case VIEW_FORMAT: return new DXLItemViewFormat(node, dupItemId); default: return new DXLItemRaw(node, dupItemId); } } private final Type type_; private byte[] data_; protected DXLItemRaw(final XMLNode node, final int dupItemId) { super(node, dupItemId); XMLNode rawitemdata = node.selectSingleNode("rawitemdata"); int typeCode = Integer.parseInt(rawitemdata.getAttribute("type"), 16); type_ = Type.valueOf(typeCode); String rawData = rawitemdata.getText(); data_ = parseBase64Binary(rawData); } @Override public Type getType() { return type_; } @Override public byte[] getBytes() { return data_; } protected void setBytes(final byte[] data) { data_ = data; } @Override public Object getValue() { return getBytes(); } }