Giter Site home page Giter Site logo

tasky's Introduction

Tasky

CS 435 Group Project

tasky's People

Contributors

jagabel avatar bjsmith01 avatar

Watchers

James Cloos avatar  avatar  avatar  avatar  avatar

tasky's Issues

Setup Infrastructure for testing the Backend using JUnit test

Setting a minimal infrastructure to allow to write JUnit test cases for the backend/model of the application.

A user can have multiple projects. A project can have multiple tasks.

The server should be able to implement the following actions:

  • login with email(which serves as username) and password
  • get the list of projects for user with a particular email
  • get the list of tasks for a particular project of a user
  • add a new project
  • add a new task for a project
  • etc/TBD

TVDB integration

Everything in the TVDB are stored as an xml file. This will probably be as simple as going to the url and parsing the information.

Delete a task from the Database

Add functionality to allow the user to delete a task (that belongs to a project that belongs to a user).

For deleting a task, the email (username), the ID of the project and the ID of the task need to be specified:

String deleteTask(String email, String projectID, String taskID);

If the taskID is found in the database, the task will be deleted and the server will return DELETE_TASK_SUCCESSFUL.

If the taskID is not found (because the task was already deleted), the server will return DELETE_TASK_FAILED_NO_SUCH_TASK_ID.

Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

Retrieving Current Folder from Database

All of the folders are stored by a unique id and their name in the database. I'm thinking that it might be handy to keep a file of these ids and their names in the Android Application. This way it would be a lot easier to 1: keep track of what folders the user has stored, and 2) look up folders in the database.

Add new project and get all projects functionality

Add functionality to allow the user to create a new project and to get a list of all the projects available to him.

For creating a project, the name of the project and the email of the user need to be specified:

String addProject(String email, Project project);

The server will assign a unique ID to the project, so that two project with the same name could exist if necessary.
The return of this method will be a string ADD_PROJECT_SUCCESSFUL.
Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

For getting the projects, the signature is:

List getProjects(String email)

Given a username, a list of all projects (including project IDs and project names) will be returned.
Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

Remaining Funtionality

-Adding a button/ confirmation to ExpandableListView in TVSearchActivity,
-Creating Task from query results()

*Maybe a setting to change satellite/cable provider

Examine single days in the Calendar View

It will be important to allow the user to view individual days on the Calendar View so that they can see more specific details. Thus, as the Calendar View is implemented via a GridView, each item in the view shall, upon being tapped, switch to a new view that holds only tasks that pertain to the specific day selected. From there the user will be able to view the specific details of each task.

Implement a very simple Java client for accessing the Login functionality from the Servlet

Implement a very simple Java client that access to the LoginServlet. This code can be used as a template for connecting from an Android app to the servlet and for exchanging information between the client and server.

The client:

  • establishes a connection to the LoginServlet (http://tasky-server.appspot.com/LoginServlet)
  • writes the request, which is similar to writing to a file
  • reads the response from the server, which is like reading from a file

The servlet:

  • gets access to the client request in the doPost method
  • reads the request
  • accesses the database with the information from the client
  • writes the response it got after accessing the database back to the client

The request (from client to server) has 3 lines in the form:
LOGIN
email
password

The response (from server to client) has 1 line, representing one number (0 for success, 1 for invalid username/email or 2 for invalid password):
loginStatus

Adding tasks to Calendar View

So at this point in time the Calendar View offers a date for every day in the calendar as well as the number of tasks due upon that day. Incrementing that value beyond 1, however, is proving to be a pain at the moment as the app is producing some sort of an unseen value that allows it to dodge an integral if statement in the activity.

Android Integration

Has anyone found out how to access the Google Database via Android?

I'm assuming it works like a SQL table.

Delete a project from the Database

Add functionality to allow the user to delete a project (that belongs to a user).

For deleting a project, the email (username) and the ID of the project need to be specified:

String deleteProject(String email,String projectID);

If the projectID is found in the database, the project will be deleted and the server will return DELETE_PROJECT_SUCCESSFUL.

If the projectID is not found (because the project was already deleted, or it does not exist), the server will return DELETE_PROJECT_FAILED_NO_SUCH_PROJECT_ID.

Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

Filtering Results From Google Database

It would be good to look into filtering the results from the database before pulling them.
Again under the assumption that this works similar to SQL it's possible to do something like "Select ALL From Where Project ID=#"

This way we only pull relevant information instead.

We may also want to store what we pull internally on Android, because constantly looking back and forth in the database would impact performance.

Assign Unique IDs for new Projects and Tasks

Assign Unique IDs for new Projects and Tasks, even if the server is restarted. This is accomplished by storing max projectID and max taskID in the database.

Whenever a new project (or task) is created, the maximum projectID (or taskID) value is retrieved from the database, and then the next available value is stored back in the database.

Allow users to specify due dates for a task using textual dates (e.g., "today", "Mon")

A user can specify a due date for a particular task using textual dates, such as "today", "tod" (for today), "tomorrow", "tom" (for tomorrow), "Monday", "mon", "tuesday", ..., "sunday", "sun".

For the days of the week, any lower/upper case variation is accepted.

Examples:

  • If today's date is 3/15/2014 and the user specified the due date "tom", the due date will be 3/16/2014
  • If today's date is 2/28/2014 and the user specified the due date "tom", the due date will be 3/1/2014
  • If today's date is 3/15/2014 (Saturday) and the user specified the due date "friday", the due date will be 3/21/2014

The due date is optional and does not need to be specified.

Test Storing/Retrieving data from Google App Engine Datastore

Google App Engine (GAE) offers different ways of storing/retrieving data (see https://developers.google.com/appengine/docs/java/storage). Probably the one most suited to our project is the App Engine Datastore (https://developers.google.com/appengine/docs/java/datastore/).

Create a simple JSP script (http://tasky-server.appspot.com/testGoogleDatastore.jsp) that tests:

  • adding a new task and storing it in the Datastore
  • retrieve existing tasks from the Datastore

The actual data can be seen in the Google Developers Console (https://console.developers.google.com/project/apps~tasky-server/datastore/query)

Known issue:

  • every time a new task or project is added, a unique ID is assigned to it, and that ID gets incremented. Currently, the ID operations are stored in the Java code and every time app is deployed, the ID will start from 1 again. The solution will be to store these IDs in a database, and their value will not be reset every time the app is re-deployed.

Calendar+ ToDoList Integration

right now the main ToDoList page looks for a folder and displays all of the tasks inside of that folder. It might be beneficial to take the code that's inside of there and use it to display all the tasks that are stored in a single cell in the calendar. Maybe create an activity that gets passed the task id's from the calendar and displays them.

Rovi DB

can query rovi database and view: name of show/movie, synopsis, next showing of movie/video.

Data sharing between the activities

To present the need of the application pulling the available tasks from the database after every activity change, the tasks must be shared between the activities.

Add functionality for add new task and get all tasks

Add functionality to allow the user to create a new task (that belongs to a project) and to get a list of all the tasks available for a particular project that belongs to a user.

For adding a new task, the description of the task, the priority (on a scale of 1 - high priority to 5 - low priority), the due date, and the ID of the project it belongs to need to be specified:

String addProject(Project project, Task task);

The server will assign a unique ID to the task, so that two tasks with the same name could exist in the same project if necessary.
The return of this method will be a string ADD_TASK_SUCCESSFUL.
Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

For getting the list of task specific to a project that belongs to a user, the signature is:

List getTasks(String email,Project project);

Given a username and a project ID, a list of all tasks (including task ID, description, due date, priority) will be returned.
Test it at http://tasky-server.appspot.com/testAccessToTaskyDatabase.jsp

Setup Server for testing the backend functionality

Create a new Google App Engine (GAE) Application that creates a simple web page that allows to send requests to a server, access the database, and get a response back.

The GAE application can be accessed and tested at:
http://tasky-server.appspot.com

The following functionality can be accessed through a webpage written in JSP:

  • login with username/email and password (the result will be 0 (success), 1 (invalid username) or 2 (invalid password))
  • get list of projects for a particular user
  • get the list of tasks associated with a project and a user

Known issue:

  • the content of the TaskyBackend has to be manually copied into the TaskyServer project after each change in TaskyBackend. It would be nice if any changes to TaskyBackend would be automatically copied to TaskyServer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.