class DOIIdentifierProvider extends IdentifierProvider {

    public DSpaceObject getObjectByDOI(Context context, String identifier)
            throws SQLException, DOIIdentifierException, IllegalArgumentException
    {
        String doi = doiService.formatIdentifier(identifier);
        DOI doiRow = doiService.findByDoi(context, doi.substring(DOI.SCHEME.length()));
        
        if (null == doiRow)
        {
            return null;
        }
        
        if (doiRow.getDSpaceObject() == null)
        {
            log.error("Found DOI " + doi +
                    " in database, but no assigned Object could be found.");
            throw new IllegalStateException("Found DOI " + doi +
                    " in database, but no assigned Object could be found.");
        }
        
        return doiRow.getDSpaceObject();
    }

    protected  DOIIdentifierProvider();

}