package org.dcache.auth;
import java.io.Serializable;
/**
* This class represents a fully qualified attribute
* name (FQAN). FQANPrincipal is similar in purpose to
* org.glite.security.voms.FQAN, except that the latter does not
* implement the Principal and Serializable interfaces.
*/
public class FQANPrincipal implements GroupPrincipal, Serializable
{
private static final long serialVersionUID = -4242349585261079835L;
private final FQAN _fqan;
private final boolean _isPrimary;
public FQANPrincipal(String fqan)
{
this(fqan, false);
}
public FQANPrincipal(String fqan, boolean isPrimary)
{
this(new FQAN(fqan), isPrimary);
}
public FQANPrincipal(FQAN fqan, boolean isPrimary)
{
if( fqan == null) {
throw new IllegalArgumentException("null value not allowed");
}
_fqan = fqan;
_isPrimary = isPrimary;
}
@Override
public boolean isPrimaryGroup()
{
return _isPrimary;
}
@Override
public boolean equals(Object another)
{
if (another == this) {
return true;
}
if (!(another instanceof FQANPrincipal)) {
return false;
}
FQANPrincipal other = (FQANPrincipal) another;
return _fqan.equals(other._fqan) && _isPrimary == other._isPrimary;
}
/** Returns the FQAN in string form. */
@Override
public String getName()
{
return _fqan.toString();
}
public FQAN getFqan()
{
return _fqan;
}
@Override
public int hashCode()
{
return _fqan.hashCode() ^ (_isPrimary ? 1 : 0);
}
@Override
public String toString()
{
if (_isPrimary) {
return FQANPrincipal.class.getSimpleName() + '[' + _fqan + ",primary]";
} else {
return FQANPrincipal.class.getSimpleName() + '[' + _fqan + ']';
}
}
}