package mediabrowser.model.apiclient;
import mediabrowser.model.extensions.*;
public class ServerCredentials
{
private java.util.ArrayList<ServerInfo> Servers;
public final java.util.ArrayList<ServerInfo> getServers()
{
return Servers;
}
public final void setServers(java.util.ArrayList<ServerInfo> value)
{
Servers = value;
}
private String ConnectUserId;
public final String getConnectUserId()
{
return ConnectUserId;
}
public final void setConnectUserId(String value)
{
ConnectUserId = value;
}
private String ConnectAccessToken;
public final String getConnectAccessToken()
{
return ConnectAccessToken;
}
public final void setConnectAccessToken(String value)
{
ConnectAccessToken = value;
}
public ServerCredentials()
{
setServers(new java.util.ArrayList<ServerInfo>());
}
public final void AddOrUpdateServer(ServerInfo server)
{
if (server == null)
{
throw new IllegalArgumentException("server");
}
// Clone the existing list of servers
java.util.ArrayList<ServerInfo> list = new java.util.ArrayList<ServerInfo>();
for (ServerInfo serverInfo : getServers())
{
list.add(serverInfo);
}
int index = FindIndex(list, server.getId());
if (index != -1)
{
ServerInfo existing = list.get(index);
// Take the most recent DateLastAccessed
if (server.getDateLastAccessed().compareTo(existing.getDateLastAccessed()) > 0)
{
existing.setDateLastAccessed(server.getDateLastAccessed());
}
existing.setUserLinkType(server.getUserLinkType());
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getAccessToken()))
{
existing.setAccessToken(server.getAccessToken());
existing.setUserId(server.getUserId());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getExchangeToken()))
{
existing.setExchangeToken(server.getExchangeToken());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getRemoteAddress()))
{
existing.setRemoteAddress(server.getRemoteAddress());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getConnectServerId()))
{
existing.setConnectServerId(server.getConnectServerId());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getLocalAddress()))
{
existing.setLocalAddress(server.getLocalAddress());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getManualAddress()))
{
existing.setManualAddress(server.getManualAddress());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getName()))
{
existing.setName(server.getName());
}
if (server.getWakeOnLanInfos() != null && server.getWakeOnLanInfos().size() > 0)
{
existing.setWakeOnLanInfos(new java.util.ArrayList<WakeOnLanInfo>());
for (WakeOnLanInfo info : server.getWakeOnLanInfos())
{
existing.getWakeOnLanInfos().add(info);
}
}
if (server.getLastConnectionMode() != null)
{
existing.setLastConnectionMode(server.getLastConnectionMode());
}
for (ServerUserInfo user : server.getUsers())
{
existing.AddOrUpdate(user);
}
}
else
{
list.add(server);
}
setServers(list);
}
private int FindIndex(java.util.ArrayList<ServerInfo> servers, String id)
{
int index = 0;
for (ServerInfo server : servers)
{
if (StringHelper.EqualsIgnoreCase(id, server.getId()))
{
return index;
}
index++;
}
return -1;
}
public final ServerInfo GetServer(String id)
{
for (ServerInfo server : getServers())
{
if (StringHelper.EqualsIgnoreCase(id, server.getId()))
{
return server;
}
}
return null;
}
}