package org.genedb.crawl.dao.backend; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.genedb.crawl.CrawlException; import org.genedb.crawl.mappers.OrganismsMapper; import org.genedb.crawl.model.Organism; import org.genedb.crawl.model.Property; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class OrganismsDAO extends BaseDAO implements org.genedb.crawl.dao.OrganismsDAO { private static Logger logger = Logger.getLogger(OrganismsDAO.class); @Autowired private OrganismsMapper organismsMapper; /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#listOrganisms() */ @Override public List<Organism> listOrganisms() throws CrawlException { List<Organism> list = organismsMapper.list(); return addProps(list); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#getByID(int) */ @Override public List<Organism> getByID(int id) throws CrawlException { ArrayList<Organism> list = new ArrayList<Organism>(); list.add(organismsMapper.getByID(id)); return addProps(list); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#getByTaxonID(int) */ @Override public List<Organism> getByTaxonID(int taxonID) throws CrawlException { ArrayList<Organism> list = new ArrayList<Organism>(); list.add(organismsMapper.getByTaxonID(String.valueOf(taxonID))); return addProps(list); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#getByCommonName(java.lang.String) */ @Override public List<Organism> getByCommonName(String commonName) throws CrawlException { ArrayList<Organism> list = new ArrayList<Organism>(); list.add(organismsMapper.getByCommonName(commonName)); return addProps(list); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#getByString(java.lang.String) */ @Override public List<Organism> getByString(String organism) throws CrawlException { ArrayList<Organism> list = new ArrayList<Organism>(); list.add(util.getOrganism(organism)); return addProps(list); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#property(java.lang.String, java.lang.String, java.lang.String) */ @Override public Property property(String organism, String term, String cv) { Organism o = util.getOrganism(organism); return organismsMapper.getOrganismProp(o, cv, term); } /* (non-Javadoc) * @see org.genedb.crawl.dao.backend.OrganismsDAO#properties(java.lang.String, java.lang.String) */ @Override public List<Property> properties(String organism, String cv) { Organism o = util.getOrganism(organism); return organismsMapper.getOrganismProps(o, cv); } private List<Organism> addProps(List<Organism> list) { for (Organism organism : list) { Property prop = organismsMapper.getOrganismProp(organism, "genedb_misc", "translationTable"); if (prop != null) { organism.translation_table = Integer.parseInt(prop.value); } organism.species = organism.species.trim(); /* * This is a hack to make remove the strain from species name! */ if (organism.strain != null) { String strain = organism.strain; int strainPosition = organism.species.indexOf(strain); if (strainPosition > -1) { String newSpecies = organism.species.substring(0,strainPosition).trim(); logger.warn(String.format("common_name:: '%s', genus::'%s', species:: '%s', strain:: '%s', displaying species as -------> '%s'", organism.common_name, organism.genus, organism.species, organism.strain, newSpecies)); organism.species = newSpecies; } //organism.name = String.format("%s %s %s", organism.genus, organism.species, organism.strain).trim(); } } return list; } }