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 9a03657..35ce09e 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,25 @@ public void onClick(DialogInterface dialog, int which) { } }).show(); } + if (EaSQLite.getTableNames() == null || EaSQLite.getTableNames().size() < 3) { + try { + EaSQLite.createTable("nfl"); + addColumns("nfl"); + EaSQLite.createTable("nba"); + addColumns("nba"); + EaSQLite.createTable("nhl"); + addColumns("nhl"); + } catch (InvalidInputException|InvalidTypeException 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); @@ -43,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.INTEGER); + EaSQLite.addColumn(tableName, "team", EaSQLite.TEXT); + } + private void setSpecificOnClickListener(Button btn, final String league) { btn.setOnClickListener(new View.OnClickListener() { @Override 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..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; @@ -26,18 +27,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); } @@ -67,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; } @@ -124,12 +129,12 @@ public int getItemViewType(int position) { @Override public int getViewTypeCount() { - return 0; + return 1; } @Override public boolean isEmpty() { - return false; + return entries.size() == 0; } }; } 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" > - + diff --git a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java index d04d6fd..ca03ba7 100644 --- a/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java +++ b/easqlitelib/src/main/java/com/mdb/easqlitelib/DatabaseHandler.java @@ -170,11 +170,7 @@ public int addRow(String tableName, Pair[] entries) throws IOExc long id = db.insert(tableName, null, cv); if (id < 0) return -1; Entry entry = new Entry(id, list, table); - try { - table.addEntry(entry); - } catch (InvalidTypeException e) { - return -1; - } + table.addEntry(entry); return (int)id; } @@ -365,10 +361,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; } 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/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 bf6dcf7..1e6197c 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(" ")) { @@ -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(){