/* * This was taken from UWSLibrary DefaultJobOwner because that is final class * we need to add only */ import java.util.HashMap; import java.util.Map; import java.util.Set; import uws.job.JobList; import uws.job.UWSJob; import uws.job.user.JobOwner; public final class UWSMCutoutJobOwner implements JobOwner { private AuthPolicy auth; private final String id; private String pseudo; private HashMap<String,Object> otherData = null; public UWSMCutoutJobOwner(final AuthPolicy auth){ this.auth = auth; this.id = auth.getUserName(); this.pseudo = this.id; } public UWSMCutoutJobOwner(final String name){ this(name, name); } public UWSMCutoutJobOwner(final String id, final String pseudo){ this.id = id; this.pseudo = pseudo; } public String[] getGroups(){ return auth.getUserGroups();} @Override public final String getID(){ return id; } @Override public final String getPseudo(){ return pseudo; } public final void setPseudo(final String pseudo){ this.pseudo = pseudo; } /** * * By default: ALL users have the READ permission for ALL jobs lists. * * @see uws.job.user.JobOwner#hasReadPermission(uws.job.JobList) * */ @Override public boolean hasReadPermission(JobList jl){ return true; } /** * * By default: ALL users have the WRITE permission for ALL jobs lists. * * @see uws.job.user.JobOwner#hasWritePermission(uws.job.JobList) * */ @Override public boolean hasWritePermission(JobList jl){ return true; } /** * * By default: ONLY owners of the given job have the READ permission. * * @see uws.job.user.JobOwner#hasReadPermission(uws.job.UWSJob) * */ @Override public boolean hasReadPermission(UWSJob job){ return (job == null) || (job.getOwner() == null) || (job.getOwner().equals(this)); } /** * * By default: ONLY owners of the given job have the WRITE permission. * * @see uws.job.user.JobOwner#hasWritePermission(uws.job.UWSJob) * */ @Override public boolean hasWritePermission(UWSJob job){ return (job == null) || (job.getOwner() == null) || (job.getOwner().equals(this)); } /** * * By default: ONLY owners of the given job have the EXECUTE permission. * * @see uws.job.user.JobOwner#hasExecutePermission(uws.job.UWSJob) * */ @Override public boolean hasExecutePermission(UWSJob job){ return (job == null) || (job.getOwner() == null) || (job.getOwner().equals(this)); } public String putUserData(final String name, final String value){ if (otherData == null) otherData = new HashMap<String,Object>(); return (String)otherData.put(name, value); } public String getUserData(final String name){ return (otherData == null) ? null : (String)otherData.get(name); } public String removeUserData(final String name){ return (otherData == null) ? null : (String)otherData.remove(name); } public Set<String> getAllUserData(){ return (otherData == null) ? null : otherData.keySet(); } @Override public Map<String,Object> getDataToSave(){ return otherData; } @Override public void restoreData(Map<String,Object> data){ if (data == null || data.isEmpty()) return; if (otherData == null) otherData = new HashMap<String,Object>(data.size()); otherData.putAll(data); } /** * * By default: the user ID. * * @see java.lang.Object#toString() * */ @Override public String toString(){ return id; } /** * * By default: a {@link UWSMCutoutJobOwner} is equal to any {@link JobOwner} only if their ID are equals. * * @see java.lang.Object#equals(java.lang.Object) * */ @Override public boolean equals(Object obj){ if (obj == null || !(obj instanceof JobOwner)) return false; String objId = ((JobOwner)obj).getID(); return (id == null && objId == null) || (id != null && objId != null && id.equals(objId)); } /** * * By default: this function returns the hashCode of the ID. * * @see java.lang.Object#hashCode() * */ @Override public int hashCode(){ return id.hashCode(); } }