package net.coljac.pirates.data;
import net.coljac.util.FileTools;
import net.coljac.pirates.CardDatabase;
import net.coljac.pirates.Card;
import net.coljac.pirates.Crew;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.io.IOException;
/**
* By Colin Jacobs, colin@q9software.com
* Date: Apr 2, 2006
*/
public class LinkDataImporter {
private static Map<String, String> links = new HashMap<String, String>();
// static String regex = "(Crew Link: [^<]*)<br:";
static String regex = "<SPAN class=TwelvepxUnderlineLink><b>[^<]*</b>.*?Crew Link: ([^<]*)";
static Pattern pattern = Pattern.compile(regex);
public static void main2(String[] args) {
String regex = ".*?([A-z]+) -> ([A-z]+)";
Pattern p = Pattern.compile(regex);
String input = "some stuff Col -> dave, Simon -> mike";
Matcher m = p.matcher(input);
while(m.find()) {
System.out.println(m.group(1) + ": " + m.group(2));
}
}
public static void main(String[] args) {
process("linkdata.txt");
process("linkdata2.txt");
process("linkdata3.txt");
process("linkdata4.txt");
process("linkdata5.txt");
try {
CardDatabase db = CardDatabase.init("cards.db");
for(String name: links.keySet()) {
List<Card> cards = db.getCardsByName(name);
if(cards.size()==0) {
System.out.println("Can't find " + name);
} else if (cards.size()==1) {
((Crew)cards.get(0)).setLink(links.get(name));
} else {
System.out.println("Several results " + name);
}
}
db.save();
} catch (IOException e) {
e.printStackTrace();
}
}
static void process(String file) {
String in = FileTools.getFileContentsAsString(file);
Matcher m = pattern.matcher(in);
while(m.find()) {
processLine(m.group());
}
}
static String regex2= ".*<SPAN class=TwelvepxUnderlineLink><b>([^<]*)</b>.*?Crew Link: ([^<]*)";
static Pattern pattern2 = Pattern.compile(regex2);
private static void processLine(String in) {
Matcher m = pattern2.matcher(in);
if(m.find()) {
links.put(m.group(1), m.group(2));
System.out.println(m.group(1) + " -> " + m.group(2));
}
}
}