From 6a8a799e3cd25b264c66f6aa665dff0c6abed843 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 29 Nov 2016 18:39:38 -0800 Subject: [PATCH 1/7] some bug fixes --- .../com/mdb/sirjan/easqlite/IntroActivity.java | 16 ++++++++++++++++ .../com/mdb/easqlitelib/DatabaseHandler.java | 6 ++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java index 9a03657..e8f5342 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java @@ -33,6 +33,22 @@ public void onClick(DialogInterface dialog, int which) { } }).show(); } + if (EaSQLite.getTableNames() == null || EaSQLite.getTableNames().size() < 3) { + try { + EaSQLite.createTable("nfl"); + EaSQLite.createTable("nba"); + EaSQLite.createTable("nhl"); + } catch (InvalidInputException e) { + new AlertDialog.Builder(IntroActivity.this) + .setTitle("Tables not Created") + .setPositiveButton("Close", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }).show(); + } + } Button nflBtn = (Button) findViewById(R.id.btn_nfl); Button nbaBtn = (Button) findViewById(R.id.btn_nba); diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java index d04d6fd..5b367a7 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java @@ -365,10 +365,8 @@ public static byte[] serialize(Object obj) throws IOException { public List getTableNames(){ List tableNames = new ArrayList<>(tableMap.size()); - int count = 0; - for(Map.Entry entry : tableMap.entrySet()){ - tableNames.add(count, entry.getKey()); - count++; + for (String s : tableMap.keySet()) { + tableNames.add(s); } return tableNames; } From 90f653bce0737ceb68cfe729ce543cfeb40117fe Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 29 Nov 2016 19:01:04 -0800 Subject: [PATCH 2/7] finished debugging app, now have to debug sqlite --- .../com/mdb/sirjan/easqlite/ViewEntriesActivity.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java index 03b0806..2aa6b2f 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java @@ -26,18 +26,21 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_view_entries); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); + Intent intent = getIntent(); + final String tableName = intent.getStringExtra(LEAGUE_KEY); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); if (fab != null) { fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + Intent intent = new Intent(getApplicationContext(), AddActivity.class); + intent.putExtra(ViewEntriesActivity.LEAGUE_KEY, tableName); + startActivity(intent); } }); } - Intent intent = getIntent(); - String tableName = intent.getStringExtra(LEAGUE_KEY); setTitle("League: " + tableName); displayTableContents(tableName); } @@ -124,12 +127,12 @@ public int getItemViewType(int position) { @Override public int getViewTypeCount() { - return 0; + return 1; } @Override public boolean isEmpty() { - return false; + return entries.size() == 0; } }; } From ac31f705752e7ddc30dbc6a85c00d5a6c97e162f Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 29 Nov 2016 19:29:01 -0800 Subject: [PATCH 3/7] something is wrong with the coodinator layout --- .../java/com/mdb/sirjan/easqlite/IntroActivity.java | 12 +++++++++++- .../src/main/java/com/mdb/easqlitelib/EaSQLite.java | 13 +++++++++++-- .../java/com/mdb/easqlitelib/structures/Table.java | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java index e8f5342..ff48d41 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java @@ -36,9 +36,12 @@ public void onClick(DialogInterface dialog, int which) { if (EaSQLite.getTableNames() == null || EaSQLite.getTableNames().size() < 3) { try { EaSQLite.createTable("nfl"); + addColumns("nfl"); EaSQLite.createTable("nba"); + addColumns("nba"); EaSQLite.createTable("nhl"); - } catch (InvalidInputException e) { + addColumns("nhl"); + } catch (InvalidInputException|InvalidTypeException e) { new AlertDialog.Builder(IntroActivity.this) .setTitle("Tables not Created") .setPositiveButton("Close", new DialogInterface.OnClickListener() { @@ -59,6 +62,13 @@ public void onClick(DialogInterface dialog, int which) { setSpecificOnClickListener(nhlBtn, "nhl"); } + private void addColumns(String tableName) throws InvalidTypeException, InvalidInputException { + EaSQLite.addColumn(tableName, "name", EaSQLite.TEXT); + EaSQLite.addColumn(tableName, "age", EaSQLite.INTEGER); + EaSQLite.addColumn(tableName, "height", EaSQLite.REAL); + EaSQLite.addColumn(tableName, "team", EaSQLite.TEXT); + } + private void setSpecificOnClickListener(Button btn, final String league) { btn.setOnClickListener(new View.OnClickListener() { @Override diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/EaSQLite.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/EaSQLite.java index ebfc841..d4f6e61 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/EaSQLite.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/EaSQLite.java @@ -14,6 +14,13 @@ public class EaSQLite { // Static DatabaseHandler for managing database transactions. private static DatabaseHandler dbHandler; + // Constants for all possible types + public static final String NULL = "NULL"; + public static final String INTEGER = "INTEGER"; + public static final String REAL = "REAL"; + public static final String TEXT = "TEXT"; + public static final String BLOB = "BLOB"; + /** * Initializes EaSQLite by setting up a database handler with a * context from the Application. It will initialize all tables already @@ -22,6 +29,8 @@ public class EaSQLite { * @param context the context provided by the Application. * @throws InvalidTypeException * @throws InvalidInputException + * @throws IOException + * @throws ClassNotFoundException */ public static void initialize(Context context) throws InvalidTypeException, InvalidInputException, IOException, ClassNotFoundException { dbHandler = new DatabaseHandler(context); @@ -120,8 +129,8 @@ public static int getNumRows(String tableName) { * specified column name and type. * @param tableName the table name used to identify the table to add the column to. * @param columnName the name of the column to be added. - * @param type the type of the column to be added. The type can be: "INTEGER", "TEXT", - * or "REAL." + * @param type the type of the column to be added. The type can be chosen from the + * constant EaSQLite type fields * @return a boolean flag indicating success of the addition. * @throws InvalidTypeException * @throws InvalidInputException diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java index bf6dcf7..32c3b7c 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java @@ -47,7 +47,7 @@ public Table(String tableName) { * This method takes in a specified column and adds it into the Table. * It updates the schema and all the entries already part of the Table. * @param columnName the name of the column to be added. - * @param type the type of the column to be added. + * @param type the SQL type of the column to be added. */ public String addColumn(String columnName, String type) throws InvalidTypeException, InvalidInputException { if (columnName.contains(" ")) { From c5b3288a8340f6693cd9bcd9e6bbaa58623cc51d Mon Sep 17 00:00:00 2001 From: Sirjan Kafle Date: Tue, 29 Nov 2016 19:53:06 -0800 Subject: [PATCH 4/7] Fix issue with list views not being displayed --- .../main/res/layout/content_view_entries.xml | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/layout/content_view_entries.xml b/app/src/main/res/layout/content_view_entries.xml index 6901f8c..60f451a 100644 --- a/app/src/main/res/layout/content_view_entries.xml +++ b/app/src/main/res/layout/content_view_entries.xml @@ -1,9 +1,10 @@ - + android:id="@+id/name" + android:layout_weight="0.25"> + android:layout_weight="0.25" > + android:layout_weight="0.25"> + android:layout_weight="0.25" > - + From 3d8dc7c45ff69c6db555dde1429c7707ed92580a Mon Sep 17 00:00:00 2001 From: Sirjan Kafle Date: Tue, 29 Nov 2016 19:56:22 -0800 Subject: [PATCH 5/7] Change header color to Black --- .../main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java index 2aa6b2f..eb54e2c 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/ViewEntriesActivity.java @@ -2,6 +2,7 @@ import android.content.Intent; import android.database.DataSetObserver; +import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; @@ -70,6 +71,7 @@ private void displayTableContents(String tableName) { private TextView getHeaderView(String leagueName) { TextView view = new TextView(getApplicationContext()); view.setText(leagueName); + view.setTextColor(Color.BLACK); return view; } From 7eed92f0b0c9c693970162e97ad5c780b566ea14 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Tue, 29 Nov 2016 19:58:33 -0800 Subject: [PATCH 6/7] type checking --- app/src/main/java/com/mdb/sirjan/easqlite/AddActivity.java | 4 +++- app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java | 2 +- .../src/main/java/com/mdb/easqlitelib/DatabaseHandler.java | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/AddActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/AddActivity.java index 5d13d88..b2356fa 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/AddActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/AddActivity.java @@ -57,10 +57,12 @@ public void onClick(View view) { } try { - EaSQLite.addRow(league, row); + int succ = EaSQLite.addRow(league, row); + if (succ == -1) throw new IOException(); } catch (IOException e) { Toast.makeText(AddActivity.this, "Addition to DB failed", Toast.LENGTH_SHORT).show(); } + Toast.makeText(AddActivity.this, "Addition to DB success", Toast.LENGTH_SHORT).show(); } }); } diff --git a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java index ff48d41..35ce09e 100644 --- a/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java +++ b/app/src/main/java/com/mdb/sirjan/easqlite/IntroActivity.java @@ -65,7 +65,7 @@ public void onClick(DialogInterface dialog, int which) { private void addColumns(String tableName) throws InvalidTypeException, InvalidInputException { EaSQLite.addColumn(tableName, "name", EaSQLite.TEXT); EaSQLite.addColumn(tableName, "age", EaSQLite.INTEGER); - EaSQLite.addColumn(tableName, "height", EaSQLite.REAL); + EaSQLite.addColumn(tableName, "height", EaSQLite.INTEGER); EaSQLite.addColumn(tableName, "team", EaSQLite.TEXT); } diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java index 5b367a7..3b0b86a 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java @@ -156,10 +156,12 @@ public List getColumnNames(String tableName) { //Add entry to SQLite database public int addRow(String tableName, Pair[] entries) throws IOException { + System.out.println("adding row"); SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); Table table = tableMap.get(tableName); if (table == null) return -1; + System.out.println("table found"); List list = new ArrayList<>(entries.length); for (Pair p : entries) { cv.put(p.first, serialize(p.second)); @@ -167,14 +169,17 @@ public int addRow(String tableName, Pair[] entries) throws IOExc if (i < 0) return -1; list.add(i, p.second); } + System.out.println("created cvs"); long id = db.insert(tableName, null, cv); if (id < 0) return -1; + System.out.println("inserted to db"); Entry entry = new Entry(id, list, table); try { table.addEntry(entry); } catch (InvalidTypeException e) { return -1; } + System.out.println("entry added"); return (int)id; } From 86e23a382f1f4bc462dd3356e5982ea591264a38 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Wed, 30 Nov 2016 15:15:18 -0800 Subject: [PATCH 7/7] removed input verification for now --- .../java/com/mdb/easqlitelib/DatabaseHandler.java | 11 +---------- .../java/com/mdb/easqlitelib/structures/Entry.java | 6 +++--- .../java/com/mdb/easqlitelib/structures/Table.java | 8 ++------ 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java index 3b0b86a..ca03ba7 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java @@ -156,12 +156,10 @@ public List getColumnNames(String tableName) { //Add entry to SQLite database public int addRow(String tableName, Pair[] entries) throws IOException { - System.out.println("adding row"); SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); Table table = tableMap.get(tableName); if (table == null) return -1; - System.out.println("table found"); List list = new ArrayList<>(entries.length); for (Pair p : entries) { cv.put(p.first, serialize(p.second)); @@ -169,17 +167,10 @@ public int addRow(String tableName, Pair[] entries) throws IOExc if (i < 0) return -1; list.add(i, p.second); } - System.out.println("created cvs"); long id = db.insert(tableName, null, cv); if (id < 0) return -1; - System.out.println("inserted to db"); Entry entry = new Entry(id, list, table); - try { - table.addEntry(entry); - } catch (InvalidTypeException e) { - return -1; - } - System.out.println("entry added"); + table.addEntry(entry); return (int)id; } diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Entry.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Entry.java index 28d37d9..3c769b5 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Entry.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Entry.java @@ -17,7 +17,7 @@ public class Entry { public Entry(long id, List list, Table table) { this.id = id; this.table = table; - data = new ArrayList(list); + data = new ArrayList<>(list); } private String classType(Object o) { @@ -45,7 +45,7 @@ public void addField(Object field) throws InvalidTypeException{ } } - public boolean verifyFields(){ + /*public boolean verifyFields(){ for (int i = 0; i < data.size(); i++) { String type = classType(data.get(i)); if (type == null || !type.equals(table.getSchema().get(i))) { @@ -53,6 +53,6 @@ public boolean verifyFields(){ } } return true; - } + }*/ } diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java index 32c3b7c..1e6197c 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/structures/Table.java @@ -73,12 +73,8 @@ public String addColumn(String columnName, String type) throws InvalidTypeExcept * that the entry is valid in that its types match the schema. * @param entry the entry to be added to the table. */ - public void addEntry(Entry entry) throws InvalidTypeException { - if (entry.verifyFields()) { - entries.put(entry.id, entry); - } else { - throw new InvalidTypeException("Entry insertion is invalid"); - } + public void addEntry(Entry entry) { + entries.put(entry.id, entry); } public Map getEntries(){