From 82df5643efe651e1e697db8c6991619f75ce387c Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Sun, 30 Aug 2015 12:03:37 -0400 Subject: [PATCH 1/6] finished paceCalculator --- build.gradle | 10 +- src/main/AndroidManifest.xml | 3 - src/main/java/nyc/c4q/ListActivity.java | 2 + .../java/nyc/c4q/PaceCalculatorActivity.java | 8 ++ .../java/nyc/c4q/PaceCalculatorFragment.java | 113 ++++++++++++++++++ src/main/java/nyc/c4q/RosterListAdapter.java | 58 +++++++++ .../java/nyc/c4q/Unit3AssessmentActivity.java | 2 + 7 files changed, 185 insertions(+), 11 deletions(-) create mode 100644 src/main/java/nyc/c4q/PaceCalculatorFragment.java create mode 100644 src/main/java/nyc/c4q/RosterListAdapter.java diff --git a/build.gradle b/build.gradle index 7c6b66b..7cd5688 100644 --- a/build.gradle +++ b/build.gradle @@ -32,11 +32,9 @@ dependencies { repositories { mavenCentral() } - // Espresso - androidTestCompile('com.android.support.test.espresso:espresso-core:2.0') - androidTestCompile('com.android.support.test:testing-support-lib:0.1') - + androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' + androidTestCompile 'com.android.support.test:testing-support-lib:0.1' // Robolectric testCompile 'junit:junit:4.12' testCompile 'org.hamcrest:hamcrest-core:1.1' @@ -44,15 +42,12 @@ dependencies { testCompile 'org.hamcrest:hamcrest-integration:1.1' // https://github.com/robolectric/robolectric/issues/1369 compile 'com.android.support:support-v4:22.1.1' - // why is this 'compile' over 'testCompile'? Man... so weird. // relevant: https://github.com/square/assertj-android/issues/129 compile 'com.squareup.assertj:assertj-android:1.0.0' - // better version of Java's HttpURLConnection compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.google.code.gson:gson:2.3.1' - // TODO: requires special build of robolectric right now. working on this... testCompile('org.robolectric:robolectric:2.4') { exclude module: 'classworlds' @@ -71,5 +66,4 @@ dependencies { exclude module: 'wagon-http-lightweight' exclude module: 'wagon-provider-api' } - } diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index f96e9d3..a590e83 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -16,9 +16,6 @@ - diff --git a/src/main/java/nyc/c4q/ListActivity.java b/src/main/java/nyc/c4q/ListActivity.java index 08894ac..af7b223 100644 --- a/src/main/java/nyc/c4q/ListActivity.java +++ b/src/main/java/nyc/c4q/ListActivity.java @@ -48,6 +48,8 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_list); list = (ListView) findViewById(R.id.list); + RosterListAdapter rosterListAdapter = new RosterListAdapter(PEOPLE, true, false); + list.setAdapter(); } } diff --git a/src/main/java/nyc/c4q/PaceCalculatorActivity.java b/src/main/java/nyc/c4q/PaceCalculatorActivity.java index 5c0616e..9cd00cd 100644 --- a/src/main/java/nyc/c4q/PaceCalculatorActivity.java +++ b/src/main/java/nyc/c4q/PaceCalculatorActivity.java @@ -2,6 +2,8 @@ import android.support.v4.app.FragmentActivity; import android.os.Bundle; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; public class PaceCalculatorActivity extends FragmentActivity { @@ -9,6 +11,12 @@ public class PaceCalculatorActivity extends FragmentActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pace_calculator); + + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + ft.replace(R.id.activity_pace_calculator,new PaceCalculatorFragment()); + ft.commit(); + } } diff --git a/src/main/java/nyc/c4q/PaceCalculatorFragment.java b/src/main/java/nyc/c4q/PaceCalculatorFragment.java new file mode 100644 index 0000000..1eabe97 --- /dev/null +++ b/src/main/java/nyc/c4q/PaceCalculatorFragment.java @@ -0,0 +1,113 @@ +package nyc.c4q; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; + +/** + * Created by c4q-anthonyf on 8/30/15. + */ +public class PaceCalculatorFragment extends Fragment { + + EditText distanceET, timeMinET, timeSecET, paceMinET, paceSecET; + Button calculateButton; + + double timeMin, timeSec, paceMin, paceSec, distance; + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View root = inflater.inflate(R.layout.fragment_pace_calculator, container, false); + + distanceET = (EditText) root.findViewById(R.id.input_distance); + timeMinET = (EditText) root.findViewById(R.id.input_time_min); + timeSecET = (EditText) root.findViewById(R.id.input_time_sec); + paceMinET = (EditText) root.findViewById(R.id.input_pace_min); + paceSecET = (EditText) root.findViewById(R.id.input_pace_sec); + + distance = timeMin = timeSec = paceMin = paceSec = 0; + + calculateButton = (Button) root.findViewById(R.id.button_calculate); + calculateButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + retrieveDataFromViews(); + if(distance == 0 + && (timeMin > 0 || timeSec > 0) + && (paceMin > 0 || paceSec > 0)){ + distance = ((timeMin * 60) + timeSec)/((paceMin * 60) + paceSec); + distanceET.setText(distance + ""); + }else if(paceMin == 0 + && paceSec == 0 + && distance > 0 + && (timeMin > 0 || timeSec > 0)){ + paceSec = ((timeMin * 60) + timeSec)/distance; + paceMin = paceSec/60; + paceSec = paceSec - ((int)paceMin * 60); + + paceMinET.setText(paceMin + ""); + paceSecET.setText(paceSec + ""); + }else if(timeMin == 0 && timeSec == 0 + && distance > 0 + && (paceMin > 0 || paceSec > 0)){ + timeSec = ((paceMin * 60) + paceSec) * distance; + timeMin = timeSec/60; + timeSec = timeSec - ((int)timeMin * 60); + + timeMinET.setText(timeMin + ""); + timeSecET.setText(timeSec + ""); + } + } + }); + + + return root; + + } + + private void retrieveDataFromViews() { + if(!distanceET.getText().toString().isEmpty()) { + try { + distance = Double.parseDouble(distanceET.getText().toString()); + }catch(NumberFormatException e){ + distance = 0; + } + } + if(!timeMinET.getText().toString().isEmpty()) { + try{ + timeMin = Integer.parseInt(timeMinET.getText().toString()); + }catch(NumberFormatException e){ + timeMin = 0; + } + } + if(!timeSecET.getText().toString().isEmpty()) { + try { + timeSec = Integer.parseInt(timeSecET.getText().toString()); + }catch(NumberFormatException e){ + timeSec = 0; + } + } + if(!paceMinET.getText().toString().isEmpty()) { + try{ + paceMin = Integer.parseInt(paceMinET.getText().toString()); + }catch(NumberFormatException e){ + paceMin = 0; + } + } + if(!paceSecET.getText().toString().isEmpty()) { + try{ + paceSec = Integer.parseInt(paceSecET.getText().toString()); + }catch(NumberFormatException e){ + paceSec = 0; + } + } + } + + +} diff --git a/src/main/java/nyc/c4q/RosterListAdapter.java b/src/main/java/nyc/c4q/RosterListAdapter.java new file mode 100644 index 0000000..6878ae0 --- /dev/null +++ b/src/main/java/nyc/c4q/RosterListAdapter.java @@ -0,0 +1,58 @@ +package nyc.c4q; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import java.util.ArrayList; + +/** + * Created by c4q-anthonyf on 8/30/15. + */ +public class RosterListAdapter extends RecyclerView.Adapter{ + + private Person[] roster; + private boolean displayLastNameFirst; + private boolean doDisplayColor; + + public RosterListAdapter(Person[] roster, boolean doDisplayColor, boolean displayLastNameFirst){ + this.roster = roster; + this.doDisplayColor = doDisplayColor; + this.displayLastNameFirst = displayLastNameFirst; + } + + private class RosterViewHolder extends RecyclerView.ViewHolder{ + + TextView houseTV, personNameTV; + + public RosterViewHolder(View itemView) { + super(itemView); + houseTV = (TextView) itemView.findViewById(R.id.text_house); + personNameTV = (TextView) itemView.findViewById(R.id.text_name); + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listitem_member, viewGroup, false); + return new RosterViewHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { + Person person = roster[i]; + RosterViewHolder vh = (RosterViewHolder) viewHolder; + if(displayLastNameFirst) + vh.personNameTV.setText(person.lastName + ", " + person.firstName); + else + vh.personNameTV.setText(person.firstName + " " + person.lastName); + vh.houseTV.setText(person.house + ""); + } + + @Override + public int getItemCount() { + return roster.length; + } +} diff --git a/src/main/java/nyc/c4q/Unit3AssessmentActivity.java b/src/main/java/nyc/c4q/Unit3AssessmentActivity.java index 8223094..312d92f 100644 --- a/src/main/java/nyc/c4q/Unit3AssessmentActivity.java +++ b/src/main/java/nyc/c4q/Unit3AssessmentActivity.java @@ -1,6 +1,8 @@ package nyc.c4q; import android.app.Activity; +import android.app.FragmentManager; +import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.view.View; From 993a3799b9e11de3c435a4e8751bc37a14bdf19f Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Sun, 30 Aug 2015 16:42:49 -0400 Subject: [PATCH 2/6] working on third problem --- build.gradle | 1 + src/main/java/nyc/c4q/LibraryActivity.java | 96 ++++++ src/main/java/nyc/c4q/ListActivity.java | 121 ++++++- src/main/java/nyc/c4q/RosterListAdapter.java | 67 ++-- src/main/java/nyc/c4q/db/Book.java | 331 +++++++++++++++++++ src/main/java/nyc/c4q/db/DatabaseHelper.java | 92 ++++++ src/main/java/nyc/c4q/db/Member.java | 167 ++++++++++ src/main/res/raw/books.json | 2 +- 8 files changed, 847 insertions(+), 30 deletions(-) create mode 100644 src/main/java/nyc/c4q/db/Book.java create mode 100644 src/main/java/nyc/c4q/db/DatabaseHelper.java create mode 100644 src/main/java/nyc/c4q/db/Member.java diff --git a/build.gradle b/build.gradle index 7cd5688..e3f21bb 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,7 @@ dependencies { // better version of Java's HttpURLConnection compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.google.code.gson:gson:2.3.1' + compile 'com.j256.ormlite:ormlite-android:4.48' // TODO: requires special build of robolectric right now. working on this... testCompile('org.robolectric:robolectric:2.4') { exclude module: 'classworlds' diff --git a/src/main/java/nyc/c4q/LibraryActivity.java b/src/main/java/nyc/c4q/LibraryActivity.java index ca2a050..ce62daf 100644 --- a/src/main/java/nyc/c4q/LibraryActivity.java +++ b/src/main/java/nyc/c4q/LibraryActivity.java @@ -1,21 +1,106 @@ package nyc.c4q; import android.app.Activity; +import android.content.Context; +import android.os.AsyncTask; import android.os.Bundle; +import android.util.JsonReader; +import android.util.Log; import android.view.View; import android.widget.EditText; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.sql.SQLException; +import java.util.ArrayList; + +import nyc.c4q.db.Book; +import nyc.c4q.db.DatabaseHelper; +import nyc.c4q.db.Member; + public class LibraryActivity extends Activity { public EditText inputParameter; + DatabaseHelper dbHelper; + Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_library); + context = this; inputParameter = (EditText) findViewById(R.id.input_parameter); + dbHelper = DatabaseHelper.getInstance(this); + + new dbInitialize().execute(); + } + + private class dbInitialize extends AsyncTask{ + + @Override + protected Void doInBackground(Void... voids) { + + //BOOKS + Reader reader = null; + InputStream stream = context.getResources() + .openRawResource(R.raw.books); + reader = new BufferedReader(new InputStreamReader(stream), 8092); + + // parse json + JsonParser parser = new JsonParser(); + JsonArray jsonArray = (JsonArray)parser.parse(reader); + ArrayList books = new ArrayList<>(); + for(JsonElement jsonElement : jsonArray){ + books.add(new Gson().fromJson(jsonElement, Book.class)); + } + Log.d("BOOKS", "Parsed"); + + //MEMBERS + Reader memReader = null; + InputStream memStream = context.getResources() + .openRawResource(R.raw.books); + memReader = new BufferedReader(new InputStreamReader(memStream), 8092); + + // parse json + JsonParser memParser = new JsonParser(); + JsonArray memJsonArray = (JsonArray)memParser.parse(memReader); + ArrayList members = new ArrayList<>(); + for(JsonElement jsonElement : memJsonArray){ + members.add(new Gson().fromJson(jsonElement, Member.class)); + } + Log.d("MEMBERS", "Parsed"); + + //Insert Into DB + for(Book book: books) { + try { + dbHelper.insertRow(book); + } catch (SQLException e) { + e.printStackTrace(); + } + } + for(Member member: members){ + try { + dbHelper.insertRow(member); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + return null; + } } public void checkOut(int memberId, int bookId) { @@ -37,6 +122,17 @@ public void button_getMember_onClick(View view) { String name = inputParameter.getText().toString(); // TODO Display member information for the member with the given name. + Member member = null; + try { + member = dbHelper.loadSpecificMember(name); + } catch (SQLException e) { + e.printStackTrace(); + } + + if(member != null){ + + } + } public void button_getBook_onClick(View view) { diff --git a/src/main/java/nyc/c4q/ListActivity.java b/src/main/java/nyc/c4q/ListActivity.java index af7b223..22a1ac7 100644 --- a/src/main/java/nyc/c4q/ListActivity.java +++ b/src/main/java/nyc/c4q/ListActivity.java @@ -2,14 +2,24 @@ import android.app.Activity; import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; +import android.util.Log; +import android.view.View; +import android.widget.Button; import android.widget.ListView; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + public class ListActivity extends Activity { public ListView list; + private ArrayList people; + private Button lastFirstButton, showColorButton; + private boolean doShowColor, displayLastFirst; public static final Person[] PEOPLE = { new Person("Hannah", "Abbott", House.Hufflepuff), @@ -48,8 +58,111 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_list); list = (ListView) findViewById(R.id.list); - RosterListAdapter rosterListAdapter = new RosterListAdapter(PEOPLE, true, false); - list.setAdapter(); + lastFirstButton = (Button) findViewById(R.id.button_name); + showColorButton = (Button) findViewById(R.id.button_color); + doShowColor = true; + displayLastFirst = true; + people = new ArrayList<>(); + + for(int i = 0; i < PEOPLE.length; i++){ + people.add(PEOPLE[i]); + } + + setAdapter(); + + + lastFirstButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (lastFirstButton.getText().toString().equals("Last, First")) { + lastFirstButton.setText("First Last"); + displayLastFirst = false; + setAdapter(); + } else { + lastFirstButton.setText("Last, First"); + displayLastFirst = true; + setAdapter(); + } + } + }); + + showColorButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (showColorButton.getText().toString().equals("Show Color")) { + showColorButton.setText("Hide Color"); + doShowColor = false; + setAdapter(); + } else { + showColorButton.setText("Show Color"); + doShowColor = true; + setAdapter(); + } + } + }); + } + + private void setAdapter() { + if(displayLastFirst) + sortByLastName(); + else + sortByFirstName(); + + RosterListAdapter rosterListAdapter = new RosterListAdapter(people, doShowColor, displayLastFirst); + list.setAdapter(rosterListAdapter); + } + + + + private class lastNameComparator implements Comparator{ + + @Override + public int compare(Person person, Person t1) { + int length = person.lastName.length(); + if (t1.lastName.length() <= person.lastName.length()) { + length = t1.lastName.length(); + } + for (int i = 0; i < length; i++) { + int personChar = (int) person.lastName.toLowerCase().charAt(i); + int t1Char = (int) t1.lastName.toLowerCase().charAt(i); + + if (personChar > t1Char) + return 1; + else if (personChar < t1Char) + return -1; + } + return 0; + } + } + + private class firstNameComparator implements Comparator{ + + @Override + public int compare(Person person, Person t1) { + int length = person.firstName.length(); + if (t1.firstName.length() <= person.firstName.length()) { + length = t1.firstName.length(); + } + for (int i = 0; i < length; i++) { + int personChar = (int) person.firstName.toLowerCase().charAt(i); + int t1Char = (int) t1.firstName.toLowerCase().charAt(i); + + if (personChar > t1Char) + return 1; + else if (personChar < t1Char) + return -1; + } + return 0; + } + } + + private void sortByLastName() { + Collections.sort(people, new lastNameComparator()); } + private void sortByFirstName() { + Collections.sort(people, new firstNameComparator()); + } + + } diff --git a/src/main/java/nyc/c4q/RosterListAdapter.java b/src/main/java/nyc/c4q/RosterListAdapter.java index 6878ae0..1cf1df2 100644 --- a/src/main/java/nyc/c4q/RosterListAdapter.java +++ b/src/main/java/nyc/c4q/RosterListAdapter.java @@ -1,58 +1,75 @@ package nyc.c4q; -import android.support.v7.widget.RecyclerView; +import android.content.Context; +import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; +import java.util.Map; +import java.util.TreeMap; +import java.util.zip.CheckedOutputStream; + /** * Created by c4q-anthonyf on 8/30/15. */ -public class RosterListAdapter extends RecyclerView.Adapter{ +public class RosterListAdapter extends BaseAdapter{ - private Person[] roster; + private ArrayList roster; private boolean displayLastNameFirst; private boolean doDisplayColor; + final Map HOUSE_COLORS; - public RosterListAdapter(Person[] roster, boolean doDisplayColor, boolean displayLastNameFirst){ + public RosterListAdapter(ArrayList roster, boolean doDisplayColor, boolean displayLastNameFirst){ this.roster = roster; this.doDisplayColor = doDisplayColor; this.displayLastNameFirst = displayLastNameFirst; + HOUSE_COLORS = new TreeMap<>(); + HOUSE_COLORS.put("Gryffindor", R.color.gryffindor_red); + HOUSE_COLORS.put("Ravenclaw", R.color.ravenclaw_blue); + HOUSE_COLORS.put("Hufflepuff", R.color.hufflepuff_yellow); + HOUSE_COLORS.put("Slytherin", R.color.slytherin_green); } - private class RosterViewHolder extends RecyclerView.ViewHolder{ - - TextView houseTV, personNameTV; + @Override + public int getCount() { + return roster.size(); + } - public RosterViewHolder(View itemView) { - super(itemView); - houseTV = (TextView) itemView.findViewById(R.id.text_house); - personNameTV = (TextView) itemView.findViewById(R.id.text_name); - } + @Override + public Object getItem(int i) { + return null; } @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listitem_member, viewGroup, false); - return new RosterViewHolder(view); + public long getItemId(int i) { + return 0; } @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { - Person person = roster[i]; - RosterViewHolder vh = (RosterViewHolder) viewHolder; + public View getView(int i, View view, ViewGroup viewGroup) { + View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listitem_member, viewGroup, false); + TextView houseTV = (TextView) itemView.findViewById(R.id.text_house); + TextView personNameTV = (TextView) itemView.findViewById(R.id.text_name); + + Person person = roster.get(i); + if(displayLastNameFirst) - vh.personNameTV.setText(person.lastName + ", " + person.firstName); + personNameTV.setText(person.lastName + ", " + person.firstName); else - vh.personNameTV.setText(person.firstName + " " + person.lastName); - vh.houseTV.setText(person.house + ""); - } + personNameTV.setText(person.firstName + " " + person.lastName); + houseTV.setText(person.house + ""); - @Override - public int getItemCount() { - return roster.length; + + if(doDisplayColor) + itemView.setBackgroundResource(HOUSE_COLORS.get(person.house + "")); + + return itemView; } + + } diff --git a/src/main/java/nyc/c4q/db/Book.java b/src/main/java/nyc/c4q/db/Book.java new file mode 100644 index 0000000..7a44655 --- /dev/null +++ b/src/main/java/nyc/c4q/db/Book.java @@ -0,0 +1,331 @@ +package nyc.c4q.db; + +import com.google.gson.annotations.Expose; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +@DatabaseTable +public class Book { + + private static final String ID = "ID"; + private static final String TITLE = "TITLE"; + private static final String AUTHOR = "AUTHOR"; + private static final String ISBN = "ISBN"; + private static final String ISBN13 = "ISBN13"; + @Expose + @DatabaseField(columnName = ID) + public Integer id; + @Expose + @DatabaseField(columnName = TITLE) + public String title; + @Expose + @DatabaseField(columnName = AUTHOR) + public String author; + @Expose + @DatabaseField(columnName = ISBN) + public String isbn; + @Expose + @DatabaseField(columnName = ISBN13) + public String isbn13; + @Expose + @DatabaseField + public String publisher; + @Expose + @DatabaseField + public Integer publishyear; + @Expose + @DatabaseField + public Boolean checkedout; + @Expose + @DatabaseField + public Integer checkedoutby; + @Expose + @DatabaseField + public Integer checkoutdateyear; + @Expose + @DatabaseField + public Integer checkoutdatemonth; + @Expose + @DatabaseField + public Integer checkoutdateday; + @Expose + @DatabaseField + public Integer duedateyear; + @Expose + @DatabaseField + public Integer duedatemonth; + @Expose + @DatabaseField + public Integer duedateday; + + /** + * + * @return + * The id + */ + public Integer getId() { + return id; + } + + /** + * + * @param id + * The id + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * + * @return + * The title + */ + public String getTitle() { + return title; + } + + /** + * + * @param title + * The title + */ + public void setTitle(String title) { + this.title = title; + } + + /** + * + * @return + * The author + */ + public String getAuthor() { + return author; + } + + /** + * + * @param author + * The author + */ + public void setAuthor(String author) { + this.author = author; + } + + /** + * + * @return + * The isbn + */ + public String getIsbn() { + return isbn; + } + + /** + * + * @param isbn + * The isbn + */ + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + /** + * + * @return + * The isbn13 + */ + public String getIsbn13() { + return isbn13; + } + + /** + * + * @param isbn13 + * The isbn13 + */ + public void setIsbn13(String isbn13) { + this.isbn13 = isbn13; + } + + /** + * + * @return + * The publisher + */ + public String getPublisher() { + return publisher; + } + + /** + * + * @param publisher + * The publisher + */ + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + /** + * + * @return + * The publishyear + */ + public Integer getPublishyear() { + return publishyear; + } + + /** + * + * @param publishyear + * The publishyear + */ + public void setPublishyear(Integer publishyear) { + this.publishyear = publishyear; + } + + /** + * + * @return + * The checkedout + */ + public Boolean getCheckedout() { + return checkedout; + } + + /** + * + * @param checkedout + * The checkedout + */ + public void setCheckedout(Boolean checkedout) { + this.checkedout = checkedout; + } + + /** + * + * @return + * The checkedoutby + */ + public Integer getCheckedoutby() { + return checkedoutby; + } + + /** + * + * @param checkedoutby + * The checkedoutby + */ + public void setCheckedoutby(Integer checkedoutby) { + this.checkedoutby = checkedoutby; + } + + /** + * + * @return + * The checkoutdateyear + */ + public Integer getCheckoutdateyear() { + return checkoutdateyear; + } + + /** + * + * @param checkoutdateyear + * The checkoutdateyear + */ + public void setCheckoutdateyear(Integer checkoutdateyear) { + this.checkoutdateyear = checkoutdateyear; + } + + /** + * + * @return + * The checkoutdatemonth + */ + public Integer getCheckoutdatemonth() { + return checkoutdatemonth; + } + + /** + * + * @param checkoutdatemonth + * The checkoutdatemonth + */ + public void setCheckoutdatemonth(Integer checkoutdatemonth) { + this.checkoutdatemonth = checkoutdatemonth; + } + + /** + * + * @return + * The checkoutdateday + */ + public Integer getCheckoutdateday() { + return checkoutdateday; + } + + /** + * + * @param checkoutdateday + * The checkoutdateday + */ + public void setCheckoutdateday(Integer checkoutdateday) { + this.checkoutdateday = checkoutdateday; + } + + /** + * + * @return + * The duedateyear + */ + public Integer getDuedateyear() { + return duedateyear; + } + + /** + * + * @param duedateyear + * The duedateyear + */ + public void setDuedateyear(Integer duedateyear) { + this.duedateyear = duedateyear; + } + + /** + * + * @return + * The duedatemonth + */ + public Integer getDuedatemonth() { + return duedatemonth; + } + + /** + * + * @param duedatemonth + * The duedatemonth + */ + public void setDuedatemonth(Integer duedatemonth) { + this.duedatemonth = duedatemonth; + } + + /** + * + * @return + * The duedateday + */ + public Integer getDuedateday() { + return duedateday; + } + + /** + * + * @param duedateday + * The duedateday + */ + public void setDuedateday(Integer duedateday) { + this.duedateday = duedateday; + } + +} \ No newline at end of file diff --git a/src/main/java/nyc/c4q/db/DatabaseHelper.java b/src/main/java/nyc/c4q/db/DatabaseHelper.java new file mode 100644 index 0000000..677d07e --- /dev/null +++ b/src/main/java/nyc/c4q/db/DatabaseHelper.java @@ -0,0 +1,92 @@ +package nyc.c4q.db; + +import android.accounts.Account; +import android.app.DownloadManager; +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.dao.DaoManager; +import com.j256.ormlite.stmt.PreparedQuery; +import com.j256.ormlite.stmt.QueryBuilder; +import com.j256.ormlite.support.ConnectionSource; +import com.j256.ormlite.table.TableUtils; + +import java.sql.SQLException; +import java.util.List; + +/** + * Created by c4q-anthonyf on 8/30/15. + */ +public class DatabaseHelper extends OrmLiteSqliteOpenHelper { + + private final static int VERSION = 1; + private final static String MYDB = "MyDb"; + + private static DatabaseHelper mHelper; + + public DatabaseHelper(Context context) { + super(context, MYDB, null, VERSION); + } + + public static synchronized DatabaseHelper getInstance(Context context){ + + if(mHelper == null){ + mHelper = new DatabaseHelper(context.getApplicationContext()); + } + + return mHelper; + + } + + @Override + public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { + + try { + TableUtils.createTable(connectionSource, Book.class); + TableUtils.createTable(connectionSource, Member.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + @Override + public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { + try { + TableUtils.dropTable(connectionSource, Book.class, true); + TableUtils.dropTable(connectionSource, Member.class, true); + onCreate(database, connectionSource); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void insertRow(Book book) throws SQLException { + getDao(Book.class).create(book); + } + + public List loadAllBooks() throws SQLException { + return getDao(Book.class).queryForAll(); + } + + public Member loadSpecificMember(String name) throws SQLException { + + Dao memberDao = DaoManager.createDao(connectionSource, Member.class); + QueryBuilder queryBuilder = memberDao.queryBuilder(); + queryBuilder.where().eq(Member.NAME, name); + PreparedQuery preparedQuery = queryBuilder.prepare(); + + return memberDao.query(preparedQuery).get(0); + } + + public void insertRow(Member member) throws SQLException { + getDao(Member.class).create(member); + } + + public List loadAllMembers() throws SQLException { + return getDao(Member.class).queryForAll(); + } + +} + diff --git a/src/main/java/nyc/c4q/db/Member.java b/src/main/java/nyc/c4q/db/Member.java new file mode 100644 index 0000000..c56aff4 --- /dev/null +++ b/src/main/java/nyc/c4q/db/Member.java @@ -0,0 +1,167 @@ +package nyc.c4q.db; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +@DatabaseTable +public class Member { + + public static final String NAME = "NAME"; + @Expose + @DatabaseField + public Integer id; + @Expose + @DatabaseField(columnName = NAME) + public String name; + @SerializedName("dob_month") + @Expose + @DatabaseField + public Integer dobMonth; + @SerializedName("dob_day") + @Expose + @DatabaseField + public Integer dobDay; + @SerializedName("dob_year") + @Expose + @DatabaseField + public Integer dobYear; + @Expose + @DatabaseField + public String city; + @Expose + @DatabaseField + public String state; + + /** + * + * @return + * The id + */ + public Integer getId() { + return id; + } + + /** + * + * @param id + * The id + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * + * @return + * The name + */ + public String getName() { + return name; + } + + /** + * + * @param name + * The name + */ + public void setName(String name) { + this.name = name; + } + + /** + * + * @return + * The dobMonth + */ + public Integer getDobMonth() { + return dobMonth; + } + + /** + * + * @param dobMonth + * The dob_month + */ + public void setDobMonth(Integer dobMonth) { + this.dobMonth = dobMonth; + } + + /** + * + * @return + * The dobDay + */ + public Integer getDobDay() { + return dobDay; + } + + /** + * + * @param dobDay + * The dob_day + */ + public void setDobDay(Integer dobDay) { + this.dobDay = dobDay; + } + + /** + * + * @return + * The dobYear + */ + public Integer getDobYear() { + return dobYear; + } + + /** + * + * @param dobYear + * The dob_year + */ + public void setDobYear(Integer dobYear) { + this.dobYear = dobYear; + } + + /** + * + * @return + * The city + */ + public String getCity() { + return city; + } + + /** + * + * @param city + * The city + */ + public void setCity(String city) { + this.city = city; + } + + /** + * + * @return + * The state + */ + public String getState() { + return state; + } + + /** + * + * @param state + * The state + */ + public void setState(String state) { + this.state = state; + } + + @Override + public String toString() { + return "id: " + id + "\nname: " + name + "\ndob: " + dobDay+"/"; + } +} \ No newline at end of file diff --git a/src/main/res/raw/books.json b/src/main/res/raw/books.json index 8cc9673..79b378e 100644 --- a/src/main/res/raw/books.json +++ b/src/main/res/raw/books.json @@ -838,7 +838,7 @@ "isbn": "0439554934", "isbn13": "9780439554930", "publisher": "Scholastic", - "publishyear": 2003. + "publishyear": 2003, "checkedout": true, "checkedoutby": 38, "checkoutdateyear": 2015, From 29b31dd4c1ccd52a6f5151dcc4293c60806379bb Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Sun, 30 Aug 2015 18:03:58 -0400 Subject: [PATCH 3/6] part 3 is bugg --- src/main/java/nyc/c4q/LibraryActivity.java | 51 ++++++++++++++++---- src/main/java/nyc/c4q/db/Book.java | 16 +++--- src/main/java/nyc/c4q/db/DatabaseHelper.java | 20 +++++++- src/main/java/nyc/c4q/db/Member.java | 8 ++- 4 files changed, 75 insertions(+), 20 deletions(-) diff --git a/src/main/java/nyc/c4q/LibraryActivity.java b/src/main/java/nyc/c4q/LibraryActivity.java index ce62daf..59d7021 100644 --- a/src/main/java/nyc/c4q/LibraryActivity.java +++ b/src/main/java/nyc/c4q/LibraryActivity.java @@ -4,26 +4,24 @@ import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; -import android.util.JsonReader; import android.util.Log; import android.view.View; import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import org.json.JSONArray; -import org.json.JSONObject; - import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; import nyc.c4q.db.Book; import nyc.c4q.db.DatabaseHelper; @@ -34,7 +32,10 @@ public class LibraryActivity extends Activity { public EditText inputParameter; DatabaseHelper dbHelper; + TextView displayInfo; Context context; + List members = null; + List books = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -44,6 +45,7 @@ protected void onCreate(Bundle savedInstanceState) { inputParameter = (EditText) findViewById(R.id.input_parameter); dbHelper = DatabaseHelper.getInstance(this); + displayInfo = (TextView) findViewById(R.id.text_display); new dbInitialize().execute(); } @@ -98,6 +100,7 @@ protected Void doInBackground(Void... voids) { e.printStackTrace(); } } + Log.d("DATABASE", "LOADED"); return null; } @@ -119,26 +122,54 @@ public boolean checkIn(int memberId, int bookId) { } public void button_getMember_onClick(View view) { - String name = inputParameter.getText().toString(); + final String name = inputParameter.getText().toString(); // TODO Display member information for the member with the given name. - Member member = null; + + try { - member = dbHelper.loadSpecificMember(name); + members = dbHelper.loadSpecificMember(name); } catch (SQLException e) { e.printStackTrace(); } - if(member != null){ - + if(members != null && members.size() > 0){ + Log.d("MEMBER",members.get(0).getId() + ""); + displayInfo.setText(members.get(0).toString()); + }else{ + Toast.makeText(context,"Member not found",Toast.LENGTH_SHORT).show(); } + inputParameter.setText(""); } public void button_getBook_onClick(View view) { String isbn = inputParameter.getText().toString(); + Integer isbnNumber = 0; + try { + isbnNumber = Integer.parseInt(isbn); + }catch(NumberFormatException e){ + e.printStackTrace(); + } // TODO Display book information for the book with the given ISBN. + + + + try { + books = dbHelper.loadSpecificBook(isbnNumber); + } catch (SQLException e) { + e.printStackTrace(); + } + + if(books != null && books.size() > 0){ + Log.d("BOOK",books.get(0).getId() + ""); + displayInfo.setText(books.get(0).toString()); + }else{ + Toast.makeText(context,"Book not found",Toast.LENGTH_SHORT).show(); + } + + inputParameter.setText(""); } public void button_getCheckedOut_onClick(View view) { diff --git a/src/main/java/nyc/c4q/db/Book.java b/src/main/java/nyc/c4q/db/Book.java index 7a44655..0682405 100644 --- a/src/main/java/nyc/c4q/db/Book.java +++ b/src/main/java/nyc/c4q/db/Book.java @@ -7,13 +7,13 @@ @DatabaseTable public class Book { - private static final String ID = "ID"; - private static final String TITLE = "TITLE"; - private static final String AUTHOR = "AUTHOR"; - private static final String ISBN = "ISBN"; - private static final String ISBN13 = "ISBN13"; + public static final String ID = "ID"; + public static final String TITLE = "TITLE"; + public static final String AUTHOR = "AUTHOR"; + public static final String ISBN = "ISBN"; + public static final String ISBN13 = "ISBN13"; @Expose - @DatabaseField(columnName = ID) + @DatabaseField(columnName = ID, id = true) public Integer id; @Expose @DatabaseField(columnName = TITLE) @@ -58,6 +58,10 @@ public class Book { @DatabaseField public Integer duedateday; + public Book(){ + + } + /** * * @return diff --git a/src/main/java/nyc/c4q/db/DatabaseHelper.java b/src/main/java/nyc/c4q/db/DatabaseHelper.java index 677d07e..985a53b 100644 --- a/src/main/java/nyc/c4q/db/DatabaseHelper.java +++ b/src/main/java/nyc/c4q/db/DatabaseHelper.java @@ -4,6 +4,7 @@ import android.app.DownloadManager; import android.content.Context; import android.database.sqlite.SQLiteDatabase; +import android.util.Log; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; @@ -14,6 +15,7 @@ import com.j256.ormlite.table.TableUtils; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; /** @@ -62,6 +64,18 @@ public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource } } + public List loadSpecificBook(int id) throws SQLException { + Log.d("DB SEARCH", "ISBN: "+ id); + Dao memberDao = DaoManager.createDao(connectionSource, Book.class); + QueryBuilder queryBuilder = memberDao.queryBuilder(); + queryBuilder.where().eq(Book.ID, id); + PreparedQuery preparedQuery = queryBuilder.prepare(); + + Log.d("Book Search", "Complete"); + + return memberDao.query(preparedQuery); + } + public void insertRow(Book book) throws SQLException { getDao(Book.class).create(book); } @@ -70,14 +84,16 @@ public List loadAllBooks() throws SQLException { return getDao(Book.class).queryForAll(); } - public Member loadSpecificMember(String name) throws SQLException { + public List loadSpecificMember(String name) throws SQLException { + Log.d("DB SEARCH", "Member: "+ name); Dao memberDao = DaoManager.createDao(connectionSource, Member.class); QueryBuilder queryBuilder = memberDao.queryBuilder(); queryBuilder.where().eq(Member.NAME, name); PreparedQuery preparedQuery = queryBuilder.prepare(); - return memberDao.query(preparedQuery).get(0); + Log.d("Member Search", "Complete"); + return memberDao.query(preparedQuery); } public void insertRow(Member member) throws SQLException { diff --git a/src/main/java/nyc/c4q/db/Member.java b/src/main/java/nyc/c4q/db/Member.java index c56aff4..9c41b55 100644 --- a/src/main/java/nyc/c4q/db/Member.java +++ b/src/main/java/nyc/c4q/db/Member.java @@ -10,7 +10,7 @@ public class Member { public static final String NAME = "NAME"; @Expose - @DatabaseField + @DatabaseField(id = true) public Integer id; @Expose @DatabaseField(columnName = NAME) @@ -34,6 +34,10 @@ public class Member { @DatabaseField public String state; + public Member(){ + + } + /** * * @return @@ -162,6 +166,6 @@ public void setState(String state) { @Override public String toString() { - return "id: " + id + "\nname: " + name + "\ndob: " + dobDay+"/"; + return "id: " + id + "\nname: " + name + "\ndob: " + dobDay+"/"+dobMonth+"/"+dobYear + "\nlocation: " + city + ", " + state; } } \ No newline at end of file From 9a15140a0321756df2b725c6a552a8fb9d5f3445 Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Sun, 30 Aug 2015 18:13:18 -0400 Subject: [PATCH 4/6] fixed shared prefs --- src/main/java/nyc/c4q/ListActivity.java | 43 +++++++++++++++++++------ 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/src/main/java/nyc/c4q/ListActivity.java b/src/main/java/nyc/c4q/ListActivity.java index 22a1ac7..5f83f4b 100644 --- a/src/main/java/nyc/c4q/ListActivity.java +++ b/src/main/java/nyc/c4q/ListActivity.java @@ -1,17 +1,15 @@ package nyc.c4q; import android.app.Activity; +import android.content.SharedPreferences; import android.os.Bundle; -import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ListView; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.List; public class ListActivity extends Activity { @@ -20,6 +18,9 @@ public class ListActivity extends Activity { private ArrayList people; private Button lastFirstButton, showColorButton; private boolean doShowColor, displayLastFirst; + private static final String S_PREF = "s pref"; + private static final String SHOW_COLOR = "show color"; + private static final String DISPLAY_LAST_FIRST = "last name first"; public static final Person[] PEOPLE = { new Person("Hannah", "Abbott", House.Hufflepuff), @@ -56,12 +57,13 @@ public class ListActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); + SharedPreferences sharedPreferences = getSharedPreferences(S_PREF,MODE_PRIVATE); + doShowColor = sharedPreferences.getBoolean(SHOW_COLOR, true); + displayLastFirst = sharedPreferences.getBoolean(DISPLAY_LAST_FIRST, true); list = (ListView) findViewById(R.id.list); lastFirstButton = (Button) findViewById(R.id.button_name); showColorButton = (Button) findViewById(R.id.button_color); - doShowColor = true; - displayLastFirst = true; people = new ArrayList<>(); for(int i = 0; i < PEOPLE.length; i++){ @@ -70,38 +72,59 @@ protected void onCreate(Bundle savedInstanceState) { setAdapter(); - + if(!displayLastFirst){ + lastFirstButton.setText("First Last"); + } lastFirstButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (lastFirstButton.getText().toString().equals("Last, First")) { lastFirstButton.setText("First Last"); - displayLastFirst = false; + setDisplayLastFirst(false); setAdapter(); } else { lastFirstButton.setText("Last, First"); - displayLastFirst = true; + setDisplayLastFirst(true); setAdapter(); } } }); + if(!doShowColor){ + showColorButton.setText("Hide Color"); + } showColorButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (showColorButton.getText().toString().equals("Show Color")) { showColorButton.setText("Hide Color"); - doShowColor = false; + setShowColor(false); setAdapter(); } else { showColorButton.setText("Show Color"); - doShowColor = true; + setShowColor(true); setAdapter(); } } }); } + private void setShowColor(boolean bool){ + doShowColor = bool; + SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(SHOW_COLOR, bool); + editor.commit(); + } + + private void setDisplayLastFirst(boolean bool){ + displayLastFirst = bool; + SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(DISPLAY_LAST_FIRST, bool); + editor.commit(); + } + private void setAdapter() { if(displayLastFirst) sortByLastName(); From 78b72bbf78b63d6e8cff8a2cf855cabda6d9177f Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Sun, 27 Sep 2015 15:49:59 -0400 Subject: [PATCH 5/6] made code more efficient --- src/main/java/nyc/c4q/BooleanObj.java | 22 +++++++++++ src/main/java/nyc/c4q/LibraryActivity.java | 1 + src/main/java/nyc/c4q/ListActivity.java | 36 +++++++++--------- src/main/java/nyc/c4q/RosterListAdapter.java | 39 +++++++++++++------- src/main/java/nyc/c4q/db/Book.java | 2 +- src/main/java/nyc/c4q/db/DatabaseHelper.java | 24 ++++++++++-- src/main/java/nyc/c4q/db/Member.java | 2 +- 7 files changed, 90 insertions(+), 36 deletions(-) create mode 100644 src/main/java/nyc/c4q/BooleanObj.java diff --git a/src/main/java/nyc/c4q/BooleanObj.java b/src/main/java/nyc/c4q/BooleanObj.java new file mode 100644 index 0000000..6f7f06c --- /dev/null +++ b/src/main/java/nyc/c4q/BooleanObj.java @@ -0,0 +1,22 @@ +package nyc.c4q; + +/** + * Created by c4q-anthonyf on 9/27/15. + */ +public class BooleanObj { + + private boolean booleanValue; + + public BooleanObj(boolean booleanValue){ + this.booleanValue = booleanValue; + } + + public boolean getBooleanValue(){ + return booleanValue; + } + + public void setBooleanValue(boolean booleanValue){ + this.booleanValue = booleanValue; + } + +} diff --git a/src/main/java/nyc/c4q/LibraryActivity.java b/src/main/java/nyc/c4q/LibraryActivity.java index 59d7021..6ba4fa9 100644 --- a/src/main/java/nyc/c4q/LibraryActivity.java +++ b/src/main/java/nyc/c4q/LibraryActivity.java @@ -131,6 +131,7 @@ public void button_getMember_onClick(View view) { members = dbHelper.loadSpecificMember(name); } catch (SQLException e) { e.printStackTrace(); + Toast.makeText(context,"SQLException error",Toast.LENGTH_SHORT).show(); } if(members != null && members.size() > 0){ diff --git a/src/main/java/nyc/c4q/ListActivity.java b/src/main/java/nyc/c4q/ListActivity.java index 5f83f4b..4d4959f 100644 --- a/src/main/java/nyc/c4q/ListActivity.java +++ b/src/main/java/nyc/c4q/ListActivity.java @@ -17,10 +17,11 @@ public class ListActivity extends Activity { public ListView list; private ArrayList people; private Button lastFirstButton, showColorButton; - private boolean doShowColor, displayLastFirst; + private BooleanObj doShowColor, displayLastFirst; private static final String S_PREF = "s pref"; private static final String SHOW_COLOR = "show color"; private static final String DISPLAY_LAST_FIRST = "last name first"; + private RosterListAdapter rosterListAdapter; public static final Person[] PEOPLE = { new Person("Hannah", "Abbott", House.Hufflepuff), @@ -58,8 +59,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); SharedPreferences sharedPreferences = getSharedPreferences(S_PREF,MODE_PRIVATE); - doShowColor = sharedPreferences.getBoolean(SHOW_COLOR, true); - displayLastFirst = sharedPreferences.getBoolean(DISPLAY_LAST_FIRST, true); + doShowColor = new BooleanObj(sharedPreferences.getBoolean(SHOW_COLOR, true)); + displayLastFirst = new BooleanObj(sharedPreferences.getBoolean(DISPLAY_LAST_FIRST, true)); list = (ListView) findViewById(R.id.list); lastFirstButton = (Button) findViewById(R.id.button_name); @@ -69,10 +70,11 @@ protected void onCreate(Bundle savedInstanceState) { for(int i = 0; i < PEOPLE.length; i++){ people.add(PEOPLE[i]); } + rosterListAdapter = new RosterListAdapter(people, doShowColor, displayLastFirst); + list.setAdapter(rosterListAdapter); + sortData(); - setAdapter(); - - if(!displayLastFirst){ + if(!displayLastFirst.getBooleanValue()){ lastFirstButton.setText("First Last"); } lastFirstButton.setOnClickListener(new View.OnClickListener() { @@ -81,16 +83,16 @@ public void onClick(View view) { if (lastFirstButton.getText().toString().equals("Last, First")) { lastFirstButton.setText("First Last"); setDisplayLastFirst(false); - setAdapter(); + sortData(); } else { lastFirstButton.setText("Last, First"); setDisplayLastFirst(true); - setAdapter(); + sortData(); } } }); - if(!doShowColor){ + if(!doShowColor.getBooleanValue()){ showColorButton.setText("Hide Color"); } showColorButton.setOnClickListener(new View.OnClickListener() { @@ -99,18 +101,18 @@ public void onClick(View view) { if (showColorButton.getText().toString().equals("Show Color")) { showColorButton.setText("Hide Color"); setShowColor(false); - setAdapter(); + rosterListAdapter.notifyDataSetChanged(); } else { showColorButton.setText("Show Color"); setShowColor(true); - setAdapter(); + rosterListAdapter.notifyDataSetChanged(); } } }); } private void setShowColor(boolean bool){ - doShowColor = bool; + doShowColor.setBooleanValue(bool); SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(SHOW_COLOR, bool); @@ -118,21 +120,21 @@ private void setShowColor(boolean bool){ } private void setDisplayLastFirst(boolean bool){ - displayLastFirst = bool; + displayLastFirst.setBooleanValue(bool); SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(DISPLAY_LAST_FIRST, bool); editor.commit(); } - private void setAdapter() { - if(displayLastFirst) + private void sortData() { + if(displayLastFirst.getBooleanValue()) sortByLastName(); else sortByFirstName(); - RosterListAdapter rosterListAdapter = new RosterListAdapter(people, doShowColor, displayLastFirst); - list.setAdapter(rosterListAdapter); + + rosterListAdapter.notifyDataSetChanged(); } diff --git a/src/main/java/nyc/c4q/RosterListAdapter.java b/src/main/java/nyc/c4q/RosterListAdapter.java index 1cf1df2..a2eee4f 100644 --- a/src/main/java/nyc/c4q/RosterListAdapter.java +++ b/src/main/java/nyc/c4q/RosterListAdapter.java @@ -20,11 +20,11 @@ public class RosterListAdapter extends BaseAdapter{ private ArrayList roster; - private boolean displayLastNameFirst; - private boolean doDisplayColor; + private BooleanObj displayLastNameFirst; + private BooleanObj doDisplayColor; final Map HOUSE_COLORS; - public RosterListAdapter(ArrayList roster, boolean doDisplayColor, boolean displayLastNameFirst){ + public RosterListAdapter(ArrayList roster, BooleanObj doDisplayColor, BooleanObj displayLastNameFirst){ this.roster = roster; this.doDisplayColor = doDisplayColor; this.displayLastNameFirst = displayLastNameFirst; @@ -50,25 +50,38 @@ public long getItemId(int i) { return 0; } + static class ViewHolder { + TextView personNameTV, houseTV; + } + @Override public View getView(int i, View view, ViewGroup viewGroup) { - View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listitem_member, viewGroup, false); - TextView houseTV = (TextView) itemView.findViewById(R.id.text_house); - TextView personNameTV = (TextView) itemView.findViewById(R.id.text_name); + ViewHolder v; + if(view == null) { + view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.listitem_member, viewGroup, false); + v = new ViewHolder(); + v.houseTV = (TextView) view.findViewById(R.id.text_house); + v.personNameTV = (TextView) view.findViewById(R.id.text_name); + view.setTag(v); + }else{ + v = (ViewHolder) view.getTag(); + } Person person = roster.get(i); - if(displayLastNameFirst) - personNameTV.setText(person.lastName + ", " + person.firstName); + if(displayLastNameFirst.getBooleanValue()) + v.personNameTV.setText(person.lastName + ", " + person.firstName); else - personNameTV.setText(person.firstName + " " + person.lastName); - houseTV.setText(person.house + ""); + v.personNameTV.setText(person.firstName + " " + person.lastName); + v.houseTV.setText(person.house + ""); - if(doDisplayColor) - itemView.setBackgroundResource(HOUSE_COLORS.get(person.house + "")); + if(doDisplayColor.getBooleanValue()) + view.setBackgroundResource(HOUSE_COLORS.get(person.house + "")); + else + view.setBackgroundResource(0); - return itemView; + return view; } diff --git a/src/main/java/nyc/c4q/db/Book.java b/src/main/java/nyc/c4q/db/Book.java index 0682405..6ab2267 100644 --- a/src/main/java/nyc/c4q/db/Book.java +++ b/src/main/java/nyc/c4q/db/Book.java @@ -13,7 +13,7 @@ public class Book { public static final String ISBN = "ISBN"; public static final String ISBN13 = "ISBN13"; @Expose - @DatabaseField(columnName = ID, id = true) + @DatabaseField(columnName = ID) public Integer id; @Expose @DatabaseField(columnName = TITLE) diff --git a/src/main/java/nyc/c4q/db/DatabaseHelper.java b/src/main/java/nyc/c4q/db/DatabaseHelper.java index 985a53b..569a164 100644 --- a/src/main/java/nyc/c4q/db/DatabaseHelper.java +++ b/src/main/java/nyc/c4q/db/DatabaseHelper.java @@ -27,6 +27,8 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private final static String MYDB = "MyDb"; private static DatabaseHelper mHelper; + private Dao memberDao; + private Dao bookDao; public DatabaseHelper(Context context) { super(context, MYDB, null, VERSION); @@ -64,16 +66,30 @@ public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource } } + public Dao getMemberDao() throws SQLException{ + if(memberDao == null){ + memberDao = getDao(Member.class); + } + return memberDao; + } + + public Dao getBookDao() throws SQLException{ + if(bookDao == null){ + bookDao = getDao(Book.class); + } + return bookDao; + } + public List loadSpecificBook(int id) throws SQLException { Log.d("DB SEARCH", "ISBN: "+ id); - Dao memberDao = DaoManager.createDao(connectionSource, Book.class); - QueryBuilder queryBuilder = memberDao.queryBuilder(); + bookDao = getBookDao(); + QueryBuilder queryBuilder = bookDao.queryBuilder(); queryBuilder.where().eq(Book.ID, id); PreparedQuery preparedQuery = queryBuilder.prepare(); Log.d("Book Search", "Complete"); - return memberDao.query(preparedQuery); + return bookDao.query(preparedQuery); } public void insertRow(Book book) throws SQLException { @@ -87,7 +103,7 @@ public List loadAllBooks() throws SQLException { public List loadSpecificMember(String name) throws SQLException { Log.d("DB SEARCH", "Member: "+ name); - Dao memberDao = DaoManager.createDao(connectionSource, Member.class); + memberDao = getMemberDao(); QueryBuilder queryBuilder = memberDao.queryBuilder(); queryBuilder.where().eq(Member.NAME, name); PreparedQuery preparedQuery = queryBuilder.prepare(); diff --git a/src/main/java/nyc/c4q/db/Member.java b/src/main/java/nyc/c4q/db/Member.java index 9c41b55..f04a476 100644 --- a/src/main/java/nyc/c4q/db/Member.java +++ b/src/main/java/nyc/c4q/db/Member.java @@ -10,7 +10,7 @@ public class Member { public static final String NAME = "NAME"; @Expose - @DatabaseField(id = true) + @DatabaseField public Integer id; @Expose @DatabaseField(columnName = NAME) From 88fe439d6d5a9456d840fbca4342d3ba8b6d2e5b Mon Sep 17 00:00:00 2001 From: AnthonyFermin Date: Mon, 28 Sep 2015 13:48:50 -0400 Subject: [PATCH 6/6] Cleaned up List Activity --- src/main/java/nyc/c4q/BooleanObj.java | 22 ------- src/main/java/nyc/c4q/LibraryActivity.java | 31 ++++------ src/main/java/nyc/c4q/ListActivity.java | 23 ++++--- src/main/java/nyc/c4q/RosterListAdapter.java | 21 +++++-- src/main/java/nyc/c4q/db/Book.java | 10 ++++ src/main/java/nyc/c4q/db/DatabaseHelper.java | 63 ++++---------------- src/main/java/nyc/c4q/db/Member.java | 12 ++-- 7 files changed, 68 insertions(+), 114 deletions(-) delete mode 100644 src/main/java/nyc/c4q/BooleanObj.java diff --git a/src/main/java/nyc/c4q/BooleanObj.java b/src/main/java/nyc/c4q/BooleanObj.java deleted file mode 100644 index 6f7f06c..0000000 --- a/src/main/java/nyc/c4q/BooleanObj.java +++ /dev/null @@ -1,22 +0,0 @@ -package nyc.c4q; - -/** - * Created by c4q-anthonyf on 9/27/15. - */ -public class BooleanObj { - - private boolean booleanValue; - - public BooleanObj(boolean booleanValue){ - this.booleanValue = booleanValue; - } - - public boolean getBooleanValue(){ - return booleanValue; - } - - public void setBooleanValue(boolean booleanValue){ - this.booleanValue = booleanValue; - } - -} diff --git a/src/main/java/nyc/c4q/LibraryActivity.java b/src/main/java/nyc/c4q/LibraryActivity.java index 6ba4fa9..5e49cee 100644 --- a/src/main/java/nyc/c4q/LibraryActivity.java +++ b/src/main/java/nyc/c4q/LibraryActivity.java @@ -21,7 +21,6 @@ import java.io.Reader; import java.sql.SQLException; import java.util.ArrayList; -import java.util.List; import nyc.c4q.db.Book; import nyc.c4q.db.DatabaseHelper; @@ -34,8 +33,8 @@ public class LibraryActivity extends Activity { DatabaseHelper dbHelper; TextView displayInfo; Context context; - List members = null; - List books = null; + Member member = null; + Book book = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -73,7 +72,7 @@ protected Void doInBackground(Void... voids) { //MEMBERS Reader memReader = null; InputStream memStream = context.getResources() - .openRawResource(R.raw.books); + .openRawResource(R.raw.members); memReader = new BufferedReader(new InputStreamReader(memStream), 8092); // parse json @@ -122,21 +121,22 @@ public boolean checkIn(int memberId, int bookId) { } public void button_getMember_onClick(View view) { + displayInfo.setText(""); final String name = inputParameter.getText().toString(); // TODO Display member information for the member with the given name. try { - members = dbHelper.loadSpecificMember(name); + member = dbHelper.loadSpecificMember(name); } catch (SQLException e) { e.printStackTrace(); Toast.makeText(context,"SQLException error",Toast.LENGTH_SHORT).show(); } - if(members != null && members.size() > 0){ - Log.d("MEMBER",members.get(0).getId() + ""); - displayInfo.setText(members.get(0).toString()); + if(member != null){ + Log.d("MEMBER", member.getId() + ""); + displayInfo.setText(member.toString()); }else{ Toast.makeText(context,"Member not found",Toast.LENGTH_SHORT).show(); } @@ -145,27 +145,22 @@ public void button_getMember_onClick(View view) { } public void button_getBook_onClick(View view) { + displayInfo.setText(""); String isbn = inputParameter.getText().toString(); - Integer isbnNumber = 0; - try { - isbnNumber = Integer.parseInt(isbn); - }catch(NumberFormatException e){ - e.printStackTrace(); - } // TODO Display book information for the book with the given ISBN. try { - books = dbHelper.loadSpecificBook(isbnNumber); + book = dbHelper.loadSpecificBook(isbn); } catch (SQLException e) { e.printStackTrace(); } - if(books != null && books.size() > 0){ - Log.d("BOOK",books.get(0).getId() + ""); - displayInfo.setText(books.get(0).toString()); + if(book != null){ + Log.d("BOOK", book.getId() + ""); + displayInfo.setText(book.toString()); }else{ Toast.makeText(context,"Book not found",Toast.LENGTH_SHORT).show(); } diff --git a/src/main/java/nyc/c4q/ListActivity.java b/src/main/java/nyc/c4q/ListActivity.java index 4d4959f..af22544 100644 --- a/src/main/java/nyc/c4q/ListActivity.java +++ b/src/main/java/nyc/c4q/ListActivity.java @@ -17,7 +17,7 @@ public class ListActivity extends Activity { public ListView list; private ArrayList people; private Button lastFirstButton, showColorButton; - private BooleanObj doShowColor, displayLastFirst; + private boolean doShowColor, displayLastFirst; private static final String S_PREF = "s pref"; private static final String SHOW_COLOR = "show color"; private static final String DISPLAY_LAST_FIRST = "last name first"; @@ -59,8 +59,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); SharedPreferences sharedPreferences = getSharedPreferences(S_PREF,MODE_PRIVATE); - doShowColor = new BooleanObj(sharedPreferences.getBoolean(SHOW_COLOR, true)); - displayLastFirst = new BooleanObj(sharedPreferences.getBoolean(DISPLAY_LAST_FIRST, true)); + doShowColor = sharedPreferences.getBoolean(SHOW_COLOR, true); + displayLastFirst = sharedPreferences.getBoolean(DISPLAY_LAST_FIRST, true); list = (ListView) findViewById(R.id.list); lastFirstButton = (Button) findViewById(R.id.button_name); @@ -74,7 +74,7 @@ protected void onCreate(Bundle savedInstanceState) { list.setAdapter(rosterListAdapter); sortData(); - if(!displayLastFirst.getBooleanValue()){ + if(!displayLastFirst){ lastFirstButton.setText("First Last"); } lastFirstButton.setOnClickListener(new View.OnClickListener() { @@ -92,7 +92,7 @@ public void onClick(View view) { } }); - if(!doShowColor.getBooleanValue()){ + if(!doShowColor){ showColorButton.setText("Hide Color"); } showColorButton.setOnClickListener(new View.OnClickListener() { @@ -101,18 +101,18 @@ public void onClick(View view) { if (showColorButton.getText().toString().equals("Show Color")) { showColorButton.setText("Hide Color"); setShowColor(false); - rosterListAdapter.notifyDataSetChanged(); + rosterListAdapter.setDisplayColor(doShowColor); } else { showColorButton.setText("Show Color"); setShowColor(true); - rosterListAdapter.notifyDataSetChanged(); + rosterListAdapter.setDisplayColor(doShowColor); } } }); } private void setShowColor(boolean bool){ - doShowColor.setBooleanValue(bool); + doShowColor = bool; SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(SHOW_COLOR, bool); @@ -120,7 +120,7 @@ private void setShowColor(boolean bool){ } private void setDisplayLastFirst(boolean bool){ - displayLastFirst.setBooleanValue(bool); + displayLastFirst = bool; SharedPreferences sharedPreferences = getSharedPreferences(S_PREF, MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(DISPLAY_LAST_FIRST, bool); @@ -128,13 +128,12 @@ private void setDisplayLastFirst(boolean bool){ } private void sortData() { - if(displayLastFirst.getBooleanValue()) + if(displayLastFirst) sortByLastName(); else sortByFirstName(); - - rosterListAdapter.notifyDataSetChanged(); + rosterListAdapter.setDisplayLastNameFirst(displayLastFirst); } diff --git a/src/main/java/nyc/c4q/RosterListAdapter.java b/src/main/java/nyc/c4q/RosterListAdapter.java index a2eee4f..2e32ac3 100644 --- a/src/main/java/nyc/c4q/RosterListAdapter.java +++ b/src/main/java/nyc/c4q/RosterListAdapter.java @@ -20,11 +20,11 @@ public class RosterListAdapter extends BaseAdapter{ private ArrayList roster; - private BooleanObj displayLastNameFirst; - private BooleanObj doDisplayColor; + private boolean displayLastNameFirst; + private boolean doDisplayColor; final Map HOUSE_COLORS; - public RosterListAdapter(ArrayList roster, BooleanObj doDisplayColor, BooleanObj displayLastNameFirst){ + public RosterListAdapter(ArrayList roster, boolean doDisplayColor, boolean displayLastNameFirst){ this.roster = roster; this.doDisplayColor = doDisplayColor; this.displayLastNameFirst = displayLastNameFirst; @@ -69,14 +69,14 @@ public View getView(int i, View view, ViewGroup viewGroup) { Person person = roster.get(i); - if(displayLastNameFirst.getBooleanValue()) + if(displayLastNameFirst) v.personNameTV.setText(person.lastName + ", " + person.firstName); else v.personNameTV.setText(person.firstName + " " + person.lastName); v.houseTV.setText(person.house + ""); - if(doDisplayColor.getBooleanValue()) + if(doDisplayColor) view.setBackgroundResource(HOUSE_COLORS.get(person.house + "")); else view.setBackgroundResource(0); @@ -84,5 +84,16 @@ public View getView(int i, View view, ViewGroup viewGroup) { return view; } + public void setDisplayLastNameFirst(boolean lastNameFirst){ + displayLastNameFirst = lastNameFirst; + + notifyDataSetChanged(); + } + + public void setDisplayColor(boolean showColor){ + doDisplayColor = showColor; + + notifyDataSetChanged(); + } } diff --git a/src/main/java/nyc/c4q/db/Book.java b/src/main/java/nyc/c4q/db/Book.java index 6ab2267..46b729a 100644 --- a/src/main/java/nyc/c4q/db/Book.java +++ b/src/main/java/nyc/c4q/db/Book.java @@ -332,4 +332,14 @@ public void setDuedateday(Integer duedateday) { this.duedateday = duedateday; } + @Override + public String toString() { + return "id: " + id + + "\ntitle: " + title + + "\nauthor: " + author + + "\nisbn: " + isbn + + "\nisbn13: " + isbn13 + + "\npublisher: " + publisher + + "\npublication year: " + publishyear; + } } \ No newline at end of file diff --git a/src/main/java/nyc/c4q/db/DatabaseHelper.java b/src/main/java/nyc/c4q/db/DatabaseHelper.java index 569a164..3fa693f 100644 --- a/src/main/java/nyc/c4q/db/DatabaseHelper.java +++ b/src/main/java/nyc/c4q/db/DatabaseHelper.java @@ -1,22 +1,13 @@ package nyc.c4q.db; -import android.accounts.Account; -import android.app.DownloadManager; import android.content.Context; import android.database.sqlite.SQLiteDatabase; -import android.util.Log; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; -import com.j256.ormlite.dao.Dao; -import com.j256.ormlite.dao.DaoManager; -import com.j256.ormlite.stmt.PreparedQuery; -import com.j256.ormlite.stmt.QueryBuilder; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; /** * Created by c4q-anthonyf on 8/30/15. @@ -27,8 +18,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private final static String MYDB = "MyDb"; private static DatabaseHelper mHelper; - private Dao memberDao; - private Dao bookDao; public DatabaseHelper(Context context) { super(context, MYDB, null, VERSION); @@ -66,59 +55,27 @@ public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource } } - public Dao getMemberDao() throws SQLException{ - if(memberDao == null){ - memberDao = getDao(Member.class); - } - return memberDao; + public Member loadSpecificMember(String name) throws SQLException, java.sql.SQLException { + return getDao(Member.class) + .queryBuilder() + .where().eq("NAME", name) + .queryForFirst(); } - public Dao getBookDao() throws SQLException{ - if(bookDao == null){ - bookDao = getDao(Book.class); - } - return bookDao; - } - - public List loadSpecificBook(int id) throws SQLException { - Log.d("DB SEARCH", "ISBN: "+ id); - bookDao = getBookDao(); - QueryBuilder queryBuilder = bookDao.queryBuilder(); - queryBuilder.where().eq(Book.ID, id); - PreparedQuery preparedQuery = queryBuilder.prepare(); - - Log.d("Book Search", "Complete"); - - return bookDao.query(preparedQuery); + public Book loadSpecificBook(String isbn) throws SQLException, java.sql.SQLException { + return getDao(Book.class) + .queryBuilder() + .where().eq("ISBN", isbn) + .queryForFirst(); } public void insertRow(Book book) throws SQLException { getDao(Book.class).create(book); } - public List loadAllBooks() throws SQLException { - return getDao(Book.class).queryForAll(); - } - - public List loadSpecificMember(String name) throws SQLException { - Log.d("DB SEARCH", "Member: "+ name); - - memberDao = getMemberDao(); - QueryBuilder queryBuilder = memberDao.queryBuilder(); - queryBuilder.where().eq(Member.NAME, name); - PreparedQuery preparedQuery = queryBuilder.prepare(); - - Log.d("Member Search", "Complete"); - return memberDao.query(preparedQuery); - } - public void insertRow(Member member) throws SQLException { getDao(Member.class).create(member); } - public List loadAllMembers() throws SQLException { - return getDao(Member.class).queryForAll(); - } - } diff --git a/src/main/java/nyc/c4q/db/Member.java b/src/main/java/nyc/c4q/db/Member.java index f04a476..2263db0 100644 --- a/src/main/java/nyc/c4q/db/Member.java +++ b/src/main/java/nyc/c4q/db/Member.java @@ -9,6 +9,7 @@ public class Member { public static final String NAME = "NAME"; + @Expose @DatabaseField public Integer id; @@ -25,13 +26,13 @@ public class Member { public Integer dobDay; @SerializedName("dob_year") @Expose - @DatabaseField + @DatabaseField public Integer dobYear; @Expose - @DatabaseField + @DatabaseField public String city; @Expose - @DatabaseField + @DatabaseField public String state; public Member(){ @@ -166,6 +167,9 @@ public void setState(String state) { @Override public String toString() { - return "id: " + id + "\nname: " + name + "\ndob: " + dobDay+"/"+dobMonth+"/"+dobYear + "\nlocation: " + city + ", " + state; + return "id: " + id + + "\nname: " + name + + "\ndob: " + dobDay+"/"+dobMonth+"/"+dobYear + + "\nlocation: " + city + ", " + state; } } \ No newline at end of file