package org.molgenis.core.service; import java.util.ArrayList; import java.util.List; import org.molgenis.core.Publication; import org.molgenis.core.vo.PublicationVO; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; public class PublicationService { private Database db = null; private static PublicationService publicationService = null; public static final String PUBMED_URL = "http://www.ncbi.nlm.nih.gov/pubmed/"; // private constructor, use singleton instance public PublicationService(Database db) { this.db = db; } public static PublicationService getInstance(Database db) { // if (publicationService == null) publicationService = new PublicationService(db); return publicationService; } public List<PublicationVO> getAll() throws DatabaseException { return this.toPublicationVOList(this.db.query(Publication.class).sortASC(Publication.TITLE).find()); } public void insert(PublicationVO publicationVO) throws DatabaseException { Publication publication = this.toPublication(publicationVO); this.db.add(publication); } private List<PublicationVO> toPublicationVOList(List<Publication> publications) { List<PublicationVO> result = new ArrayList<PublicationVO>(); for (Publication publication : publications) result.add(this.toPublicationVO(publication)); return result; } private PublicationVO toPublicationVO(Publication publication) { PublicationVO publicationVO = new PublicationVO(); publicationVO.setAuthors(publication.getAuthorList()); publicationVO.setName(publication.getName()); publicationVO.setPubmedId(publication.getPubmedID_Name()); publicationVO.setPubmedUrl(PublicationService.PUBMED_URL + publication.getPubmedID_Name()); publicationVO.setStatus(publication.getStatus_Name()); publicationVO.setTitle(publication.getTitle()); return publicationVO; } private Publication toPublication(PublicationVO publicationVO) { Publication publication = new Publication(); publication.setAuthorList(publicationVO.getAuthors()); publication.setName(publicationVO.getName()); publication.setPubmedID_Name(publicationVO.getPubmedId()); publication.setTitle(publicationVO.getTitle()); return publication; } }