package com.intrbiz.bergamot.ui.validator;
import static com.intrbiz.balsa.BalsaContext.*;
import java.lang.annotation.Annotation;
import java.util.UUID;
import com.intrbiz.bergamot.metadata.IsaObjectId;
import com.intrbiz.bergamot.model.Contact;
import com.intrbiz.bergamot.model.Site;
import com.intrbiz.validator.ValidationException;
import com.intrbiz.validator.Validator;
public class ObjectIdValidator extends Validator<UUID>
{
private boolean mandatory = true;
public ObjectIdValidator()
{
super(UUID.class);
}
@Override
public void configure(Annotation data, Annotation[] additional)
{
if (data instanceof IsaObjectId)
{
this.mandatory = ((IsaObjectId) data).mandatory();
}
}
@Override
public UUID validate(UUID in) throws ValidationException
{
// should the input be null and not mandatory we skip validation
// as there is nothing to validate and that is fine
if (in == null && (! this.mandatory)) return null;
// must be not null
if (this.mandatory && in == null) throw new ValidationException("No object id given");
// lookup the current site
Site site = ((Contact) Balsa().currentPrincipal()).getSite();
// validate
if (! site.isValidObjectId(in)) throw new ValidationException("The given object id is not valid for this site");
return in;
}
}