package org.cagrid.gridgrouper.service.impl.util;
import edu.internet2.middleware.subject.GridGroupSubject;
import edu.internet2.middleware.subject.GridSourceAdapter;
import edu.internet2.middleware.subject.NonGridSourceAdapter;
import edu.internet2.middleware.subject.Subject;
import edu.internet2.middleware.subject.SubjectNotFoundException;
import org.cagrid.gridgrouper.model.GroupDescriptor;
import org.cagrid.gridgrouper.model.MemberDescriptor;
import org.cagrid.gridgrouper.model.MemberType;
/**
* @author <A HREF="MAILTO:langella@bmi.osu.edu">Stephen Langella</A>
* @author <A HREF="MAILTO:oster@bmi.osu.edu">Scott Oster</A>
* @author <A HREF="MAILTO:hastings@bmi.osu.edu">Shannon Hastings</A>
* @author <A HREF="MAILTO:ervin@bmi.osu.edu">David W. Ervin</A>
* @version $Id: GridGrouperBaseTreeNode.java,v 1.1 2006/08/04 03:49:26 langella
* Exp $
*/
public class SubjectUtils {
public static final GridSourceAdapter GRID_SOURCE = new GridSourceAdapter("grid",
"Grid Grouper: Grid Source Adapter");
public static final NonGridSourceAdapter NON_GRID_SOURCE = new NonGridSourceAdapter("Unknown",
"Grid Grouper: Unknown Source Adapter");
public static Subject getSubject(String id) throws SubjectNotFoundException {
return getSubject(id, false);
}
public static Subject getSubject(String id, boolean allowNonGridSubject) throws SubjectNotFoundException {
try {
return GRID_SOURCE.getSubject(id);
} catch (SubjectNotFoundException e) {
if (allowNonGridSubject) {
return NON_GRID_SOURCE.getSubject(id);
} else {
throw e;
}
}
}
public static Subject getSubject(GroupDescriptor des) throws SubjectNotFoundException {
return new GridGroupSubject(des.getUUID(), des.getName(), null);
}
public static Subject getSubject(MemberDescriptor des) throws SubjectNotFoundException {
if (des.getMemberType().equals(MemberType.GRID)) {
return GRID_SOURCE.getSubject(des.getSubjectId());
} else if (des.getMemberType().equals(MemberType.OTHER)) {
return NON_GRID_SOURCE.getSubject(des.getSubjectId());
} else if (des.getMemberType().equals(MemberType.GROUPER_GROUP)) {
return new GridGroupSubject(des.getSubjectId(), des.getSubjectName(), null);
} else {
throw new SubjectNotFoundException(des.getSubjectId() + " was not found.");
}
}
}