package mediabrowser.model.apiclient;
import mediabrowser.model.connect.*;
import mediabrowser.model.extensions.*;
import mediabrowser.model.system.*;
public class ServerInfo
{
private java.util.ArrayList<ServerUserInfo> Users;
public final java.util.ArrayList<ServerUserInfo> getUsers()
{
return Users;
}
public final void setUsers(java.util.ArrayList<ServerUserInfo> value)
{
Users = value;
}
private String Name;
public final String getName()
{
return Name;
}
public final void setName(String value)
{
Name = value;
}
private String Id;
public final String getId()
{
return Id;
}
public final void setId(String value)
{
Id = value;
}
private String ConnectServerId;
public final String getConnectServerId()
{
return ConnectServerId;
}
public final void setConnectServerId(String value)
{
ConnectServerId = value;
}
private String LocalAddress;
public final String getLocalAddress()
{
return LocalAddress;
}
public final void setLocalAddress(String value)
{
LocalAddress = value;
}
private String RemoteAddress;
public final String getRemoteAddress()
{
return RemoteAddress;
}
public final void setRemoteAddress(String value)
{
RemoteAddress = value;
}
private String ManualAddress;
public final String getManualAddress()
{
return ManualAddress;
}
public final void setManualAddress(String value)
{
ManualAddress = value;
}
private String UserId;
public final String getUserId()
{
return UserId;
}
public final void setUserId(String value)
{
UserId = value;
}
private String AccessToken;
public final String getAccessToken()
{
return AccessToken;
}
public final void setAccessToken(String value)
{
AccessToken = value;
}
private java.util.ArrayList<WakeOnLanInfo> WakeOnLanInfos;
public final java.util.ArrayList<WakeOnLanInfo> getWakeOnLanInfos()
{
return WakeOnLanInfos;
}
public final void setWakeOnLanInfos(java.util.ArrayList<WakeOnLanInfo> value)
{
WakeOnLanInfos = value;
}
private java.util.Date DateLastAccessed = new java.util.Date(0);
public final java.util.Date getDateLastAccessed()
{
return DateLastAccessed;
}
public final void setDateLastAccessed(java.util.Date value)
{
DateLastAccessed = value;
}
private String ExchangeToken;
public final String getExchangeToken()
{
return ExchangeToken;
}
public final void setExchangeToken(String value)
{
ExchangeToken = value;
}
private UserLinkType UserLinkType = null;
public final UserLinkType getUserLinkType()
{
return UserLinkType;
}
public final void setUserLinkType(UserLinkType value)
{
UserLinkType = value;
}
private ConnectionMode LastConnectionMode = null;
public final ConnectionMode getLastConnectionMode()
{
return LastConnectionMode;
}
public final void setLastConnectionMode(ConnectionMode value)
{
LastConnectionMode = value;
}
public ServerInfo()
{
setWakeOnLanInfos(new java.util.ArrayList<WakeOnLanInfo>());
setUsers(new java.util.ArrayList<ServerUserInfo>());
}
public final void ImportInfo(PublicSystemInfo systemInfo)
{
setName(systemInfo.getServerName());
setId(systemInfo.getId());
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(systemInfo.getLocalAddress()))
{
setLocalAddress(systemInfo.getLocalAddress());
}
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(systemInfo.getWanAddress()))
{
setRemoteAddress(systemInfo.getWanAddress());
}
SystemInfo fullSystemInfo = (SystemInfo)((systemInfo instanceof SystemInfo) ? systemInfo : null);
if (fullSystemInfo != null)
{
setWakeOnLanInfos(new java.util.ArrayList<WakeOnLanInfo>());
if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(fullSystemInfo.getMacAddress()))
{
WakeOnLanInfo tempVar = new WakeOnLanInfo();
tempVar.setMacAddress(fullSystemInfo.getMacAddress());
getWakeOnLanInfos().add(tempVar);
}
}
}
public final String GetAddress(ConnectionMode mode)
{
switch (mode)
{
case Local:
return getLocalAddress();
case Manual:
return getManualAddress();
case Remote:
return getRemoteAddress();
default:
throw new IllegalArgumentException("Unexpected ConnectionMode");
}
}
public final void AddOrUpdate(ServerUserInfo user)
{
if (user == null)
{
throw new IllegalArgumentException("user");
}
// Clone the existing list of users
java.util.ArrayList<ServerUserInfo> list = new java.util.ArrayList<ServerUserInfo>();
for (ServerUserInfo serverUserInfo : getUsers())
{
list.add(serverUserInfo);
}
int index = FindIndex(list, user.getId());
if (index != -1)
{
ServerUserInfo existing = list.get(index);
// Merge the data
existing.setIsSignedInOffline(user.getIsSignedInOffline());
}
else
{
list.add(user);
}
setUsers(list);
}
private int FindIndex(java.util.ArrayList<ServerUserInfo> users, String id)
{
int index = 0;
for (ServerUserInfo user : users)
{
if (StringHelper.EqualsIgnoreCase(id, user.getId()))
{
return index;
}
index++;
}
return -1;
}
}