package com.kedzie.vbox.server;
import java.io.Serializable;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.common.base.Objects;
import com.kedzie.vbox.app.Utils;
public class Server implements Parcelable, Serializable {
private static final long serialVersionUID = 1L;
public final static String BUNDLE = "server";
public static final Parcelable.Creator<Server> CREATOR = new Parcelable.Creator<Server>() {
public Server createFromParcel(Parcel in) {
Server s = new Server();
s.setId(in.readLong());
s.setName(in.readString());
s.setHost(in.readString());
boolean []tmp = new boolean[1];
in.readBooleanArray(tmp);
s.setSSL(tmp[0]);
s.setPort(in.readInt());
s.setUsername(in.readString());
s.setPassword(in.readString());
return s;
}
public Server[] newArray(int size) { return new Server[size]; }
};
private Long id=-1L;
private String name="";
private Integer port=18083;
private String host="";
private String username="";
private String password="";
private boolean ssl;
public Server() {}
public Server(Long id, String name, String host, Boolean ssl, Integer port, String username, String password) {
this.id=id;
this.name=name;
this.ssl=ssl;
this.port = port;
this.host = host;
this.username = username;
this.password=password;
}
public Server(String name, String host, Boolean ssl, Integer port, String username, String password) {
this(-1L, name, host, ssl, port, username, password);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
dest.writeString(name);
dest.writeString(host);
dest.writeBooleanArray(new boolean[] { ssl });
dest.writeInt(port);
dest.writeString(username);
dest.writeString(password);
}
@Override
public int describeContents() {
return 0;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public boolean isSSL() {
return ssl;
}
public void setSSL(boolean ssl) {
this.ssl = ssl;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toUriString() {
return (ssl ? "https://" : "http://") + getHost() + ":" + getPort();
}
public Uri toURL() {
return Uri.parse(toUriString());
}
public String toString() {
return !Utils.isEmpty(name) ? name : toUriString();
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Server that = (Server) obj;
return Objects.equal(id, that.id);
}
}