00001 package org.hfbk.vis.source;
00002
00003 import java.io.IOException;
00004 import java.io.UnsupportedEncodingException;
00005 import java.net.URL;
00006 import java.util.regex.Matcher;
00007 import java.util.regex.Pattern;
00008
00009 import org.dronus.graph.Node;
00010 import org.hfbk.util.HTTPUtils;
00011
00028 public abstract class SourceRegExp extends Source {
00029
00030 public SourceRegExp(URL url) {super(url);}
00031
00032 Matcher matcher;
00033 Node root;
00034
00036 abstract String url() throws UnsupportedEncodingException;
00038 abstract String matcher();
00041 abstract void parse(String[] matches) throws IOException;
00042
00043
00044 void buildGraph() throws IOException {
00045
00046 String page=HTTPUtils.fetch(url(), silent);
00047
00048 Pattern p=Pattern.compile(matcher());
00049 Matcher matcher=p.matcher(page);
00050 while (matcher.find()){
00051 String[] groups=new String[matcher.groupCount()+1];
00052 for (int i=0; i<groups.length; i++)
00053 groups[i]=matcher.group(i);
00054 parse(groups);
00055 }
00056 }
00057 }