Comp 152 Project 5:
Teams, APIs, third party libraries and a bigger project
Due: Sun Dec 8th at 11:59pm
(with Thanksgiving in between now and then, this is not that long away)
Intermediate deliverable Due Date: Nov
25th/26th in class.
Summary:
This project will give you a chance to work with json, RESTful apis,
windowed programs with JavaFX, and learn a bit from documentation.
Project:
You will work in groups of three (except for the odd numbered groups when
the class size mod 3 isn't zero)
If you are in a group of 4, make the project public on the due date (not
before) and invite me to join that day.
- Make a window which run first and provide a way to select the other
windows below.
- Everybody in the group is responsible
for the original window. Each person should build out their
own method to handle opening a new window. Be sure to communicate with
each other so that you don't mangle each others work. Each student in
the group needs to push their own commit or make a pull request to
make include their own part of this window and event handlers.
- I will be assigning credit on this project for github commits/pull
requests, so everyone in the group has to make their own commits and
pull requests.
- Each person will then choose one of the possibilities below, claim it,
and implement it.
- Query the specified API, retrieve the data, and display it on a
JavaFX window that has a good control layout to be able to see all of
the data in an easy to understand manner.
- Each of these smaller windows should use the Model View Controller
pattern with at least three classes, one for each.
Possible APIs and windows (each person in the group needs to pick one -
not more than one per group can do the same one) You cannot use Alert or
JAvaFX Dialogs for any of this. all the data collection and display must
be on javaFX stage windows that you create in code or in FXML
Your group will only be using 3-4 (depending on group size) of these 6
APIs.
- Currency Exchange
- use this currency exchange API: https://www.exchangerate-api.com/
- display 8 currency choices for the user to choose from.
- allow the user to enter an amount in the currency X
- when the user make a choice of currency
- display the exchange rates with other currencies
- and the amount of the other currencies that your previously
entered amount X would translate to.
- The Joke API
- use this joke api: https://sv443.net/jokeapi
- allow the user to select one of the four acceptable types of jokes
(Miscellaneous/Programming/Dark/Any) be sure to use radio buttons or
menus or something, don't lest the user type it in.
- allow the user to block one or more of the joke types they don't
want to see {NSFW, religious or political}
- after allowing the user to select all the constraints, make sure
there is a way for the user to get the joke from the api
- display the joke in a reasonable format
- If you get a twopart joke back, only show the setup till the user
indicates they are ready for the puchline.
- Makeup
- use this makeup API http://makeup-api.herokuapp.com/
- allow your users to set values for at least three of the search
parameters at the bottom of the api documentation page
- send the API information and put the result name into a list box,
when the user selects the particular type of makeup from the
listbox, display price, description, brand and at least one other
piece of information in your UI
- The github jobs API
- use this API - be sure to use the json version
https://jobs.github.com/api
- let the user select several features to be part of the search:
- including: description, location, Full_time (as a checkbox since
this needs to be true or false)and at least one of the other
constraints.
- then let the user start the data retrieval process, when you get the
data back, put it in a listview, showing job title, when the user
clicks on a job in the list view, show the job details in the window
including
- company
- job location
- apply url
- description
- one more data item for the returned data.
- Use this weather API
- use this API https://www.metaweather.com/api/
- in particular scroll down to the section that say location search
- first let the user choose a city to read from. Use the location API
on the city name to get the woeid
- then use that woeid to get the weather for the next several days
and display it using a list view(to choose the day's weather) and
several javafx controls to display the details. You can;t just dump
it in one single text area
- the Star Wars API
- use this star wars API: https://swapi.co/documentation
- let your user search on either a character or a planet
- when the data comes back, follow the API links in the returned data
to get the name of the characters home planet, their starship (if any)
their species, and the movies they were in. (also include the
character's name, height, and birth year.
- for planets display the names of the residents and the films it was
in, along with its name, climate and population.
Intermediate Deliverable:
In class on Nov 25th/26th, each group needs to pass in a one page summary
which includes:
- Which of the APIs your group is going to deliver
- which API each person is responsible for
- A short summary of what your group has accomplished so far.
Extra requirements for the project
Comment your code.
Include comments at the top of your JavaFX Application class
your name
Anything you didn't get done
Make your commit/pull request messages
informative, as per above, I will be assigning credit for
good/descriptive messages.
Submission:
upload the entire project, including
all of the gradle files needed to run on another machine to github and make
me a collaborator as before.