package net.sourceforge.solexatools.validation; import net.sourceforge.seqware.common.business.ExperimentService; import net.sourceforge.seqware.common.model.Experiment; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; /** * <p> * ExperimentValidator class. * </p> * * @author boconnor * @version $Id: $Id */ public class ExperimentValidator implements Validator { private ExperimentService experimentService; /** * <p> * Constructor for ExperimentValidator. * </p> */ public ExperimentValidator() { super(); } /** * {@inheritDoc} * * @param clazz * @return */ @SuppressWarnings("rawtypes") @Override public boolean supports(Class clazz) { return Experiment.class.equals(clazz); } /** * {@inheritDoc} * * Validates the specified Object. * * @param obj * @param errors */ @Override public void validate(Object obj, Errors errors) { Experiment experiment = (Experiment) obj; ValidationUtils.rejectIfEmpty(errors, "title", "experiment.required.title"); this.validateTitle(experiment, errors); ValidationUtils.rejectIfEmpty(errors, "platformInt", "experiment.required.platformInt"); ValidationUtils.rejectIfEmpty(errors, "sequenceSpace", "experiment.required.sequenceSpace"); ValidationUtils.rejectIfEmpty(errors, "qualityType", "experiment.required.qualityType"); ValidationUtils.rejectIfEmpty(errors, "expLibDesignName", "experiment.required.expLibDesignName"); ValidationUtils.rejectIfEmpty(errors, "expLibDesignStrategy", "experiment.required.expLibDesignStrategy"); ValidationUtils.rejectIfEmpty(errors, "expLibDesignSource", "experiment.required.expLibDesignSource"); ValidationUtils.rejectIfEmpty(errors, "expLibDesignSelection", "experiment.required.expLibDesignSelection"); this.validateExpectedNumberRuns(experiment, errors); this.validateExpectedNumberReads(experiment, errors); } /** * <p> * validateExpectedNumberRuns. * </p> * * @param experiment * a {@link net.sourceforge.seqware.common.model.Experiment} object. * @param errors * a {@link org.springframework.validation.Errors} object. */ public void validateExpectedNumberRuns(Experiment experiment, Errors errors) { if (errors.getFieldError("strExpectedNumberRuns") == null) { boolean isHasError = false; String strRuns = experiment.getStrExpectedNumberRuns(); if (strRuns != null && !strRuns.isEmpty()) { Integer runs = null; try { runs = Integer.parseInt(strRuns); } catch (Exception e) { isHasError = true; errors.reject("experiment.error.type.expectedRuns"); } if (!isHasError) { if (runs < 1) { isHasError = true; errors.reject("experiment.error.value.expectedRuns"); } } if (!isHasError) { experiment.setExpectedNumberRuns(runs); } } } } /** * <p> * validateExpectedNumberReads. * </p> * * @param experiment * a {@link net.sourceforge.seqware.common.model.Experiment} object. * @param errors * a {@link org.springframework.validation.Errors} object. */ public void validateExpectedNumberReads(Experiment experiment, Errors errors) { if (errors.getFieldError("strExpectedNumberReads") == null) { boolean isHasError = false; String strReads = experiment.getStrExpectedNumberReads(); if (strReads != null && !strReads.isEmpty()) { Long reads = null; try { reads = Long.parseLong(strReads); } catch (Exception e) { isHasError = true; errors.reject("experiment.error.type.expectedReds"); } if (!isHasError) { if (reads < 1) { isHasError = true; errors.reject("experiment.error.value.expectedReds"); } } if (!isHasError) { experiment.setExpectedNumberReads(reads); } } } } /** * Determines if the experiment's email address and confirm email address match. * * @param errors * Errors object for validation errors * @param experiment * a {@link net.sourceforge.seqware.common.model.Experiment} object. */ public void validateTitle(Experiment experiment, Errors errors) { if (errors.getFieldError("title") == null) { /* The individual fields have passed validation. */ if (this.getExperimentService().findByTitle(experiment.getTitle()) != null) { errors.reject("error.match.title"); } } } /** * <p> * Getter for the field <code>experimentService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.ExperimentService} object. */ public ExperimentService getExperimentService() { return experimentService; } /** * <p> * Setter for the field <code>experimentService</code>. * </p> * * @param experimentService * a {@link net.sourceforge.seqware.common.business.ExperimentService} object. */ public void setExperimentService(ExperimentService experimentService) { this.experimentService = experimentService; } } // ex:sw=4:ts=4: