package net.traviangui;
import java.io.File;
import java.net.URL;
import net.traviangui.model.TroopType;
import net.traviangui.model.TroopUnit;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
public class testRallyPoint
{
public static void main(String[] args) throws Exception
{
Translator.load( "es");
// create an instance of HtmlCleaner
HtmlCleaner cleaner = new HtmlCleaner();
// take default cleaner properties
CleanerProperties props = cleaner.getProperties();
// customize cleaner's behaviour with property setters
// props.setXXX(...);
// Clean HTML taken from simple string, file, URL, input stream,
// input source or reader. Result is root node of created
// tree-like structure. Single cleaner instance may be safely used
// multiple times.
// TagNode node = cleaner.clean( new File("tests/accept.html"));
TagNode node = cleaner.clean( new File("tests/rallypoint.htm"));
Object[] myNodes;
myNodes = node.evaluateXPath( "//div[@id='content']//h1/text( )");
String[] data = Util.patternExtract( "([^(]+)"+Translator.get(Translator.LEVEL)+" (\\d+)", myNodes[0].toString(), 2);
String currentLocation = Translator.translate( data[0].trim());
int level = Integer.parseInt( data[1].trim());
System.out.printf( "currentLocation=%s, level=%d\n\n", currentLocation, level);
int numNode = 0;
Object[] domTroops = node.evaluateXPath( "//div[@id='content']//table");
for( Object t : domTroops) {
if( t instanceof TagNode) {
TagNode domTroop = (TagNode) t;
Object[] domTroopTypes = domTroop.evaluateXPath( ".//tbody[@class='units']/tr[position()=1]/td/img/@title");
Object[] domTroopQuantities = node.evaluateXPath( ".//tbody[@class='units']/tr[position()=2]/td/text()");
Object[] domLocations = node.evaluateXPath( "//div[@id='content']//table/thead/tr/td[2]/a/@href");
String codLocation = "<local>";
if( numNode > 0) { // Other villages
codLocation = Util.patternExtract( "\\?d=(\\d+)&", domLocations[numNode].toString(), 1)[0];
}
numNode++;
System.out.println( "* Village=" + codLocation);
// Util.printTagNodes( domTroopTypes);
// Util.printTagNodes( domTroopQuantities);
for( int i=0 ; i < domTroopTypes.length ; i++) {
// System.out.printf( "type=%s, quantity=%d\n", domTroopTypes[i].toString(), troopQuantity);
String troopType = Translator.translate( domTroopTypes[i].toString().trim());
int troopQuantity = Integer.parseInt( domTroopQuantities[i].toString().trim());
TroopUnit tu = new TroopUnit( TroopType.getByName( troopType), troopQuantity);
System.out.println( " * " + tu);
}
}
}
myNodes = node.evaluateXPath( "//div[@id='content']//table[position()>1]/thead/tr/td[2]/a/@href");
myNodes = node.evaluateXPath( "//div[@id='content']//table/thead/tr/td[2]/a/@href");
// myNodes = node.evaluateXPath( "//div[@id='content']//table");
Util.printTagNodes( myNodes);
}
}