import java.io.*;
import java.util.*;
import java.net.*;
public class parser extends Thread {
protected monitor mymon;
protected urlmonitor myumon;
protected webpage mypage;
protected data_gatherer wdata;
public parser(monitor mon,urlmonitor umon, data_gatherer dat, String name){
super(name);
mymon = mon;
myumon = umon;
wdata = dat;
}
public void run(){
do{
if(myumon.dbug()){
System.out.println("Run " + getName());
}
long startTime = System.currentTimeMillis();
if(mypage == null){
mypage = (webpage)mymon.getpage();
}
if(mypage != null){
getlinks(mypage.getpage(), mypage.geturl());
long endTime = System.currentTimeMillis();
mypage.setParTime(endTime - startTime);
wdata.process(mypage);
}else{
}
mypage = null;
}while(mymon.isrunning());
}
public void getlinks(String buffer, String url){
int start, start2, stop, stop2;
if(buffer != null){
buffer = buffer.toLowerCase();
do {
start = buffer.indexOf("href=");
if (start == -1) {
if (buffer.length() >= 6) buffer = buffer.substring(buffer.length()-6);
else buffer = "";
break;
}
start = start + 6;
stop = buffer.indexOf("\"",start);
stop2 = buffer.indexOf('>',start);
if (stop == -1) stop = stop2;
if (stop2 != -1 && stop2 < stop) stop = stop2;
stop2 = buffer.indexOf('#',start);
if (stop == -1) stop = stop2;
if (stop2 != -1 && stop2 < stop) stop = stop2;
if (stop == -1)
{
buffer = buffer.substring(start-6);
break;
}
String newLink = buffer.substring(start-1,stop);
if(newLink.startsWith("\"")){
newLink = newLink.substring(1,newLink.length());
}
String name = "";
try{
URL oldURL = new URL(url);
URL linkURL = new URL(oldURL,newLink);
name = linkURL.toExternalForm();
}
catch (Exception e) {}
int intLevel = wdata.checkurl(url, name);
if(intLevel >= 0){
myumon.addurl(name,intLevel);
}
buffer = buffer.substring(stop+1);
} while (true);
}
else{
System.out.println("Buffer was empty");
}
}
}