package com.rayo.gateway.jmx;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.jmx.export.annotation.ManagedResource;
import com.rayo.server.storage.model.Application;
/**
* <p>This MBean represents a client application connected to the gateway.</p>
*
* @author martin
*
*/
@ManagedResource(objectName="com.rayo.gateway:Type=ClientApplication", description="Client Applications")
public class ClientApplication implements ClientApplicationMXBean, Comparable<ClientApplication> {
private List<String> resources = new ArrayList<String>();
private String appId;
private String jid;
private String platform;
private String name;
private String accountId;
private String permissions;
public ClientApplication(Application application) {
this.appId = application.getAppId();
this.jid = application.getJid();
this.platform = application.getPlatform();
this.name = application.getName();
this.accountId = application.getAccountId();
this.permissions = application.getPermissions();
}
@Override
public List<String> getResources() {
return resources;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ClientApplication)) return false;
return (((ClientApplication)obj).jid.toString().equals(jid.toString()));
}
@Override
public int hashCode() {
return jid.toString().hashCode();
}
public void addResources(Collection<String> resourcesForClient) {
resources.addAll(resourcesForClient);
}
/**
* Gets the JID of this application
*
* @return JID Application's JID
*/
public String getJID() {
return jid;
}
public String getPlatform() {
return platform;
}
public void setPlatform(String platform) {
this.platform = platform;
}
public void setJid(String jid) {
this.jid = jid;
}
public String getResource() {
return jid.substring(jid.indexOf("/") + 1, jid.length());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public String getPermissions() {
return permissions;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
@Override
public int compareTo(ClientApplication app) {
return appId.compareTo(app.getAppId());
}
}