diff --git a/Chan/libdocs/ormlite-android-4.48-javadoc.jar b/Chan/libdocs/ormlite-android-4.48-javadoc.jar new file mode 100644 index 00000000..52326354 Binary files /dev/null and b/Chan/libdocs/ormlite-android-4.48-javadoc.jar differ diff --git a/Chan/libdocs/ormlite-android-4.48-sources.jar b/Chan/libdocs/ormlite-android-4.48-sources.jar new file mode 100644 index 00000000..ab74f592 Binary files /dev/null and b/Chan/libdocs/ormlite-android-4.48-sources.jar differ diff --git a/Chan/libdocs/ormlite-core-4.48-javadoc.jar b/Chan/libdocs/ormlite-core-4.48-javadoc.jar new file mode 100644 index 00000000..7c9d0df4 Binary files /dev/null and b/Chan/libdocs/ormlite-core-4.48-javadoc.jar differ diff --git a/Chan/libdocs/ormlite-core-4.48-sources.jar b/Chan/libdocs/ormlite-core-4.48-sources.jar new file mode 100644 index 00000000..b411c8f1 Binary files /dev/null and b/Chan/libdocs/ormlite-core-4.48-sources.jar differ diff --git a/Chan/src/org/floens/chan/ChanApplication.java b/Chan/src/org/floens/chan/ChanApplication.java index c8ef962a..92bf93c1 100644 --- a/Chan/src/org/floens/chan/ChanApplication.java +++ b/Chan/src/org/floens/chan/ChanApplication.java @@ -1,5 +1,6 @@ package org.floens.chan; +import org.floens.chan.database.DatabaseManager; import org.floens.chan.manager.BoardManager; import org.floens.chan.manager.PinnedManager; import org.floens.chan.manager.ReplyManager; @@ -23,6 +24,7 @@ public class ChanApplication extends Application { private static ImageLoader imageLoader; private static BoardManager boardManager; private static PinnedManager pinnedManager; + private static DatabaseManager databaseManager; public ChanApplication() { instance = this; @@ -48,6 +50,10 @@ public class ChanApplication extends Application { return pinnedManager; } + public static DatabaseManager getDatabaseManager() { + return databaseManager; + } + public static SharedPreferences getPreferences() { return PreferenceManager.getDefaultSharedPreferences(instance); } @@ -83,6 +89,7 @@ public class ChanApplication extends Application { boardManager = new BoardManager(this); pinnedManager = new PinnedManager(this); new ReplyManager(this); + databaseManager = new DatabaseManager(this); } } diff --git a/Chan/src/org/floens/chan/database/DatabaseHelper.java b/Chan/src/org/floens/chan/database/DatabaseHelper.java new file mode 100644 index 00000000..f420c66b --- /dev/null +++ b/Chan/src/org/floens/chan/database/DatabaseHelper.java @@ -0,0 +1,42 @@ +package org.floens.chan.database; + +import java.sql.SQLException; + +import org.floens.chan.model.Loadable; +import org.floens.chan.model.Pin; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; + +import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.support.ConnectionSource; + +public class DatabaseHelper extends OrmLiteSqliteOpenHelper { + private static final String DATABASE_NAME = "ChanDB"; + private static final int DATABASE_VERSION = 1; + + public Dao pinDao; + public Dao loadableDao; + + public DatabaseHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + + try { + pinDao = getDao(Pin.class); + loadableDao = getDao(Loadable.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Override + public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { + + } + + @Override + public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { + + } +} diff --git a/Chan/src/org/floens/chan/database/DatabaseManager.java b/Chan/src/org/floens/chan/database/DatabaseManager.java new file mode 100644 index 00000000..c655a24b --- /dev/null +++ b/Chan/src/org/floens/chan/database/DatabaseManager.java @@ -0,0 +1,51 @@ +package org.floens.chan.database; + +import java.sql.SQLException; +import java.util.List; + +import org.floens.chan.model.Pin; + +import android.content.Context; + +public class DatabaseManager { + private final DatabaseHelper helper; + + public DatabaseManager(Context context) { + helper = new DatabaseHelper(context); + } + + public void addPin(Pin pin) { + try { + helper.pinDao.create(pin); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void removePin(Pin pin) { + try { + helper.pinDao.delete(pin); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void updatePin(Pin pin) { + try { + helper.pinDao.update(pin); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public List getPinned() { + List list = null; + try { + list = helper.pinDao.queryForAll(); + } catch (SQLException e) { + e.printStackTrace(); + } + + return list; + } +} diff --git a/Chan/src/org/floens/chan/manager/PinnedManager.java b/Chan/src/org/floens/chan/manager/PinnedManager.java index ad7f82cd..8d5f60ea 100644 --- a/Chan/src/org/floens/chan/manager/PinnedManager.java +++ b/Chan/src/org/floens/chan/manager/PinnedManager.java @@ -13,11 +13,8 @@ import android.content.Context; public class PinnedManager { private final ArrayList list = new ArrayList(); private final PinnedAdapter adapter; - private final Context context; public PinnedManager(Context context) { - this.context = context; - adapter = new PinnedAdapter(context, 0, list); Pin header = new Pin(); diff --git a/Chan/src/org/floens/chan/model/Loadable.java b/Chan/src/org/floens/chan/model/Loadable.java index 7e2bc463..957e8586 100644 --- a/Chan/src/org/floens/chan/model/Loadable.java +++ b/Chan/src/org/floens/chan/model/Loadable.java @@ -3,15 +3,33 @@ package org.floens.chan.model; import android.content.Context; import android.os.Bundle; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + /** * Something that can be loaded, like a board or thread. */ +@DatabaseTable public class Loadable { + @DatabaseField(generatedId = true) + private int id; + + @DatabaseField public int mode = Mode.INVALID; + + @DatabaseField public String board = ""; + + @DatabaseField public int no = -1; + + @DatabaseField public String title = ""; + + @DatabaseField public int listViewIndex; + + @DatabaseField public int listViewTop; /** diff --git a/Chan/src/org/floens/chan/model/Pin.java b/Chan/src/org/floens/chan/model/Pin.java index 995ac897..f24fe9c3 100644 --- a/Chan/src/org/floens/chan/model/Pin.java +++ b/Chan/src/org/floens/chan/model/Pin.java @@ -1,8 +1,16 @@ package org.floens.chan.model; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; +@DatabaseTable public class Pin { + @DatabaseField(generatedId = true) + private int id; + public Type type = Type.THREAD; + + @DatabaseField(canBeNull = false, foreign = true) public Loadable loadable = new Loadable("", -1); /** Header is used to display a static header in the drawer listview. */