package com.lechucksoftware.proxy.proxysettings.db;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import java.lang.reflect.Field;
/**
* Created by Marco on 13/09/13.
*/
public class PacEntity extends BaseEntity implements Parcelable, Comparable<PacEntity>
{
private Uri pacUriFile;
private int usedByCount;
@Override
public void writeToParcel(Parcel dest, int flags)
{
super.writeToParcel(dest,flags);
dest.writeParcelable(this.pacUriFile, 0);
dest.writeInt(this.usedByCount);
}
private PacEntity(Parcel in)
{
super(in);
this.pacUriFile = in.readParcelable(Uri.class.getClassLoader());
this.usedByCount = in.readInt();
}
public static final Creator<PacEntity> CREATOR = new Creator<PacEntity>()
{
public PacEntity createFromParcel(Parcel source) {return new PacEntity(source);}
public PacEntity[] newArray(int size) {return new PacEntity[size];}
};
public PacEntity()
{
super();
pacUriFile = Uri.EMPTY;
usedByCount = 0;
}
public PacEntity(PacEntity pacEntity)
{
super();
this.pacUriFile = pacEntity.pacUriFile;
this.usedByCount = pacEntity.usedByCount;
}
public boolean getInUse()
{
return usedByCount > 0;
}
public int getUsedByCount()
{
return usedByCount;
}
@Override
public boolean equals(Object another)
{
Boolean result = false;
if ((another instanceof PacEntity))
{
PacEntity anotherProxy = (PacEntity) another;
if (anotherProxy.pacUriFile.equals(this.pacUriFile)
&& anotherProxy.getInUse() == this.getInUse())
{
result = true;
}
else
{
result = false;
}
}
return result;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append(String.format("PAC: '%s'", pacUriFile.toString()));
sb.append(String.format(" used by %s AP", usedByCount));
return sb.toString();
}
public String getDebugInfo()
{
StringBuilder sb = new StringBuilder();
for (Field f : PacEntity.class.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 void setUsedByCount(int usedBy)
{
this.usedByCount = usedBy;
}
@Override
public int compareTo(PacEntity pacEntity)
{
int result = this.pacUriFile.compareTo(pacEntity.pacUriFile);
return result;
}
public void setPacUrlFile(String pacUrlFile)
{
pacUriFile = Uri.parse(pacUrlFile);
}
public Uri getPacUriFile()
{
return pacUriFile;
}
@Override
public int describeContents() { return 0; }
}