package org.nextprot.api.commons.bio.variation.prot.seqchange; import org.nextprot.api.commons.bio.variation.prot.ParsingMode; import org.nextprot.api.commons.bio.variation.prot.SequenceVariation; import org.nextprot.api.commons.bio.variation.prot.SequenceVariationBuilder; import java.text.ParseException; /** * Specify how change C is formatted as String and parsed to ProteinSequenceVariation * * Created by fnikitin on 10/07/15. */ public interface SequenceChangeHGVSFormat<C extends SequenceChange> extends SequenceChangeFormat<C> { /** * Parse the source and build ProteinSequenceVariation with given builder * @param source the formatted change * @param builder the builder to build ProteinSequenceVariation * @param mode the parsing mode * @return an instance of ProteinSequenceVariation * @throws ParseException if parsing error occurs */ SequenceVariation parseWithMode(String source, SequenceVariationBuilder.FluentBuilding builder, ParsingMode mode) throws ParseException; /** * Attempts to match the source. * @return <tt>true</tt> if matches the source */ boolean matchesWithMode(String source, ParsingMode mode); default SequenceVariation parse(String source, SequenceVariationBuilder.FluentBuilding builder) throws ParseException { return parseWithMode(source, builder, ParsingMode.STRICT); } default boolean matches(String source) { return matchesWithMode(source, ParsingMode.STRICT); } }