package de.skuzzle.polly.sdk;
import java.util.Comparator;
import java.util.Date;
import java.util.Set;
public interface User extends Comparable<User> {
public final static Comparator<User> BY_ID = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getId() - o2.getId();
}
};
public final static Comparator<User> BY_NAME = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getName().compareToIgnoreCase(o2.getName());
}
};
public final static Comparator<User> BY_NICKNAME = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
final String n1 = o1.getCurrentNickName() == null ? "" : o1.getCurrentNickName(); //$NON-NLS-1$
final String n2 = o2.getCurrentNickName() == null ? "" : o2.getCurrentNickName(); //$NON-NLS-1$
return n1.compareToIgnoreCase(n2);
}
};
public final static Comparator<User> BY_ISIDLE = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return new Boolean(o1.isIdle()).compareTo(o2.isIdle());
}
};
public final static Comparator<User> BY_LAST_ACTION = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return new Date(o1.getLastMessageTime()).compareTo(
new Date(o2.getLastMessageTime()));
}
};
public final static Comparator<User> BY_LOGIN = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return new Date(o1.getLoginTime()).compareTo(
new Date(o2.getLoginTime()));
}
};
/**
* Time in milliseconds after which a user is considered to be idle
*/
public final static long IDLE_AFTER = 60 * 1000 * 30; // 30 min
public abstract int getId();
public abstract boolean checkPassword(String password);
public abstract String getHashedPassword();
public abstract void setHashedPassword(String password);
public abstract void setPassword(String password);
public abstract String getName();
public abstract void setName(String name);
public abstract String getCurrentNickName();
public abstract void setCurrentNickName(String nickName);
public abstract Set<String> getAttributeNames();
public abstract Types getAttribute(String name);
public abstract boolean isIdle();
public abstract long getLastMessageTime();
public abstract void setLastMessageTime(long lastIdleTime);
public abstract long getLastIdleTime();
public abstract long getLoginTime();
public boolean isPollyAdmin();
}