package com.lechucksoftware.proxy.proxysettings.db;
import android.os.Parcel;
import android.os.Parcelable;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.UUID;
/**
* Created by Marco on 23/10/13.
*/
public class BaseEntity implements Parcelable
{
private UUID uuid;
private long id;
private long creationDate;
private long lastModifiedDate;
private boolean isPersisted;
private boolean isSelected;
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeSerializable(this.uuid);
dest.writeLong(this.id);
dest.writeLong(this.creationDate);
dest.writeLong(this.lastModifiedDate);
dest.writeByte(isPersisted ? (byte) 1 : (byte) 0);
dest.writeByte(isSelected ? (byte) 1 : (byte) 0);
}
public BaseEntity(Parcel in)
{
this.uuid = (UUID) in.readSerializable();
this.id = in.readLong();
this.creationDate = in.readLong();
this.lastModifiedDate = in.readLong();
this.isPersisted = in.readByte() != 0;
this.isSelected = in.readByte() != 0;
}
public BaseEntity()
{
setPersisted(false);
setSelected(false);
uuid = UUID.randomUUID();
}
public UUID getUUID()
{
return uuid;
}
public Long getId()
{
return id;
}
public void setId(long id)
{
this.id = id;
}
public void setCreationDate(long date)
{
creationDate = date;
}
public Date getCreationDate()
{
Date d = new Date(creationDate);
return d;
}
public void setModifiedDate(long date)
{
lastModifiedDate = date;
}
public Date getModifiedDate()
{
Date d = new Date(lastModifiedDate);
return d;
}
public String getDebugInfo()
{
StringBuilder sb = new StringBuilder();
for (Field f : this.getClass().getFields())
{
try
{
String name = f.getName();
String value = f.get(this).toString();
sb.append(String.format("%s: %s ",name,value));
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
return sb.toString();
}
public boolean isPersisted()
{
return isPersisted;
}
public void setPersisted(boolean isPersisted)
{
this.isPersisted = isPersisted;
}
public boolean isSelected()
{
return isSelected;
}
public void setSelected(boolean isSelected)
{
this.isSelected = isSelected;
}
@Override
public int describeContents() { return 0; }
}