001 /*
002 Copyright (c) 2012, Regents of the University of Colorado
003 All rights reserved.
004
005 Redistribution and use in source and binary forms, with or without modification,
006 are permitted provided that the following conditions are met:
007
008 * Redistributions of source code must retain the above copyright notice, this
009 list of conditions and the following disclaimer.
010
011 * Redistributions in binary form must reproduce the above copyright notice,
012 this list of conditions and the following disclaimer in the documentation
013 and/or other materials provided with the distribution.
014
015 * Neither the name of the University of Colorado nor the names of its
016 contributors may be used to endorse or promote products derived from this
017 software without specific prior written permission.
018
019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
022 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
023 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
024 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
026 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029 */
030 package edu.ucdenver.ccp.medline.parser;
031
032 import java.util.ArrayList;
033 import java.util.List;
034
035 import edu.ucdenver.ccp.medline.parser.MedlineCitation.Abstract;
036 import edu.ucdenver.ccp.medline.parser.MedlineCitation.AbstractText;
037 import edu.ucdenver.ccp.medline.parser.MedlineCitation.PubMedId;
038 import edu.ucdenver.ccp.medline.parser.PubmedArticle.PubmedData;
039
040 /**
041 * @author Center for Computational Pharmacology, UC Denver; ccpsupport@ucdenver.edu
042 *
043 */
044 public abstract class PubmedArticleBase {
045
046 public abstract PubmedData getPubmedData();
047
048 public PubMedId getPubmedId() {
049 if (this instanceof PubmedArticle) {
050 return ((PubmedArticle) this).getMedlineCitation().getPmid();
051 } else if (this instanceof PubmedBookArticle) {
052 return ((PubmedBookArticle) this).getBookDocument().getPmid();
053 } else
054 throw new RuntimeException("Unhandled PubMedArticleBase class: " + this.getClass().getName());
055 }
056
057 public String getArticleTitle() {
058 if (this instanceof PubmedArticle) {
059 return ((PubmedArticle) this).getMedlineCitation().getArticle().getArticleTitle();
060 } else if (this instanceof PubmedBookArticle) {
061 return ((PubmedBookArticle) this).getBookDocument().getArticleTitle();
062 } else
063 throw new RuntimeException("Unhandled PubMedArticleBase class: " + this.getClass().getName());
064 }
065
066 public List<AbstractText> getArticleAbstractTexts() {
067 Abstract theAbstract = null;
068 if (this instanceof PubmedArticle) {
069 theAbstract = ((PubmedArticle) this).getMedlineCitation().getArticle().getTheAbstract();
070 } else if (this instanceof PubmedBookArticle) {
071 theAbstract = ((PubmedBookArticle) this).getBookDocument().getTheAbstract();
072 } else
073 throw new RuntimeException("Unhandled PubMedArticleBase class: " + this.getClass().getName());
074 return (theAbstract == null) ? new ArrayList<AbstractText>() : theAbstract.getAbstractTexts();
075 }
076
077 public String getDate() {
078 if (this instanceof PubmedArticle) {
079 return ((PubmedArticle) this).getMedlineCitation().getArticle().getJournal().getJournalIssue().getPubDate()
080 .getDateStr();
081 } else if (this instanceof PubmedBookArticle) {
082 return ((PubmedBookArticle) this).getBookDocument().getBook().getPubDate().toString();
083 } else
084 throw new RuntimeException("Unhandled PubMedArticleBase class: " + this.getClass().getName());
085 }
086
087 }