package com.nextprot.api.annotation.builder;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.nextprot.api.core.domain.annotation.Annotation;
import org.nextprot.api.core.domain.annotation.AnnotationIsoformSpecificity;
import org.nextprot.api.core.service.MainNamesService;
import org.nextprot.api.core.service.PublicationService;
import org.nextprot.api.core.service.TerminologyService;
import org.nextprot.commons.statements.Statement;
import org.nextprot.commons.statements.StatementField;
import org.nextprot.commons.statements.TargetIsoformSet;
import org.nextprot.commons.statements.TargetIsoformStatementPosition;
public class EntryAnnotationBuilder extends AnnotationBuilder<Annotation> {
protected EntryAnnotationBuilder(TerminologyService terminologyService, PublicationService publicationService, MainNamesService mainNamesService) {
super(terminologyService, publicationService,mainNamesService);
}
public static EntryAnnotationBuilder newBuilder(TerminologyService terminologyService, PublicationService publicationService, MainNamesService mainNamesService) {
return new EntryAnnotationBuilder(terminologyService, publicationService, mainNamesService);
}
@Override
void setIsoformName(Annotation annotation, String statement) {
// nothing to do here
}
@Override
void setIsoformTargeting(Annotation annotation, Statement statement) {
List<AnnotationIsoformSpecificity> targetingIsoforms = new ArrayList<AnnotationIsoformSpecificity>();
Set<TargetIsoformStatementPosition> tispSet = TargetIsoformSet.deSerializeFromJsonString(statement.getValue(StatementField.TARGET_ISOFORMS));
for (TargetIsoformStatementPosition tisp : tispSet) {
AnnotationIsoformSpecificity ais = new AnnotationIsoformSpecificity();
String isoAc=tisp.getIsoformAccession();
ais.setIsoformAccession(isoAc);
ais.setFirstPosition(tisp.getBegin());
ais.setLastPosition(tisp.getEnd());
ais.setSpecificity(tisp.getSpecificity());
ais.setName(tisp.getName());
targetingIsoforms.add(ais);
}
annotation.addTargetingIsoforms(targetingIsoforms);
}
@Override
public Annotation get() {
return new Annotation();
}
}