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,
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);
}
}