private AccessibleContext sidePanel;
private HashMap<String,Integer> commodMap;
- private HashMap<String,String> islandNumbers = new HashMap<String,String>();
- {
- String[] nums = new String[]
- {"","Viridian","Midnight","Hunter","Cobalt","Sage","Ice","Malachite","Crimson","Opal"};
- for(int i=1;i<nums.length;i++) {
- islandNumbers.put(nums[i],""+i);
- }
- }
+
private PropertyChangeListener changeListener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
if(e.getNewValue() != null &&
html = m.replaceAll(" ");
}
String whole_msg = "<html><h1>Error</h1>"+msg+"<h1>PCTB Server said:</h1><blockquote>"+html+"</blockquote>";
- //System.err.println("###" + whole_msg + "###");
+ System.err.println("###" + whole_msg + "###");
JOptionPane.showMessageDialog(frame,whole_msg,"Error",JOptionPane.ERROR_MESSAGE);
}
private boolean finishUpload(InputStream in) throws IOException {
String html = readstreamstring(in);
//System.out.println(html);
- String topIsland = "0", ocean, islandNum, action, forceReload, filename;
Matcher m;
- Pattern whoIsland = Pattern.compile("<option value=\"\\d+\">" + islandName + ", ([^<]+)</ocean>");
- m = whoIsland.matcher(html);
- if(m.find()) {
- // the server agrees with us
- ocean = islandNumbers.get(m.group(1));
- } else {
- // if the server doesn't agree with us:
- Pattern island = Pattern.compile("<option value=\"(\\d+)\">([^,]+), ([^<]+)</ocean>");
- m = island.matcher(html);
- if(!m.find()) {
- // server doesn't know what island. if we do, let's select it.
- if(islandName != null && !islandName.equals("")) {
- // find the island name in the list as many times as it occurs
- // if more than once, present a dialog
- // set the ocean, we have the islandname, topIsland = 0
- Pattern myIsland = Pattern.compile("islands\\[(\\d+)\\]\\[\\d+\\]=new Option\\(\"" + islandName +
- "\",\\d+");
- Matcher m1 = myIsland.matcher(html);
- ArrayList<Integer> myOceanNums = new ArrayList<Integer>();
- while(m1.find()) {
- myOceanNums.add(new Integer(m1.group(1)));
- }
- if(myOceanNums.size() > 0) {
- if(myOceanNums.size() > 1) {
- String[] myOceansList = new String[myOceanNums.size()];
- int i = 0;
- for(int myOcean : myOceanNums) {
- Pattern oceanNumPat = Pattern.compile("<option value=\"\\" + myOcean + "\">([^<]+)</option>");
- m1 = oceanNumPat.matcher(html);
- if(m1.find()) {
- myOceansList[i++] = m1.group(1);
- }
- }
- Object option = JOptionPane.showInputDialog(null,"We found islands named \"" +
- islandName +"\" on " + myOceansList.length + " oceans:","Choose Ocean",
- JOptionPane.QUESTION_MESSAGE, null, myOceansList, null);
- if(option == null) {
- error_html("Unable to determine the current island!", html);
- return false;
- }
- ocean = islandNumbers.get(option).toString();
- } else {
- ocean = myOceanNums.get(0).toString();
- }
- } else {
- error_html("Unknown island or other problem!", html);
- return false;
- }
- } else {
- error_html("Unable to determine island name from the client!", html);
- return false;
- }
- } else {
- topIsland = m.group(1);
- islandName = m.group(2);
- ocean = islandNumbers.get(m.group(3));
- }
- }
- Pattern oceanIslandNum = Pattern.compile("islands\\[" + ocean + "\\]\\[\\d+\\]=new Option\\(\"" + islandName + "\",(\\d+)");
- m = oceanIslandNum.matcher(html);
- if(!m.find()) {
- error_html("This does not seem to be a valid island! Unable to upload.", html);
- return false;
- }
- 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=\"([^\"]+)\" />");
+
+ Pattern params = Pattern.compile("(?s)<input type=\"hidden\" name=\"action\" value=\"setisland\" />.+?<input type=\"hidden\" name=\"forcereload\" value=\"([^\"]+)\" />.+?<input type=\"hidden\" name=\"filename\" value=\"([^\"]+)\" />");
m = params.matcher(html);
if(!m.find()) {
error_html("The PCTB server returned unusual data. Maybe you're using an old version of the uploader?",
html);
return false;
}
- action = m.group(1);
- forceReload = m.group(2);
- filename = m.group(3);
- URL get = new URL(PCTB_HOST_URL + "upload.php?topisland=" + topIsland + "&ocean=" + ocean + "&island="
- + islandNum + "&action=" + action + "&forcereload=" + forceReload + "&filename=" + filename);
+ String forceReload = m.group(1);
+ String filename = m.group(2);
+
+ Pattern oceanNumPat = Pattern.compile("<option value=\"(\\d+)\">"+oceanName+"</option>");
+ m = oceanNumPat.matcher(html);
+ if (!m.find()) {
+ error_html("Unable to find the ocean in the server's list of oceans!", html);
+ return false;
+ }
+ String oceanNum = m.group(1);
+
+ Pattern oceanIslandNum = Pattern.compile("islands\\[" + oceanNum + "\\]\\[\\d+\\]=new Option\\(\"" + islandName + "\",(\\d+)");
+ m = oceanIslandNum.matcher(html);
+ if(!m.find()) {
+ error_html("This does not seem to be a valid island! Unable to upload.", html);
+ return false;
+ }
+ String islandNum = m.group(1);
+
+ URL get = new URL(PCTB_HOST_URL + "upload.php?action=setisland&ocean=" + oceanNum + "&island="
+ + islandNum + "&forcereload=" + forceReload + "&filename=" + filename);
String complete = readstreamstring(get.openStream());
Pattern done = Pattern.compile("Your data has been integrated into the database. Thank you!");
m = done.matcher(complete);