String response = FileTools.getFileContentsAsString(cacheFile);
if (response == null) {
response = WebTools.getURLAsString(url);
file(cacheFile, response);
}
Ship ship = new Ship();
ship.setName(getTableValue("Name", response));
ship.setPoints(Integer.parseInt(getTableValue("Point Value", response)));
String colNumber = getTableValue("Collector's Number", response);
String number = colNumber;
if (number.indexOf("-") > 0) {
int base = -1;
if (number.startsWith("PS")) {
base = 0;
}
if (number.startsWith("ES")) {
base = 40;
}
if (number.startsWith("SS")) {
base = 68;
}
String remainder = number.substring(number.indexOf("-") + 1);
if (base >= 0) {
number = "" + (Integer.parseInt(remainder) + base);
}
}
ship.setNumber(number);
ship.setExtra(colNumber);
ship.setRarity(getTableValue("Rarity", response));
String cargoSpace = getTableValue("Cargo Space", response);
if (cargoSpace == null) {
cargoSpace = getTableValue("Capacity", response);
}
ship.setCargo(Integer.parseInt(cargoSpace));
String guns = "";
for (int i = 1; i < 7; i++) {
String gun = getTableValue("Mast " + i + " Cannon", response);
if (gun != null) {
guns += "," + gun;
} else {
break;
}
}
if (guns.startsWith(",")) {
guns = guns.substring(1);
}
ship.setCannons(cleanGuns(guns));
String movement = getTableValue("Movement", response);
if (movement == null) {
movement = getTableValue("Move", response);
}
ship.setMove(cleanMove(movement));
String masts = getTableValue("Number of Masts", response);
if (masts == null) {
masts = getTableValue("Mast", response);
}
ship.setMasts(Integer.parseInt(masts));
// <td><strong>Broadsides Attack</strong>
// <p>Not every ship can live up to the name "La Magnifique," but with Capitaine de
// St. Croix in command, this ship is just that?nigh invincible when delivering a full cannon barrage.</p></td>
String marker = "<td><strong>";
if (response.indexOf(marker) > -1) {
int start = response.indexOf(marker);
int end = response.indexOf("</td>", start);
String cell = response.substring(start + 12, end - 4);
cell = cell.trim();
cell = cell.replaceAll("<P>", "<p>");
cell = cell.replaceAll("</strong>", "");
cell = cell.replaceAll("^ *<p>", "");
cell = cell.trim();
cell = cell.replaceAll("^<p>", "");
String[] parts = cell.trim().split("<p>");
if (parts.length == 1) {
ship.setRules("No ability.");
ship.setFlavor(parts[0].trim());
} else {
ship.setRules(fixRules(parts[0].trim()));
ship.setFlavor(parts[1].trim());
}
}
if (response.indexOf("src=\"images/Release") > -1) {
int start = response.indexOf("src=\"images/Release");
int end = response.indexOf("width", start);
String set = response.substring(start, end);
set = set.replaceAll(".*alt=\"(.*)\"", "$1");
ship.setExpansion(set.trim());
}
if (response.indexOf("src=\"images/faction") > -1) {
int start = response.indexOf("src=\"images/faction");
int end = response.indexOf("width", start);
String faction = response.substring(start, end);
faction = faction.replaceAll(".*alt=\"(.*)\"", "$1");
ship.setFaction(faction.trim());
}
return ship;
}