|
![]() |
Como se explicó en el apartado anterior esta es la clase que contiene los métodos para fabricar los filtros, es abstracta y debe ser extendida. El método parseBuff() es necesario proveerlo, ya que es completamente diferente entre buscadores. |
import java.io.*;
import java.net.*;
abstract class GusPlugin extends Thread{
public boolean running=false;
public InputStream in=null;
public OutputStream out=null;
public String[] buff=new String[15000];
public int bufflen;
public String MyName="http://www.compunauta.com";
public String Host="http://www.compunauta.com/cgi-bin/gnupernico?query=";
public String Tail="&n=100&hc=0&hs=0";
public String[][] Results=new String[3][100];
public String[] keys;
public String syn="";
public boolean ReadyState=false;
public int found;
public static void main(String[] args){
System.out.println("USAGE: java GusPlugin \"key1\" \"key2\" ... \nThis class is not intented for direct use, only extended classes");
System.exit(1);
}//end main
public void run(){
running=true;
ReadyState=false;
//System.out.println("<!-- Plugin Started..."+Host+syntax()+" -->");
try {
URL skt = new URL(Host+syntax());
BufferedReader in = new BufferedReader(new InputStreamReader(skt.openStream()));
String inputLine;
bufflen=0;
while ((inputLine = in.readLine()) != null){
// System.out.println(inputLine);//only for debug
buff[bufflen++]=new String(inputLine);
}
in.close();
//System.out.println("<!-- GusPlugin Plugin finish... "+Host+syntax()+" -->");
}//end try
catch (Exception e){
System.out.println("<br>"+MyName+" ERROR:\n"+e+"<br>");
ReadyState=true;
running=false;
return;
}//end catch
ReadyState=true;
running=false;
return;
}//end run
public void stopSearch(){
running=false; return;
}//end parar
public void setSyntax(String syn){this.syn=syn;}
public String syntax(){
if (!syn.equals("")){return new String(syn+Tail);}
else {
//System.out.println("NULL SYN:"+syn);
String Temp="";
if (keys==null){System.out.println("<br>NADA PARA BUSCAR");System.exit(1);}
for(int i=0;i<keys.length;i++){
if (i==0) {Temp=keys[i];} else {Temp=Temp+"+"+keys[i];}
}//end for
return new String(Temp+Tail);
}//end ifffff
}//end syntax
public void setSearch(String[] keys){
REQManipulation Helper=new REQManipulation("");
for (int i=0;i<keys.length;i++){
Helper.setText(keys[i]);
Helper.urlEncode();
keys[i]=Helper.getText();
}
this.keys=keys;
return;}//end SetSearch
public void parseBuff(){
return;
/* You must need to provide it, there is an example for www.yahoo.com at 27/06/2001
int flags=0;
found=0;
int i;
REQManipulation Helper=new REQManipulation("");
for(i=0;i<bufflen;i++){//System.out.println("--->GUS:"+flags+":"+i);
if ((flags==0)&&buff[i].equals("<!-- action= -->")){flags++;}
if ((flags==1)&&buff[i].equals("<ul>")){flags++;}
if ((flags==2)&&buff[i].equals("<li>")){
Helper.setText(buff[++i]);
Results[0][found]=Helper.REQ(">");
Results[0][found]=Helper.getText();
i++;
Results[1][found]=buff[++i]+buff[++i];i++;
Helper.setText(buff[++i]);
Results[2][found]=Helper.REQ(">");
Results[2][found]=Helper.REQ(" ");
found++;i++;
}
if ((flags==2)&&buff[i].equals("</ul>")){flags++;}
}//end for */
}//end parse buffer
public String validateUrl(String Url){
boolean fail=false;
if (Url.indexOf("\"")!=-1){fail=true;}
if (Url.indexOf("[")!=-1){fail=true;}
if (Url.indexOf("]")!=-1){fail=true;}
if (Url.indexOf(">")!=-1){fail=true;}
if (Url.indexOf("<")!=-1){fail=true;}
if (fail){return new String("http://www.compunauta.com/gnupernico/malformedreturn.html");}
else {return Url;}
}
public boolean ready(){
return ReadyState;}
public int resultsLen(){return found;}
public boolean supportsPhrase(){return true;}
public void setPhrase(){return;}
public boolean supportsOr(){return true;}
public void setOr(){return;}
public boolean supportsAnd(){return true;}
public void setAnd(){return;}
public boolean supportsExclude(){return true;}
public void cacheSearchSet(String megakey){return;}
public void cacheSearchGet(String megakey){return;}
public String getHost(){return Host;}
public String[][] getResults(){return Results;}
public String dropText(String t,String drop){
REQManipulation Helper=new REQManipulation(t);
String txt="";
while (!Helper.Text.equals("")){
txt=txt+Helper.REQ(drop);
}//end while
return new String(txt);
}//end drop text
public String dropTags(String text){
REQManipulation Helper=new REQManipulation(text);
String TMP=new String();
while ((text.indexOf(">")!=-1)&&(text.indexOf("<")!=-1)){
Helper.setText(text);
TMP=Helper.REQ("<");
text=Helper.REQ(">");
text=TMP+Helper.getText();
}//end while
return text;
}//end drop tag
}//End class