package org.nextprot.api.core.utils.dbxref.conv;
import org.nextprot.api.commons.constants.IdentifierOffset;
import org.nextprot.api.core.domain.CvDatabasePreferredLink;
import org.nextprot.api.core.domain.DbXref;
import org.nextprot.api.core.utils.dbxref.resolver.XRefDatabase;
import java.util.ArrayList;
import java.util.List;
class EmblDbXrefConverter implements DbXrefPropertyToXrefConverter {
@Override
public List<DbXref> convert(DbXref xref) {
List<DbXref> list = new ArrayList<>(3);
for (DbXref.DbXrefProperty property : xref.getProperties()) {
if ("genomic sequence ID".equals(property.getName())) {
list.add(createEmblDbXrefFromDbXrefProperty(xref, property, CvDatabasePreferredLink.EMBL_GENE));
}
else if ("protein sequence ID".equals(property.getName())) {
list.add(createEmblDbXrefFromDbXrefProperty(xref, property, CvDatabasePreferredLink.EMBL_PROTEIN));
}
}
return list;
}
private DbXref createEmblDbXrefFromDbXrefProperty(DbXref xref, DbXref.DbXrefProperty property, CvDatabasePreferredLink preferredLink) {
DbXref dbXRef = new DbXref();
dbXRef.setProteinAccessionReferer("GIVE A REFERER NAME!!!!");
dbXRef.setDbXrefId(IdentifierOffset.XREF_PROPERTY_OFFSET +property.getPropertyId());
dbXRef.setAccession(property.getValue());
dbXRef.setDatabaseCategory("Sequence databases");
dbXRef.setDatabaseName(XRefDatabase.EMBL.getName());
dbXRef.setUrl(xref.getUrl());
dbXRef.setLinkUrl(preferredLink.getLink());
dbXRef.setProperties(new ArrayList<>());
return dbXRef;
}
}