CLEiM
Cross Lingual Education in Medicine
 All Classes Namespaces Files Functions Variables
MLPSearch.java
Go to the documentation of this file.
00001 
00005 package com.uem.gsi.cleim.scl;
00006 import java.net.URLDecoder;
00007 import java.util.List;
00008 import java.util.ArrayList;
00009 
00010 import org.w3c.dom.Document;
00011 import org.w3c.dom.Node;
00012 import org.w3c.dom.NodeList;
00013 
00014 import com.uem.gsi.cleim.util.MyDOMParser;
00015 
00016 
00017 public class MLPSearch {
00021         private List<String> lRank;
00022         private List<String> lUrl;
00023         private List<String> lUrlSp;
00024         private List<String> lTitle;
00025   private List<String> lOrganizationName;
00026   private List<String> lFullSummary;
00027   private List<String> lMesh;
00028   private List<String> lGroupName;
00029   private List<String> lSnippet;
00030         private int page=0;
00031         private int count=0;
00032         private int totalpages=0;
00033         public MLPSearch(){
00034         //List of anotations
00035                 lRank = new ArrayList<String>();
00036                 lUrl = new ArrayList<String>();
00037                 lUrlSp = new ArrayList<String>();
00038                 lTitle = new ArrayList<String>();
00039         lOrganizationName = new ArrayList<String>();
00040         lFullSummary = new ArrayList<String>();
00041         lMesh = new ArrayList<String>();
00042         lGroupName = new ArrayList<String>();
00043         lSnippet = new ArrayList<String>();
00044   }
00045   public void runMPLSearch(String term) throws Exception{
00046         CallMLP oMLP=new CallMLP();
00047         oMLP.setTerm(term);
00048                 String xml=oMLP.doMLPQuery();
00049                 Document doc = MyDOMParser.getDocument(xml);
00050                 this.count=new Integer(doc.getElementsByTagName("count").item(0).getFirstChild().getNodeValue());
00051                 if (count>0){
00052                         //String file=doc.getElementsByTagName("file").item(0).getFirstChild().getNodeValue();
00053                         //String server=doc.getElementsByTagName("server").item(0).getFirstChild().getNodeValue();
00054                         //retstart=doc.getElementsByTagName("retstart").item(0).getFirstChild().getNodeValue();
00055                         //retmax=doc.getElementsByTagName("retmax").item(0).getFirstChild().getNodeValue();
00056                         
00057                         NodeList listRes=doc.getElementsByTagName("document");
00058                         for (int j=0;j<listRes.getLength();j++){
00059                                 Node annotNode=listRes.item(j);
00060                                 String rank=annotNode.getAttributes().getNamedItem("rank").getNodeValue();
00061                                 lRank.add(rank);
00062                                 String url=annotNode.getAttributes().getNamedItem("url").getNodeValue();
00063                                 url=url.replaceAll("http.+url=", "").replaceAll("&.+", "");
00064                                 String urlsp=url.replaceFirst("([a-z]*?\\.html)", "spanish/$0");
00065                                 lUrl.add(URLDecoder.decode(url,"UTF-8"));
00066                                 lUrlSp.add(URLDecoder.decode(urlsp,"UTF-8"));
00067                                 NodeList listChildAnnot=annotNode.getChildNodes();
00068                                 String sMesh="", sGroupName="";
00069                                 for (int i=0;i<listChildAnnot.getLength();i++){
00070                             Node nodeContent=listChildAnnot.item(i);
00071                             //Concept
00072                             int type = nodeContent.getNodeType();
00073                             if (nodeContent.getNodeName().equals("content") && type!=Node.TEXT_NODE){
00074                                 Node nAttr=listChildAnnot.item(i).getAttributes().getNamedItem("name");
00075                                 String attr=nAttr.getNodeValue();
00076                                                 String value=(listChildAnnot.item(i).getFirstChild()!=null)?
00077                                                                 listChildAnnot.item(i).getFirstChild().getNodeValue():"";
00078                                                 //Elements selection
00079                                                 if (attr.equals("title")){ 
00080                                                         value=value.replaceAll("<span class=\"qt[0-9]\">", "").replaceAll("</span>", "");
00081                                                         lTitle.add(value);
00082                                                 }else if (attr.equals("organizationName")) lOrganizationName.add(value);
00083                                                 else if (attr.equals("FullSummary")) lFullSummary.add(value);
00084                                                 else if (attr.equals("mesh")){ 
00085                                                         value=value.replaceAll("<span class=\"qt[0-9]\">", "").replaceAll("</span>", "");
00086                                                         value="<a href=\"pmresult.jsp?term="+value+"\" target=_blank>"+value+"</a>";
00087                                                         sMesh+=(sMesh.equals(""))?value:"<span> | </span>"+value;
00088                                                 }       else if (attr.equals("groupName")) sGroupName=(sGroupName.equals(""))?value:sGroupName+", "+value;
00089                                                 else if (attr.equals("snippet")) lSnippet.add(value);
00090                             }
00091                                 }
00092                                 lMesh.add(sMesh);
00093                                 lGroupName.add(sGroupName);
00094                         }
00095                 }       
00096   }
00097   public int getCount(){
00098         return this.count;
00099   }
00100   public List<String> getRank(){
00101         return this.lRank;
00102   }
00103   public List<String> getUrl(){
00104         return this.lUrl;
00105   }
00106   public List<String> getUrlSp(){
00107         return this.lUrlSp;
00108   }
00109   public List<String> getTitles(){
00110         return this.lTitle;
00111   }
00112   public List<String> getOrganizationName(){
00113         return this.lOrganizationName;
00114   }
00115   public List<String> getFullSummary(){
00116         return this.lFullSummary;
00117   }
00118   public List<String> getMesh(){
00119         return this.lMesh;
00120   }
00121   public List<String> getGroupName(){
00122         return this.lGroupName;
00123   }
00124         public List<String> getSnippet(){
00125         return this.lSnippet;
00126   }
00127 }