package com.atomjack.vcfp.model; import android.os.Parcel; import android.os.Parcelable; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; import org.simpleframework.xml.core.Commit; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @Root(strict=false) public class Device implements Parcelable { @Attribute(required=false) public String name; @Attribute(required=false) public String product; @Attribute(required=false) public String productVersion; @Attribute(required=false) public String clientIdentifier; @Attribute(required=false) public String sourceTitle; @Attribute(required=false) public String accessToken; @ElementList(required=false, inline=true, entry="Connection") public List<Connection> connections = new ArrayList<Connection>(); public List<String> provides; public Date lastSeenDate; public boolean owned; @Attribute(name="provides") private String providesStr; @Attribute(name="lastSeenAt") public int lastSeenAt; @Attribute(name="owned") private int ownedInt; public Device() { } @Commit @SuppressWarnings("unused") public void build() { provides = Arrays.asList(providesStr.split(",")); lastSeenDate = new Date(lastSeenAt*1000); owned = ownedInt == 1; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(name); parcel.writeString(product); parcel.writeString(productVersion); parcel.writeString(clientIdentifier); parcel.writeString(sourceTitle); parcel.writeString(accessToken); parcel.writeTypedList(connections); parcel.writeList(provides); parcel.writeSerializable(lastSeenDate); parcel.writeInt(owned ? 1 : 0); parcel.writeInt(lastSeenAt); } public Device(Parcel in) { name = in.readString(); product = in.readString(); productVersion = in.readString(); clientIdentifier = in.readString(); sourceTitle = in.readString(); accessToken = in.readString(); in.readTypedList(connections, Connection.CREATOR); in.readStringList(provides); lastSeenDate = (Date)in.readSerializable(); owned = in.readInt() == 1; lastSeenAt = in.readInt(); } @Override public int describeContents() { return 0; } public static final Parcelable.Creator<Device> CREATOR = new Parcelable.Creator<Device>() { public Device createFromParcel(Parcel in) { return new Device(in); } public Device[] newArray(int size) { return new Device[size]; } }; }