Skip to content
This repository was archived by the owner on Apr 20, 2019. It is now read-only.

final assessment #4

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,23 @@ 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'
testCompile 'org.hamcrest:hamcrest-library:1.1'
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'

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'
Expand All @@ -71,5 +67,4 @@ dependencies {
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}

}
3 changes: 0 additions & 3 deletions src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ListViewActivity"
android:windowSoftInputMode="adjustPan" />
<activity android:name=".NetworkActivity" />
<activity android:name=".JSONActivity" />
<activity android:name=".NotificationActivity" />
Expand Down
125 changes: 124 additions & 1 deletion src/main/java/nyc/c4q/LibraryActivity.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,108 @@
package nyc.c4q;

import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
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.JsonParser;

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;
TextView displayInfo;
Context context;
Member member = null;
Book book = null;

@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);
displayInfo = (TextView) findViewById(R.id.text_display);

new dbInitialize().execute();
}

private class dbInitialize extends AsyncTask<Void, Void, Void>{

@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<Book> 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.members);
memReader = new BufferedReader(new InputStreamReader(memStream), 8092);

// parse json
JsonParser memParser = new JsonParser();
JsonArray memJsonArray = (JsonArray)memParser.parse(memReader);
ArrayList<Member> 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();
}
}
Log.d("DATABASE", "LOADED");

return null;
}
}

public void checkOut(int memberId, int bookId) {
Expand All @@ -34,15 +121,51 @@ public boolean checkIn(int memberId, int bookId) {
}

public void button_getMember_onClick(View view) {
String name = inputParameter.getText().toString();
displayInfo.setText("");
final String name = inputParameter.getText().toString();

// TODO Display member information for the member with the given name.


try {
member = dbHelper.loadSpecificMember(name);
} catch (SQLException e) {
e.printStackTrace();
Toast.makeText(context,"SQLException error",Toast.LENGTH_SHORT).show();
}

if(member != null){
Log.d("MEMBER", member.getId() + "");
displayInfo.setText(member.toString());
}else{
Toast.makeText(context,"Member not found",Toast.LENGTH_SHORT).show();
}

inputParameter.setText("");
}

public void button_getBook_onClick(View view) {
displayInfo.setText("");
String isbn = inputParameter.getText().toString();

// TODO Display book information for the book with the given ISBN.



try {
book = dbHelper.loadSpecificBook(isbn);
} catch (SQLException e) {
e.printStackTrace();
}

if(book != null){
Log.d("BOOK", book.getId() + "");
displayInfo.setText(book.toString());
}else{
Toast.makeText(context,"Book not found",Toast.LENGTH_SHORT).show();
}

inputParameter.setText("");
}

public void button_getCheckedOut_onClick(View view) {
Expand Down
143 changes: 141 additions & 2 deletions src/main/java/nyc/c4q/ListActivity.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
package nyc.c4q;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;


public class ListActivity extends Activity {

public ListView list;
private ArrayList<Person> 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";
private RosterListAdapter rosterListAdapter;

public static final Person[] PEOPLE = {
new Person("Hannah", "Abbott", House.Hufflepuff),
Expand Down Expand Up @@ -46,8 +58,135 @@ 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);
people = new ArrayList<>();

for(int i = 0; i < PEOPLE.length; i++){
people.add(PEOPLE[i]);
}
rosterListAdapter = new RosterListAdapter(people, doShowColor, displayLastFirst);
list.setAdapter(rosterListAdapter);
sortData();

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");
setDisplayLastFirst(false);
sortData();
} else {
lastFirstButton.setText("Last, First");
setDisplayLastFirst(true);
sortData();
}
}
});

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");
setShowColor(false);
rosterListAdapter.setDisplayColor(doShowColor);
} else {
showColorButton.setText("Show Color");
setShowColor(true);
rosterListAdapter.setDisplayColor(doShowColor);
}
}
});
}

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 sortData() {
if(displayLastFirst)
sortByLastName();
else
sortByFirstName();

rosterListAdapter.setDisplayLastNameFirst(displayLastFirst);
}



private class lastNameComparator implements Comparator<Person>{

@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<Person>{

@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());
}


}
8 changes: 8 additions & 0 deletions src/main/java/nyc/c4q/PaceCalculatorActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@

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 {

@Override
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();

}

}
Loading