CLEiM
Cross Lingual Education in Medicine
|
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 }