From 8c8cc30e2eabe809760341a67125c8e692e38009 Mon Sep 17 00:00:00 2001 From: Zhuk Pavel Date: Sun, 10 Apr 2016 11:28:24 +0300 Subject: [PATCH 1/3] add base classes --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 8 +- .../main/java/com/csc/lesson6/FeedsTable.java | 11 --- .../com/csc/lesson6/ReaderOpenHelper.java | 44 --------- .../ppzh/todolist}/MainActivity.java | 27 +++--- app/src/main/java/ru/ppzh/todolist/Task.java | 86 ++++++++++++++++++ .../java/ru/ppzh/todolist/TaskCursor.java | 7 ++ .../java/ru/ppzh/todolist/TasksTable.java | 12 +++ .../todolist/ToDoListContentProvider.java} | 64 +++++++------ .../ppzh/todolist/ToDoListDatabaseHelper.java | 38 ++++++++ app/src/main/res/layout/main.xml | 39 ++++++-- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 1741 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 1256 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 2376 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 3852 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10486 -> 5025 bytes app/src/main/res/values/strings.xml | 4 +- 17 files changed, 232 insertions(+), 110 deletions(-) delete mode 100644 app/src/main/java/com/csc/lesson6/FeedsTable.java delete mode 100644 app/src/main/java/com/csc/lesson6/ReaderOpenHelper.java rename app/src/main/java/{com/csc/lesson6 => ru/ppzh/todolist}/MainActivity.java (52%) create mode 100644 app/src/main/java/ru/ppzh/todolist/Task.java create mode 100644 app/src/main/java/ru/ppzh/todolist/TaskCursor.java create mode 100644 app/src/main/java/ru/ppzh/todolist/TasksTable.java rename app/src/main/java/{com/csc/lesson6/ReaderContentProvider.java => ru/ppzh/todolist/ToDoListContentProvider.java} (70%) create mode 100644 app/src/main/java/ru/ppzh/todolist/ToDoListDatabaseHelper.java diff --git a/app/build.gradle b/app/build.gradle index 5c04260..d25d34e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "23.0.2" defaultConfig { - applicationId "com.csc.lesson6" + applicationId "ru.ppzh.todolist" minSdkVersion 15 targetSdkVersion 23 versionCode 1 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7ab0b4b..5477491 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="ru.ppzh.todolist"> @@ -19,10 +19,10 @@ + android:exported="true"/> \ No newline at end of file diff --git a/app/src/main/java/com/csc/lesson6/FeedsTable.java b/app/src/main/java/com/csc/lesson6/FeedsTable.java deleted file mode 100644 index be48cec..0000000 --- a/app/src/main/java/com/csc/lesson6/FeedsTable.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.csc.lesson6; - -import android.provider.BaseColumns; - -interface FeedsTable extends BaseColumns { - String TABLE_NAME = "feeds"; - - String COLUMN_TITLE = "title"; - String COLUMN_DATE = "date"; - String COLUMN_CONTENT = "content"; -} diff --git a/app/src/main/java/com/csc/lesson6/ReaderOpenHelper.java b/app/src/main/java/com/csc/lesson6/ReaderOpenHelper.java deleted file mode 100644 index 368bb0a..0000000 --- a/app/src/main/java/com/csc/lesson6/ReaderOpenHelper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.csc.lesson6; - -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; - -public class ReaderOpenHelper extends SQLiteOpenHelper { - public static final int DATABASE_VERSION = 2; - public static final String DATABASE_NAME = "reader.db"; - - private static final String SQL_CREATE_ENTRIES_TABLE = - "CREATE TABLE " + FeedsTable.TABLE_NAME - + "(" - + FeedsTable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " - + FeedsTable.COLUMN_TITLE + " TEXT, " - + FeedsTable.COLUMN_CONTENT + " TEXT, " - + FeedsTable.COLUMN_DATE + " TEXT" - + ")"; - - private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + FeedsTable.TABLE_NAME; - - public ReaderOpenHelper(Context context) { - super(context, DATABASE_NAME, null, DATABASE_VERSION); - } - - public void onCreate(SQLiteDatabase db) { - db.execSQL(SQL_CREATE_ENTRIES_TABLE); - } - - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - db.execSQL(SQL_DELETE_ENTRIES); - switch (oldVersion) { - case 1: -// ... - break; - case 2: -// ... - break; - default: - throw new IllegalStateException(); - } - onCreate(db); - } -} diff --git a/app/src/main/java/com/csc/lesson6/MainActivity.java b/app/src/main/java/ru/ppzh/todolist/MainActivity.java similarity index 52% rename from app/src/main/java/com/csc/lesson6/MainActivity.java rename to app/src/main/java/ru/ppzh/todolist/MainActivity.java index 14ccad0..3b7efd3 100644 --- a/app/src/main/java/com/csc/lesson6/MainActivity.java +++ b/app/src/main/java/ru/ppzh/todolist/MainActivity.java @@ -1,4 +1,4 @@ -package com.csc.lesson6; +package ru.ppzh.todolist; import android.content.ContentValues; import android.database.ContentObserver; @@ -10,13 +10,12 @@ import android.util.Log; import android.view.View; -import static com.csc.lesson6.FeedsTable.COLUMN_CONTENT; -import static com.csc.lesson6.FeedsTable.COLUMN_TITLE; +import java.util.Date; public class MainActivity extends AppCompatActivity { public static final String TAG = "MainActivity"; - public static final Uri ENTRIES_URI = Uri.withAppendedPath(ReaderContentProvider.CONTENT_URI, "entries"); + public static final Uri TASKS_URI = Uri.withAppendedPath(ToDoListContentProvider.CONTENT_URI, "tasks"); private final ContentObserver observer = new ContentObserver(new Handler()) { @Override @@ -31,10 +30,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); - Cursor cursor = managedQuery(ENTRIES_URI, + Cursor cursor = managedQuery(TASKS_URI, null, null, null, null); cursor.registerContentObserver(observer); + + } @Override @@ -45,14 +46,16 @@ protected void onDestroy() { public void addData(View view) { ContentValues values = new ContentValues(); - values.put(COLUMN_TITLE, - "new title3"); - values.put(FeedsTable.COLUMN_CONTENT, - ""); - values.put(FeedsTable.COLUMN_DATE, - "Mon, 28 Mar 2016 19:04:05 +0300"); + values.put(TasksTable.COLUMN_TEXT, + "some task"); + values.put(TasksTable.COLUMN_DATE, + new Date().toString()); + values.put(TasksTable.COLUMN_COMPLETED, + "False"); + values.put(TasksTable.COLUMN_FAVORITE, + "False"); getContentResolver().insert( - ENTRIES_URI, + TASKS_URI, values); } } diff --git a/app/src/main/java/ru/ppzh/todolist/Task.java b/app/src/main/java/ru/ppzh/todolist/Task.java new file mode 100644 index 0000000..ef82ab9 --- /dev/null +++ b/app/src/main/java/ru/ppzh/todolist/Task.java @@ -0,0 +1,86 @@ +package ru.ppzh.todolist; + + +import android.support.annotation.NonNull; + +import java.util.Date; + +public class Task implements Comparable { + private long id; + private boolean completed; + private boolean favorite; + private String text; + private Date date; + + Task() { + id = -1; + completed = false; + favorite = false; + this.text = ""; + date = new Date(); + } + + Task(String text) { + this(); + this.text = text; + } + + @Override + public int compareTo(@NonNull Task o) { + if (!completed == o.completed) { + return 1; + } + if (completed == !o.completed) { + return -1; + } + if (completed == o.completed) { + if (favorite == !o.favorite) { + return 1; + } + if (!favorite == o.favorite) { + return -1; + } + } + return date.compareTo(o.date); + } + + public boolean isCompleted() { + return completed; + } + + public void setCompleted(boolean completed) { + this.completed = completed; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public boolean isFavorite() { + return favorite; + } + + public void setFavorite(boolean favorite) { + this.favorite = favorite; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } +} diff --git a/app/src/main/java/ru/ppzh/todolist/TaskCursor.java b/app/src/main/java/ru/ppzh/todolist/TaskCursor.java new file mode 100644 index 0000000..06886a3 --- /dev/null +++ b/app/src/main/java/ru/ppzh/todolist/TaskCursor.java @@ -0,0 +1,7 @@ +package ru.ppzh.todolist; + +/** + * Created by Pavel on 08.04.2016. + */ +public class TaskCursor { +} diff --git a/app/src/main/java/ru/ppzh/todolist/TasksTable.java b/app/src/main/java/ru/ppzh/todolist/TasksTable.java new file mode 100644 index 0000000..add9b22 --- /dev/null +++ b/app/src/main/java/ru/ppzh/todolist/TasksTable.java @@ -0,0 +1,12 @@ +package ru.ppzh.todolist; + +import android.provider.BaseColumns; + +interface TasksTable extends BaseColumns { + String TABLE_NAME = "tasks"; + + String COLUMN_TEXT = "text"; + String COLUMN_DATE = "date"; + String COLUMN_FAVORITE = "favorite"; + String COLUMN_COMPLETED = "completed"; +} diff --git a/app/src/main/java/com/csc/lesson6/ReaderContentProvider.java b/app/src/main/java/ru/ppzh/todolist/ToDoListContentProvider.java similarity index 70% rename from app/src/main/java/com/csc/lesson6/ReaderContentProvider.java rename to app/src/main/java/ru/ppzh/todolist/ToDoListContentProvider.java index f8e6c21..0592f8d 100644 --- a/app/src/main/java/com/csc/lesson6/ReaderContentProvider.java +++ b/app/src/main/java/ru/ppzh/todolist/ToDoListContentProvider.java @@ -1,4 +1,4 @@ -package com.csc.lesson6; +package ru.ppzh.todolist; import android.content.ContentProvider; import android.content.ContentUris; @@ -9,49 +9,42 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.support.annotation.NonNull; +import android.util.Log; -public class ReaderContentProvider extends ContentProvider { - public static final String AUTHORITY = "com.csc.lesson6"; +public class ToDoListContentProvider extends ContentProvider { + public static final String TAG = "ToDoListContentProvider"; + + public static final String AUTHORITY = "ru.ppzh.todolist.provider"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY); - public static final int ENTRIES = 1; - public static final int ENTRIES_ID = 2; + public static final int TASKS = 1; + public static final int TASKS_ID = 2; private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { - uriMatcher.addURI(AUTHORITY, "/entries", ENTRIES); - uriMatcher.addURI(AUTHORITY, "/entries/#", ENTRIES_ID); + uriMatcher.addURI(AUTHORITY, "/tasks", TASKS); + uriMatcher.addURI(AUTHORITY, "/tasks/#", TASKS_ID); } - private ReaderOpenHelper helper; + private ToDoListDatabaseHelper helper; - public ReaderContentProvider() { - helper = new ReaderOpenHelper(getContext()); + public ToDoListContentProvider() { + helper = new ToDoListDatabaseHelper(getContext()); } @Override - public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) { - // Implement this to handle requests to delete one or more rows. - throw new UnsupportedOperationException("Not yet implemented"); - } + public Uri insert(@NonNull Uri uri, ContentValues values) { - @Override - public String getType(@NonNull Uri uri) { - // TODO: Implement this to handle requests for the MIME type of the data - // at the given URI. - throw new UnsupportedOperationException("Not yet implemented"); - } + Log.d(TAG, "Insertion: " + values.toString()); - @Override - public Uri insert(@NonNull Uri uri, ContentValues values) { int match = uriMatcher.match(uri); String tableName; switch (match) { - case ENTRIES: - tableName = FeedsTable.TABLE_NAME; + case TASKS: + tableName = TasksTable.TABLE_NAME; break; - case ENTRIES_ID: + case TASKS_ID: default: throw new UnsupportedOperationException("Not yet implemented"); } @@ -63,18 +56,21 @@ public Uri insert(@NonNull Uri uri, ContentValues values) { @Override public boolean onCreate() { - helper = new ReaderOpenHelper(getContext()); + helper = new ToDoListDatabaseHelper(getContext()); return true; } @Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + + Log.d(TAG, "Query: "); + int match = uriMatcher.match(uri); SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); switch (match) { - case ENTRIES: - builder.setTables(FeedsTable.TABLE_NAME); + case TASKS: + builder.setTables(TasksTable.TABLE_NAME); break; default: throw new UnsupportedOperationException("Not yet implemented"); @@ -85,10 +81,20 @@ public Cursor query(@NonNull Uri uri, String[] projection, String selection, return cursor; } + + @Override + public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public String getType(@NonNull Uri uri) { + throw new UnsupportedOperationException("Not yet implemented"); + } + @Override public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) { - // TODO: Implement this to handle requests to update one or more rows. throw new UnsupportedOperationException("Not yet implemented"); } } diff --git a/app/src/main/java/ru/ppzh/todolist/ToDoListDatabaseHelper.java b/app/src/main/java/ru/ppzh/todolist/ToDoListDatabaseHelper.java new file mode 100644 index 0000000..f22ba7e --- /dev/null +++ b/app/src/main/java/ru/ppzh/todolist/ToDoListDatabaseHelper.java @@ -0,0 +1,38 @@ +package ru.ppzh.todolist; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +public class ToDoListDatabaseHelper extends SQLiteOpenHelper { + public static final String TAG = "ToDoListDatabaseHelper"; + public static final int DATABASE_VERSION = 1; + public static final String DATABASE_NAME = "todolist.db"; + + private static final String SQL_CREATE_TASK_TABLE = + "CREATE TABLE " + TasksTable.TABLE_NAME + + " (" + + TasksTable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + + TasksTable.COLUMN_TEXT + " TEXT, " + + TasksTable.COLUMN_FAVORITE + " TEXT, " + + TasksTable.COLUMN_COMPLETED + " TEXT, " + + TasksTable.COLUMN_DATE + " TEXT" + + ")"; + + public ToDoListDatabaseHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + public void onCreate(SQLiteDatabase db) { + db.execSQL(SQL_CREATE_TASK_TABLE); + + Log.d(TAG, "Database created."); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } + +} diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 2970a1c..8668f3c 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -2,13 +2,36 @@ - -