package org.fcrepo.server.validation.ecm; import java.util.ArrayList; import java.util.List; import org.fcrepo.server.errors.ServerException; import org.fcrepo.server.storage.DOReader; import org.fcrepo.server.storage.types.Datastream; import org.fcrepo.server.storage.types.Validation; import org.fcrepo.server.validation.ecm.jaxb.DsTypeModel; import org.fcrepo.server.validation.ecm.jaxb.Form; /** * Created by IntelliJ IDEA. * User: abr * Date: Jun 26, 2010 * Time: 11:54:29 AM * To change this template use File | Settings | File Templates. */ public class FormValidator { void checkFormAndMime(DsTypeModel typeModel, Datastream objectDatastream, Validation validation, DOReader contentmodelReader) throws ServerException { List<Form> forms = typeModel.getForm(); boolean valid = false; if (forms.size() == 0){ valid = true; } for (Form form : forms) { boolean uriMatch = true; if (form.getFORMATURI() != null) { if (!form.getFORMATURI().equals(objectDatastream.DSFormatURI)) { uriMatch = false; } } if (!uriMatch) { continue; } boolean mimeMatch = true; if (form.getMIME() != null) { if (!form.getMIME().equals(objectDatastream.DSMIME)) { mimeMatch = false; } } if (mimeMatch && uriMatch) { valid = true; break; } } if (!valid) { String dsid = objectDatastream.DatastreamID; List<String> problems = validation.getDatastreamProblems().get(dsid); if (problems == null) { problems = new ArrayList<String>(); validation.getDatastreamProblems().put(dsid, problems); } //TODO some error code here? String contentmodel = contentmodelReader.GetObjectPID(); problems.add(Errors.invalidFormatURIorMimeType(dsid,contentmodel)); validation.setValid(false); } } }