package uk.ac.ebi.fg.annotare2.magetabcheck.checks.sdrf; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.Check; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.MageTabCheck; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.Visit; import uk.ac.ebi.fg.annotare2.magetabcheck.model.sdrf.SdrfCharacteristicAttribute; import uk.ac.ebi.fg.annotare2.magetabcheck.model.sdrf.SdrfSourceNode; import java.util.HashSet; import java.util.Set; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; /** * Created by emma on 21/08/2014. */ @MageTabCheck( ref = "SR06", value = "A source (starting sample for the experiment) should have unique characteristic types e.g. a characteristic of type strain (Characteristics[strain]) should not appear twice or more, regardless of casing (strain/Strain/STRAIN)" ) public class CharacteristicTypeMustVary { boolean wereDuplicatesSpotted = false; @Visit public void visit(SdrfSourceNode sourceNode) { if (!wereDuplicatesSpotted) { Set<String> usedAttributes = new HashSet<String>(); for (SdrfCharacteristicAttribute attr : sourceNode.getCharacteristics()) { String attrType = attr.getType().toLowerCase(); if (usedAttributes.contains(attrType)) { wereDuplicatesSpotted = true; break; } usedAttributes.add(attrType); } } } @Check public void check() { assertThat(wereDuplicatesSpotted, is(false)); } }