// Yarrg protocol parameters
private final static String YARRG_CLIENTNAME = "jpctb greenend";
- private final static String YARRG_CLIENTVERSION = "0.1";
- private final static String YARRG_CLIENTFIXES = "";
+ private final static String YARRG_CLIENTVERSION =
+ com.tedpearson.ypp.market.Version.version;
+ private final static String YARRG_CLIENTFIXES = "bug-094";
private final static String YARRG_LIVE_URL = "http://upload.yarrg.chiark.net/commod-update-receiver";
private final static String YARRG_TEST_URL = "http://upload.yarrg.chiark.net/test/commod-update-receiver";
private String YARRG_URL;
JOptionPane.showMessageDialog(frame,msg,"Error",JOptionPane.ERROR_MESSAGE);
}
+ private void error_html(String msg, String html) {
+ //System.err.println("===" + html + "===");
+
+ Pattern body = Pattern.compile("<body>(.*)</body>", Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
+ Matcher m = body.matcher(html);
+ if (m.find()) {
+ html = m.group(1);
+ Pattern fixup = Pattern.compile("<(\\w+) */>");;
+ m = fixup.matcher(html);
+ html = m.replaceAll("<$1>");
+ m = Pattern.compile("[\\r\\n]+").matcher(html);
+ html = m.replaceAll(" ");
+ }
+ String whole_msg = "<html><h1>Error</h1>"+msg+"<h1>PCTB Server said:</h1><blockquote>"+html+"</blockquote>";
+ //System.err.println("###" + whole_msg + "###");
+
+ JOptionPane.showMessageDialog(frame,whole_msg,"Error",JOptionPane.ERROR_MESSAGE);
+ }
+
/**
* Run the data collection process, and upload the results. This is the method
* that calls most of the other worker methods for the process. If an error occurs,
GZIPOutputStream out = new GZIPOutputStream(outStream);
//FileOutputStream out = new FileOutputStream(new File("output.text"));
DataOutputStream dos = new DataOutputStream(out);
- dos.writeBytes("005\n");
+ dos.writeBytes("005y\n");
dos.writeBytes(stallMap.size()+"\n");
dos.writeBytes(getAbbrevStallList(stallMap));
writeBuySellOffers(buys,sells,offerCount,out);
//System.out.println(xml);
Reader reader = new CharArrayReader(xml.toCharArray());
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(reader));
- NodeList maps = d.getElementsByTagName("c");
+ NodeList maps = d.getElementsByTagName("CommodMap");
for(int i=0;i<maps.getLength();i++) {
NodeList content = maps.item(i).getChildNodes();
Integer num = Integer.parseInt(content.item(1).getTextContent());
buySellCount[1]++;
}
} catch(IllegalArgumentException e) {
- // System.err.println("Error: Unsupported Commodity \"" + offer.get(0) + "\"");
+ System.err.println("Error: Unsupported Commodity \"" + offer.get(0) + "\"");
}
}
+ if (buySellCount[0]==0 && buySellCount[1]==0) {
+ error("No (valid) offers for PCTB?!");
+ throw new IllegalArgumentException();
+ }
return buySellCount;
}
islandName +"\" on " + myOceansList.length + " oceans:","Choose Ocean",
JOptionPane.QUESTION_MESSAGE, null, myOceansList, null);
if(option == null) {
- error("Unable to determine the current island!");
+ error_html("Unable to determine the current island!", html);
return;
}
ocean = islandNumbers.get(option).toString();
ocean = myOceanNums.get(0).toString();
}
} else {
- error("Unknown island!");
+ error_html("Unknown island or other problem!", html);
return;
}
} else {
- error("Unable to determine island name from the client!");
+ error_html("Unable to determine island name from the client!", html);
return;
}
} else {
Pattern oceanIslandNum = Pattern.compile("islands\\[" + ocean + "\\]\\[\\d+\\]=new Option\\(\"" + islandName + "\",(\\d+)");
m = oceanIslandNum.matcher(html);
if(!m.find()) {
- error("This does not seem to be a valid island! Unable to upload.");
+ error_html("This does not seem to be a valid island! Unable to upload.", html);
return;
}
islandNum = m.group(1);
Pattern params = Pattern.compile("(?s)<input type=\"hidden\" name=\"action\" value=\"([^\"]+)\" />.+?<input type=\"hidden\" name=\"forcereload\" value=\"([^\"]+)\" />.+?<input type=\"hidden\" name=\"filename\" value=\"([^\"]+)\" />");
m = params.matcher(html);
if(!m.find()) {
- error("The PCTB server returned unusual data. Maybe you're using an old version of the uploader?");
+ error_html("The PCTB server returned unusual data. Maybe you're using an old version of the uploader?",
+ html);
return;
}
action = m.group(1);
if(m.find()) {
//System.out.println("FILE upload successful!!!");
} else {
- error("Something was wrong with the final upload parameters!");
- System.err.println(sb.toString());
- System.err.println(html);
+ error_html("Something was wrong with the final upload parameters!", html);
}
}