package de.persosim.simulator.protocols.ta;
import static org.globaltester.logging.BasicLogger.WARN;
import static org.globaltester.logging.BasicLogger.log;
import de.persosim.simulator.utils.BitField;
/**
* This class represents authorization information backed by {@link BitField} storage.
*
* @author slutters
*
*/
public class Authorization {
protected BitField authorization;
public Authorization() {
}
public Authorization(BitField authorization) {
this.authorization = authorization;
}
public BitField getAuthorization() {
return authorization;
}
/**
* Construct the effective Authorization by calculating a logical and-operation on the
* {@link BitField} representations of role and authorization.
*
* @param authorization
* @return
*/
public Authorization buildEffectiveAuthorization(Authorization authorization) {
BitField newAuthorization = authorization.getAuthorization();
BitField effectiveAuth = newAuthorization.and(this.authorization);
if(this.authorization.getNumberOfBits() != newAuthorization.getNumberOfBits()) {
log(this.getClass(), "updating authorizations of different length", WARN);
}
return new Authorization(effectiveAuth);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
return authorization.equals(((Authorization) obj).authorization);
}
@Override
public String toString() {
return authorization.toString();
}
}