- NimChallenge_src.zip
- NimChallenge
- .classpath
- .project
- .settings
- AndroidManifest.xml
- assets
- libs
- proguard.cfg
- project.properties
- res
- drawable
- drawable-el
- logo.png
- drawable-hdpi
- clock1.png
- clock2.png
- clock2_gray.png
- clock3.png
- clock3_gray.png
- icon.png
- presence_offline.png
- drawable-ldpi
- icon.png
- drawable-mdpi
- clock1.png
- clock2.png
- clock2_gray.png
- clock3.png
- clock3_gray.png
- glass.png
- glass_selected.png
- ic_menu_emoticons.png
- icon.png
- logo.png
- nim1.png
- nim2.png
- paper.png
- paper_bg.png
- presence_offline.png
- selected1.png
- selected2.png
- wood.png
- drawable-xhdpi
- clock1.png
- clock2.png
- clock2_gray.png
- clock3.png
- clock3_gray.png
- layout
- layout-land
- menu
- values
- values-de
- values-el
- values-large
- values-small
- xml
- src
- gr
- sullenart
|
package gr.sullenart.scores;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.database.Cursor;
import android.database.SQLException;
import android.util.Log;
public class ScoresManager {
private final String LOG_TAG = ScoresManager.class.getName();
public int highScoresPerGame = 10;
private boolean higherIsBetter = true;
public ScoresDbAdapter scoresDbAdapter;
public int getHighScoresPerGame() {
return highScoresPerGame;
}
public void setHighScoresPerGame(int scoresPerGame) {
this.highScoresPerGame = scoresPerGame;
}
public void setScoresDbAdapter(ScoresDbAdapter scoresDbAdapter) {
this.scoresDbAdapter = scoresDbAdapter;
}
public boolean getHigherIsBetter() {
return higherIsBetter;
}
public void setHigherIsBetter(boolean higherIsBetter) {
this.higherIsBetter = higherIsBetter;
}
public boolean addScore(String game, String group, String player, int score) {
try {
scoresDbAdapter.open();
int count = scoresDbAdapter.getScoresCountByGame(game);
boolean result = true;
if (count > highScoresPerGame) {
Cursor cursor = scoresDbAdapter.getScoresByGame(game,
higherIsBetter, highScoresPerGame);
if (cursor.moveToLast()) {
int worseScore = cursor.getInt(ScoresDbAdapter.SCORE_COLUMN_INDEX);
if (higherIsBetter) {
scoresDbAdapter.deleteScoresLessThan(game, worseScore);
result = worseScore < score;
}
else {
scoresDbAdapter.deleteScoresHigherThan(game, worseScore);
result = worseScore > score;
}
}
}
if (result) {
long id = scoresDbAdapter.addScore(game, group, player, score);
if (id < 0) {
result = false;
}
}
scoresDbAdapter.close();
return result;
}
catch (SQLException e) {
Log.e(LOG_TAG, "Error adding score: " + e.getMessage());
}
catch (Exception e)
{
Log.e(LOG_TAG, "Unexpected error adding score: " + e.getMessage());
}
return false;
}
public boolean isHighScore(String game, int score) {
try {
scoresDbAdapter.open();
int count = scoresDbAdapter.getScoresCountByGame(game);
if (count < highScoresPerGame) {
scoresDbAdapter.close();
return true;
}
Cursor cursor = scoresDbAdapter.getScoresByGame(game , higherIsBetter, highScoresPerGame);
if (cursor.moveToLast()) {
boolean result;
int worseScore = cursor.getInt(ScoresDbAdapter.SCORE_COLUMN_INDEX);
if (higherIsBetter) {
result = score > worseScore;
}
else {
result = score < worseScore;
}
scoresDbAdapter.close();
return result;
}
scoresDbAdapter.close();
return false;
}
catch (SQLException e) {
Log.e(LOG_TAG, "Error checking high score: " + e.getMessage());
}
return false;
}
public List<Score> getScores(String game) {
List<Score> scores = new ArrayList<Score>();
try {
scoresDbAdapter.open();
Cursor cursor = scoresDbAdapter.getScoresByGame(game, higherIsBetter, highScoresPerGame);
if (cursor.moveToFirst()) {
do {
Score score = new Score();
score.setGame(game);
score.setPlayer(cursor.getString(ScoresDbAdapter.PLAYER_COLUMN_INDEX));
score.setScore(cursor.getInt(ScoresDbAdapter.SCORE_COLUMN_INDEX));
score.setGroup(cursor.getString(ScoresDbAdapter.GROUP_COLUMN_INDEX));
String dateStr = cursor.getString(ScoresDbAdapter.DATE_COLUMN_INDEX);
ParsePosition pos = new ParsePosition(0);
SimpleDateFormat formatter = new SimpleDateFormat(ScoresDbAdapter.DATE_FORMAT);
try {
Date date = formatter.parse(dateStr, pos);
score.setDate(date);
} catch (IllegalArgumentException e) {
}
scores.add(score);
} while (cursor.moveToNext());
}
scoresDbAdapter.close();
}
catch (SQLException e) {
Log.e(LOG_TAG, "Error retrieving scores: " + e.getMessage());
}
return scores;
}
public List<Score> getScoresByGroup(String group) {
List<Score> scores = new ArrayList<Score>();
try {
scoresDbAdapter.open();
Cursor cursor = scoresDbAdapter.getScoresByGroup(group, higherIsBetter);
if (cursor.moveToFirst()) {
do {
Score score = new Score();
score.setGame(cursor.getString(ScoresDbAdapter.GAME_COLUMN_INDEX));
score.setPlayer(cursor.getString(ScoresDbAdapter.PLAYER_COLUMN_INDEX));
score.setScore(cursor.getInt(ScoresDbAdapter.SCORE_COLUMN_INDEX));
score.setGroup(cursor.getString(ScoresDbAdapter.GROUP_COLUMN_INDEX));
String dateStr = cursor.getString(ScoresDbAdapter.DATE_COLUMN_INDEX);
ParsePosition pos = new ParsePosition(0);
SimpleDateFormat formatter = new SimpleDateFormat(ScoresDbAdapter.DATE_FORMAT);
try {
Date date = formatter.parse(dateStr, pos);
score.setDate(date);
} catch (IllegalArgumentException e) {
}
scores.add(score);
} while (cursor.moveToNext());
}
scoresDbAdapter.close();
}
catch (SQLException e) {
Log.e(LOG_TAG, "Error retrieving scores: " + e.getMessage());
}
return scores;
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.