package com.shade.score;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.prefs.Preferences;
import com.shade.levels.LevelManager;
/**
* Post all of the scores in a csv file to a server.
*
* @author Alexander Schearer <aschearer@gmail.com>
*/
public class BatchWriter {
private static final String EMPTY_STRING = "";
private static final String SCORE_KEY = "scores";
private static final String SERVER = "http://anotherearlymorning.com/games/shade2/batch.php";
public boolean write() {
try {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < LevelManager.NUM_LEVELS; i++) {
builder.append(collectScores(i));
}
String score = builder.toString();
score = score.trim();
String content = "scores=" + URLEncoder.encode(score, "US-ASCII");
URL url = new URL(SERVER);
URLConnection c = url.openConnection();
c.setConnectTimeout(2000);
c.setDoOutput(true);
OutputStreamWriter o = new OutputStreamWriter(c.getOutputStream());
// write the content
o.write(content);
o.flush();
o.close();
// read response and check for success
BufferedReader i = new BufferedReader(new InputStreamReader(c
.getInputStream()));
String response = i.readLine();
return response.equals("success");
} catch (Exception e) {
return false;
}
}
private String collectScores(int level) {
Preferences prefs = Preferences.userNodeForPackage(this.getClass());
return prefs.get(SCORE_KEY + level, EMPTY_STRING);
}
}