Project Contributor Document
- Checking out the repository: git clone ssh://gerrithost/donut.git dest. Afterwards, the Change-Id hook needs to be set up, which can be done
by running scp gerrithost:hooks/commit-msg .git/hooks. Finally, the git config needs to be configured, which can be done by modifyiing the .git/config file:
[remote "review"]
pushurl = ssh://gerrithost/donut
push = HEAD:refs/for/master
- Working with the repository: Registration files located at src/donut/registration/
Source files are located at src/donut/signalfinder/
Server files are located at src/server/
HTML files and frontend stuff (like the website) are located in html/
ant build builds, and ant test runs the tests.
- Pushing changes: Run git pull origin master to first keep your repository up-to-date, then send a review
to gerrit with git push review. Once a review has been done the changes can be committed!
Weekly Summaries
Week 1
- Formed a group of 5 and each member determined what role they would play in the group
- Installed tools necessary to complete project, including Eclipse IDE, Android SDK plugin for Eclipse, Java SDK, ant, and git
- Added java, javadoc, and ant to the CLASSPATH
- Retrieved individual git repositories after registering with the instructors
- Set up Gerrit account using OpenID and configured git repository to be able to push changes to Gerrit
- Researched about git and Gerrit
- Wrote program to register users on the Class Metadata system and checked into Gerrit
Week 2
- Wrote program to registere team on the Class Metadata system
- Started basic Android application, HelloWorldActivity
- Read up on data storage mechanisms
- Researched how signal information can be collected
- Set up a basic website with nothing on it
- Discussed and decided on an implementation plan for the team
Week 3
- Initial build of Android application. Can collect latitude, longitude, and
signal strength information. Sends data via POST
- Defined data storage format and schema
- Set up MySQL database and PHP interface
- Add functionality to website to allow user to see raw data
- Defined API design and worked on proposal
- Worked on Signal Finder v1 presentation
Week 4
- Added functionality for user to see data on map
- Android app supports ability to select different sleep intervals (but actual
functionality not implemented)
- App displays success or failure messsages depending on whether or not data
was sent to database
- Wrote Javadocs and API for the signal finder
- Re-registered team on Class Metadata system with new website information
- Wrote up project proposal
Week 5
- Refactored some of the code (separated code into different classes and methods to
make it easier to understand.
- Added ability for app to sleep and wakeup at user-selected intervals instead of draining
the phone battery
- Redefined data storage schema (now stores unique phone ID, timestamp, and carrier information
- Created a design document and presentation for the class
- Updated Javadocs with new class information
- Added targets to a new build file to build program from the command line
Week 6
- Read through new API and began refactoring code to fit API.
- Added error-checking abilities for server-side implementation so incorrect
data cannot be uploaded and malicious users cannot put fake data into database.
- Table of data now has a foreign key constraint to a table of valid clients so only
authorized clients may upload data
- Added ability for phone to create a unique hashed clientId and upload this to the server.
- App has ability to store data in memory relating to data collection.
- App uploads data according to the API
- Began implementation of better signal finder (tells the user the direction of the
better signal.
- Wrote tests testing database and server implementations for correct error messages.
- Wrote up design document and presentation.
Week 7
- Finished up implementation of better signal finder. Now displays a compass to point to user the
direction they should travel for a better signal.
- Updated mobile UI display data better with colors.
- Moved website to a new domain.
- Modified UI of the website, made it more appealing to navigate.
- Allow users to filter raw data on the website based on latitude, longitude, and carrier.
- Allow users to filter displayed data on the Google Maps and updated interface to use bolder colors.
- Updated design document with current information.
- Re-created Javadocs for all of the source files.
- Added more tests for uploading data, began writing other tests.
Week 8
- Users are now able to sort raw data.
- Mobile app only uploads batches of data at once, and stores data in a text file. Once there are more
than 500 data points, they are all uploaded to the database.
- Updated PHP files to reflect this change.
- Cleaned up server code (put things in functions).
- Added a lot more tests.
- Moved website to a new domain with faster service.
Week 9
- Added ability to filter data in the raw data dump. Can filter by carrier, latitude, and longitude.
- Added ability to filter data in the map, and can also filter by carrier, latitude, and longitude.
- Updated design documentation with minor changes.
- Added more tests.
- Fixed git issues that was causing some team members to be unable to push and merge changes with the repository. Made sure that gerrit/git was set up correctly.
- Did a lot of testing of data.
Week 10
- Finalized project.
- Cleaned up code (finished all of the TODOs) and made sure all implementations were complete.
- Re-ran the register team script with new links.
- Completed the tests.
- Ran checkstyle against all of the code and fixed the errors.
- Tested app one more time in preparation for the demonstration.
- Created presentation and demo for the final demonstration.