package com.sissi.protocol.iq.vcard; import java.util.Iterator; import java.util.List; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import com.sissi.field.Field; import com.sissi.field.Fields; import com.sissi.field.impl.BeanFields; import com.sissi.io.read.Collector; import com.sissi.io.read.Metadata; import com.sissi.protocol.Protocol; import com.sissi.protocol.iq.data.XInput; import com.sissi.protocol.iq.data.XNickname; import com.sissi.protocol.iq.vcard.field.Photo; import com.sissi.protocol.iq.vcard.field.muc.Activate; /** * @author kim 2013年12月5日 */ @Metadata(uri = VCard.XMLNS, localName = VCard.NAME) @XmlType(namespace = VCard.XMLNS) @XmlRootElement(name = VCard.NAME) public class VCard extends Protocol implements Fields, Collector { public final static String XMLNS = "vcard-temp"; public final static String NAME = "vCard"; private final BeanFields fields = new BeanFields(false); @XmlAttribute public String getXmlns() { return XMLNS; } @XmlElements({ @XmlElement(name = Activate.NAME, type = Activate.class),@XmlElement(name = XInput.NAME, type = XInput.class), @XmlElement(name = XNickname.NAME, type = XNickname.class), @XmlElement(name = Photo.NAME, type = Photo.class) }) public List<Field<?>> getFields() { return this.fields.getFields(); } public VCard add(Field<?> field) { this.fields.add(field); return this; } @Override public void set(String localName, Object ob) { this.fields.add(Field.class.cast(ob)); } public Fields addField(Field<?> field) { this.fields.add(field); return this; } @Override public Iterator<Field<?>> iterator() { return this.fields.iterator(); } @Override public boolean isEmbed() { return this.fields.isEmbed(); } public boolean isEmpty() { return this.fields.isEmpty(); } public Fields findFields(String name) { return this.fields.findFields(name); } @Override public <T extends Field<?>> T findField(String name, Class<T> clazz) { return this.fields.findField(name, clazz); } }