package jp.ac.titech.sharp4k.cuten;
+import java.util.ArrayList;
+
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
submitted = 0;
}
+ public Achievement(Task task, int[] result) {
+ this.task = task;
+ this.result = result;
+ submitted = 0;
+ }
+
public Task getTask() {
return task;
}
}
}
+ public void setResult(int[] result) {
+ this.result = result;
+ }
+
public void setSubmitted(boolean submitted) {
if (submitted) {
this.submitted = 1;
}
}
+ public static ArrayList<Achievement> findNotSubmitted(SQLiteDatabase db) {
+ ArrayList<Achievement> ret = new ArrayList<Achievement>();
+ Cursor c = db.rawQuery("SELECT result,task_id" + " FROM achievements"
+ + " WHERE submitted = ?", new String[] { String.valueOf(0) });
+ while (c.moveToNext()) {
+ int taskId = c.getInt(1);
+ ret.add(new Achievement(Task.find(db, taskId), c.getString(0)));
+ }
+ return ret;
+ }
+
public long replace(SQLiteDatabase db) {
ContentValues row = new ContentValues();
row.put("task_id", getTask().getId());
SQLiteDatabase.CONFLICT_REPLACE);
}
+ private int[] marge(int[] a, int[] b) {
+ if (a.length > b.length) {
+ return marge(b, a);
+ }
+ for (int i = 0; i < a.length; i++) {
+ if (b[i] < a[i]) {
+ b[i] = a[i];
+ }
+ }
+ return b;
+ }
+
+ public boolean marge(SQLiteDatabase db) {
+ Cursor c = db.rawQuery("SELECT result" + " FROM achievements"
+ + " WHERE task_id = ?",
+ new String[] { String.valueOf(task.getId()) });
+ if (c.moveToNext()) {
+ Achievement old = new Achievement(task, c.getString(0));
+ int[] res = marge(old.result, result);
+ this.result = res;
+ this.replace(db);
+ return true;
+ } else {
+ // not found
+ this.replace(db);
+ return false;
+ }
+ }
+
public static Achievement find(SQLiteDatabase db, Task task) {
Cursor c = db.rawQuery("SELECT result" + " FROM achievements"
+ " WHERE task_id = ?",
}
checkExistingAll();
}
+ List<Achievement> l = Achievement.findNotSubmitted(db);
+ for (Achievement a : l) {
+ Toast.makeText(this, a.toString(), Toast.LENGTH_SHORT).show();
+ }
db.close();
}
Toast.makeText(this, "閉じるボタンで戻って下さい><", Toast.LENGTH_LONG)
.show();
} else {
+ SQLiteOpenHelper h = new SQLHelper(this);
+ final SQLiteDatabase db = h.getReadableDatabase();
+ int[] test = { result };
+ Achievement a = new Achievement(task, test);
+ a.marge(db);
+ db.close();
Toast.makeText(this, "結果は" + result + "だよっ!", Toast.LENGTH_LONG)
.show();
}