Compare commits
31 Commits
update/not
...
feature/ex
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3960efaad8 | ||
|
|
867eae66f4 | ||
|
|
37d43c8247 | ||
|
|
a704522a63 | ||
|
|
cefc4d2b4b | ||
|
|
222489a316 | ||
|
|
4b949db919 | ||
|
|
c8cbb25f5d | ||
|
|
c8d5dd99ae | ||
|
|
6d7e73586f | ||
|
|
12ca633461 | ||
|
|
7b6b8ead65 | ||
|
|
a206625082 | ||
|
|
425550c922 | ||
|
|
e6ecda5471 | ||
|
|
f6f74cd2aa | ||
|
|
d03deace57 | ||
|
|
4dd02649b8 | ||
|
|
9fd3b1cf5b | ||
|
|
fb22937864 | ||
|
|
dc432df120 | ||
|
|
a6a52688f2 | ||
|
|
ae7e36f757 | ||
|
|
917d3a64bb | ||
|
|
92ff0073e8 | ||
|
|
9ab4439f70 | ||
|
|
47c46b5458 | ||
|
|
02253cb645 | ||
|
|
b92e302f8b | ||
|
|
67b97eb331 | ||
|
|
daa1c838b4 |
@@ -36,10 +36,10 @@ test:
|
|||||||
- .gradle
|
- .gradle
|
||||||
|
|
||||||
# Code coverage badge
|
# Code coverage badge
|
||||||
# code-coverage:
|
#deploy:
|
||||||
# stage: code-coverage
|
# stage: code-coverage
|
||||||
# script:
|
# script:
|
||||||
# - mvn -B clean verify
|
# - gradle clean check
|
||||||
# after_script:
|
# after_script:
|
||||||
# - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% instructrions covered" }' target/site/jacoco/jacoco.csv
|
# - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% instructrions covered" }' target/site/jacoco/jacoco.csv
|
||||||
# - awk -F"," '{ instructions += $6 + $7; covered += $7 } END { print covered, "/", instructions, " branches covered"; print 100*covered/instructions, "% branches covered" }' target/site/jacoco/jacoco.csv
|
# - awk -F"," '{ instructions += $6 + $7; covered += $7 } END { print covered, "/", instructions, " branches covered"; print 100*covered/instructions, "% branches covered" }' target/site/jacoco/jacoco.csv
|
||||||
|
|||||||
30
README.md
30
README.md
@@ -1,35 +1,33 @@
|
|||||||
# Greenify
|
# Greenify
|
||||||
The easiest way to save CO2 and help the environment! Enter your activities and find out your carbon footprint.
|
The easiest way to save CO2 and help the environment! Enter your activities and find out your carbon footprint.
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Badges
|
||||||
|
[](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template)
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
You can install greenify with gradle, if you already have gradle on your machine, run:
|
You can run greenify with gradle. To start the server, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
gradle install something tralala
|
cd <FILE-LOCATION>/greenify/src/server
|
||||||
```
|
gradle build
|
||||||
|
gradle bootrun
|
||||||
Do you not have gradle on your machine, run:
|
|
||||||
|
|
||||||
```
|
|
||||||
./gradlew install something tralala
|
|
||||||
```
|
```
|
||||||
|
|
||||||
With the following you can start the application
|
With the following you can start the application
|
||||||
|
|
||||||
```
|
```
|
||||||
gradle greenify bootrun
|
cd <FILE-LOCATION>/greenify/src/client
|
||||||
```
|
gradle build
|
||||||
|
gradle bootrun
|
||||||
or without gradle on your device:
|
|
||||||
|
|
||||||
```
|
|
||||||
./gradlew greenify bootrun
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running the tests
|
## Running the tests
|
||||||
The tests cover all non-GUI code:
|
The tests cover all non-GUI code:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
cd <FILE-LOCATION>/greenify
|
||||||
gradle check
|
gradle check
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -16,57 +16,71 @@ public class Hints {
|
|||||||
*/
|
*/
|
||||||
private void initHints() {
|
private void initHints() {
|
||||||
this.hints.add("Buying local produce will not only decrease your carbon "
|
this.hints.add("Buying local produce will not only decrease your carbon "
|
||||||
+ "footprint, but also help your local economy: A win-win!");
|
+ "footprint, but it will also help your local economy: A win-win!");
|
||||||
this.hints.add("Did you know that a gas oven only uses 6% of its energy "
|
this.hints.add("Did you know that a gas oven only uses 6% of its energy "
|
||||||
+ "to cook? And an electric oven is not much better at 12%.");
|
+ "to cook? And an electric oven is not much better at 12%!");
|
||||||
this.hints.add("70% of the deforestation of the Amazon is to provide land for "
|
this.hints.add("70% of the deforestation of the Amazon rainforest is to provide land "
|
||||||
+ "cattle ranches.");
|
+ "for cattle ranches.");
|
||||||
this.hints.add("Research shows that reducing meat consumption can increase"
|
this.hints.add("Research shows that reducing meat consumption can "
|
||||||
+ " your life span by 3.6 years");
|
+ "increase your life span by 3,6 years");
|
||||||
this.hints.add("Vegetarians have a lower risk of getting heart disease, high blood "
|
this.hints.add("Vegetarians have a lower risk of getting: Heart disease, high blood "
|
||||||
+ "pressure, diabetes and cancer than meat eaters.");
|
+ "pressure, diabetes and cancer than meat eaters.");
|
||||||
this.hints.add("Did you know? The carbon footprint of a vegetarian diet is about half "
|
this.hints.add("The carbon footprint of a vegetarian diet is about half "
|
||||||
+ "that of a meat-lover’s diet!");
|
+ "that of a meat-lover’s diet!");
|
||||||
this.hints.add("Cycling is good for the environment AND for your body, "
|
this.hints.add("Cycling is good for the environment and for your body, "
|
||||||
+ "so why not grab your bike instead of your car?");
|
+ "so why not grab your bike instead of your car?");
|
||||||
this.hints.add("If we could capture all of the sun’s energy shining on the Earth"
|
this.hints.add("If we could capture all of the sun’s energy shining on the Earth for just "
|
||||||
+ " for just one hour, we could power the entire world for one year!");
|
+ "one hour, we could power the entire world for one whole year!");
|
||||||
this.hints.add("27,000 trees are cut down each day so we can have toilet paper.");
|
this.hints.add("27,000 trees are cut down every day so we can have toilet paper.");
|
||||||
this.hints.add("A glass bottle made in our time will take more than 4,000 years "
|
this.hints.add("Recycle glass bottles! A glass bottle made now will take "
|
||||||
+ "to decompose.");
|
+ "more than 4,000 years to decompose.");
|
||||||
this.hints.add("Don't forget to turn off the lights and heating in rooms"
|
this.hints.add("Don't forget to turn off the lights and heating in rooms"
|
||||||
+ " you're not using at the moment!");
|
+ " you're not using at the moment. Save some energy!");
|
||||||
this.hints.add("Did you know that about 4.5% of the Dutch population does not eat meat?");
|
this.hints.add("Did you know that about 4,5% of the Dutch population does not eat meat?");
|
||||||
this.hints.add("Reuse your bags when you go grocery shopping. You will save plastic bags!");
|
this.hints.add("Reuse your bags when you go grocery shopping. You will save "
|
||||||
|
+ "plastic bags and won't have a lot of unused bags at home!");
|
||||||
this.hints.add("An estimated 250 million trees can be saved each year "
|
this.hints.add("An estimated 250 million trees can be saved each year "
|
||||||
+ "if every published newspaper would be recycled.");
|
+ "if every published newspaper would be recycled!");
|
||||||
this.hints.add("About 88,000 jobs were created in 2015 through the wind power sector.");
|
this.hints.add("About 88,000 jobs were created in 2015 through the wind power sector. "
|
||||||
this.hints.add("You can use LED lights in your home to save energy!");
|
+ "That is a lot of jobs");
|
||||||
|
this.hints.add("You can use LED lights in your home to save energy! "
|
||||||
|
+ "They make light from about 85% of their energy");
|
||||||
this.hints.add("If you isolate your home well, it will be warmer, "
|
this.hints.add("If you isolate your home well, it will be warmer, "
|
||||||
+ "and you'll save energy as well!");
|
+ "and you'll save energy as well! No need to wear sweaters anymore");
|
||||||
this.hints.add("Do you have leftovers? Donate them to food kitchens."
|
this.hints.add("Do you have leftovers? Donate them to food kitchens."
|
||||||
+ " This way you won't waste"
|
+ " This way you won't waste"
|
||||||
+ " food, and you'll help people at the same time!");
|
+ " food, and you'll help a lot of people at the same time!");
|
||||||
this.hints.add("A lot of coffee places give you a discount if you bring your own cup. "
|
this.hints.add("A lot of coffee places give you a discount if you bring your own cup. "
|
||||||
+ "Get rid of those disposable cups!");
|
+ "Get rid of disposable cups!");
|
||||||
this.hints.add("When shopping, look for products with minimal to no packaging, "
|
this.hints.add("When shopping, look for products with minimal to no packaging, "
|
||||||
+ "or at least packaging made from recycled items. ");
|
+ "or packaging made from recycled items. ");
|
||||||
this.hints.add("If you order food, you can ask the restaurant to not include "
|
this.hints.add("If you order food, you can ask the restaurant to not include "
|
||||||
+ "utensils and napkins, it saves plastic and paper.");
|
+ "utensils and napkins, it saves plastic and paper!");
|
||||||
this.hints.add("It takes about 66 days to form a new habit, keep going!");
|
this.hints.add("It takes about 66 days to form a new habit, keep going, you'll get there!");
|
||||||
this.hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for "
|
this.hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for "
|
||||||
+ "the environment to refill than to buy a new one every time it's empty.");
|
+ "the environment to refill than to buy one every time it's empty.");
|
||||||
this.hints.add("Recycle glass bottles!"
|
this.hints.add("Only 1% of our planet’s water supply can be used a drinkwater."
|
||||||
+ " A glass bottle made in our time will take more than 4,000 years"
|
|
||||||
+ " to decompose.");
|
|
||||||
this.hints.add("Only 1% of our planet’s water supply can be used."
|
|
||||||
+ " 97% is ocean water and 2% is frozen solid in the Arctic, for now.");
|
+ " 97% is ocean water and 2% is frozen solid in the Arctic, for now.");
|
||||||
this.hints.add("Plastic bad");
|
this.hints.add("For every two million tons of paper and glass, collected in "
|
||||||
|
+ "the Netherlands, close to 90% gets recycled and used to make new products");
|
||||||
|
this.hints.add("In the Netherlands: Whenever you purchase any new, electronic or household "
|
||||||
|
+ "equipment, you will automatically be charged a ‘recycling tax’ on it. This is "
|
||||||
|
+ "also known as ‘removal tax’, or ‘verwijderingsbijdrage’ in Dutch");
|
||||||
|
this.hints.add("Second only to Germany, the Netherlands leads the world in recycling"
|
||||||
|
+ ", with 65 percent of all waste recycled.");
|
||||||
|
this.hints.add("If tbe back of your fridge is dusty, it can increase "
|
||||||
|
+ "energy consumption by 30 per cent.");
|
||||||
|
this.hints.add("Underinflated tyres decrease fuel economy by up to three percent and"
|
||||||
|
+ " lead to increased pollution and higher greenhouse gas emissions.");
|
||||||
|
this.hints.add("Meat production is extremely resource-intensive. "
|
||||||
|
+ "If you gave it up just once a week, you would save the 840 gallons "
|
||||||
|
+ "of fresh water it takes to produce a single serving.");
|
||||||
|
this.hints.add("Plastic bad, very bad.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets a random String.
|
* This seeks out a random hint from the list of strings.
|
||||||
* @return the random hint.
|
* @return the random string hint.
|
||||||
*/
|
*/
|
||||||
public String randomHint() {
|
public String randomHint() {
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ public class CalculatorController {
|
|||||||
@FXML
|
@FXML
|
||||||
private Label servicesLabel;
|
private Label servicesLabel;
|
||||||
|
|
||||||
|
|
||||||
//extra pane
|
//extra pane
|
||||||
@FXML
|
@FXML
|
||||||
private AnchorPane extraPane;
|
private AnchorPane extraPane;
|
||||||
@@ -398,7 +399,11 @@ public class CalculatorController {
|
|||||||
"input_footprint_shopping_services_total",
|
"input_footprint_shopping_services_total",
|
||||||
servicesLabel.getText().replace("€ / month", ""));
|
servicesLabel.getText().replace("€ / month", ""));
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
extraActivityController.updateExtras();
|
extraActivityController.updateExtras();
|
||||||
|
} catch (NullPointerException ex) {
|
||||||
|
System.out.println("continue");
|
||||||
|
}
|
||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
Window owner = saveButton.getScene().getWindow();
|
Window owner = saveButton.getScene().getWindow();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
|
|||||||
@@ -185,14 +185,18 @@ public class DashBoardController {
|
|||||||
@FXML
|
@FXML
|
||||||
private Label hintText;
|
private Label hintText;
|
||||||
@FXML
|
@FXML
|
||||||
private Label solarPanels;
|
private Label veganMeal;
|
||||||
@FXML
|
@FXML
|
||||||
private Label localProduce;
|
private Label localProduce;
|
||||||
@FXML
|
@FXML
|
||||||
private Label bike;
|
private Label bike;
|
||||||
@FXML
|
@FXML
|
||||||
|
private Label publicTrans;
|
||||||
|
@FXML
|
||||||
private Label loweringTemp;
|
private Label loweringTemp;
|
||||||
@FXML
|
@FXML
|
||||||
|
private Label solarPanels;
|
||||||
|
@FXML
|
||||||
private Button achiev1Tip;
|
private Button achiev1Tip;
|
||||||
@FXML
|
@FXML
|
||||||
private Button achiev2Tip;
|
private Button achiev2Tip;
|
||||||
@@ -237,20 +241,6 @@ public class DashBoardController {
|
|||||||
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
||||||
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
|
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
|
||||||
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
||||||
if (pieChart != null) {
|
|
||||||
ObservableList<PieChart.Data> pieChartData =
|
|
||||||
FXCollections.observableArrayList(
|
|
||||||
new PieChart.Data("Vegan Meal", 100),
|
|
||||||
new PieChart.Data("Public Transport", 200),
|
|
||||||
new PieChart.Data("Home Temperature", 50),
|
|
||||||
new PieChart.Data("Bike", 75),
|
|
||||||
new PieChart.Data("Local Product", 110),
|
|
||||||
new PieChart.Data("Solar Panel", 300)
|
|
||||||
);
|
|
||||||
pieChart.setTitle("FOOTPRINT DISTRIBUTION");
|
|
||||||
pieChart.setMaxSize(1000, 1000);
|
|
||||||
pieChart.setData(pieChartData);
|
|
||||||
}
|
|
||||||
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
|
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
|
||||||
for (int i = 0; i < friendList.size(); i++) {
|
for (int i = 0; i < friendList.size(); i++) {
|
||||||
Friend friend = new Friend(friendList.get(i),
|
Friend friend = new Friend(friendList.get(i),
|
||||||
@@ -260,6 +250,7 @@ public class DashBoardController {
|
|||||||
friendsTable.setItems(data);
|
friendsTable.setItems(data);
|
||||||
updateLeaderboard();
|
updateLeaderboard();
|
||||||
updateAchievements();
|
updateAchievements();
|
||||||
|
updatePiechart();
|
||||||
calculateFootPrintButton.setSkin(new ClickButtonSkin(calculateFootPrintButton));
|
calculateFootPrintButton.setSkin(new ClickButtonSkin(calculateFootPrintButton));
|
||||||
addFriendButton.setSkin(new ClickButtonSkin(addFriendButton));
|
addFriendButton.setSkin(new ClickButtonSkin(addFriendButton));
|
||||||
addExtraActivityButton.setSkin(new ClickButtonSkin(addExtraActivityButton));
|
addExtraActivityButton.setSkin(new ClickButtonSkin(addExtraActivityButton));
|
||||||
@@ -317,7 +308,7 @@ public class DashBoardController {
|
|||||||
* Sorts the scores of users.
|
* Sorts the scores of users.
|
||||||
* @param users the list of users
|
* @param users the list of users
|
||||||
*/
|
*/
|
||||||
private void sortScores(List<String> users) {
|
public void sortScores(List<String> users) throws InterruptedException {
|
||||||
for (int i = 0; i < users.size(); i++) {
|
for (int i = 0; i < users.size(); i++) {
|
||||||
for (int j = 0; j < users.size(); j++) {
|
for (int j = 0; j < users.size(); j++) {
|
||||||
Double first = userService.getFootprint(users.get(i));
|
Double first = userService.getFootprint(users.get(i));
|
||||||
@@ -340,7 +331,7 @@ public class DashBoardController {
|
|||||||
* Sorts the scores of users.
|
* Sorts the scores of users.
|
||||||
* @param users the list of users
|
* @param users the list of users
|
||||||
*/
|
*/
|
||||||
private List<String> sortDiffScores(List<String> users) throws InterruptedException {
|
public List<String> sortDiffScores(List<String> users) throws InterruptedException {
|
||||||
for (int i = 0; i < users.size(); i++) {
|
for (int i = 0; i < users.size(); i++) {
|
||||||
for (int j = 0; j < users.size(); j++) {
|
for (int j = 0; j < users.size(); j++) {
|
||||||
Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService
|
Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService
|
||||||
@@ -366,7 +357,7 @@ public class DashBoardController {
|
|||||||
* Adds a fade transition for switching between the different panes.
|
* Adds a fade transition for switching between the different panes.
|
||||||
* @param node the node on which the transition needs to act
|
* @param node the node on which the transition needs to act
|
||||||
*/
|
*/
|
||||||
private void addFadeTransition(Node node) {
|
public void addFadeTransition(Node node) {
|
||||||
fadeTrans = new FadeTransition(Duration.millis(400), node);
|
fadeTrans = new FadeTransition(Duration.millis(400), node);
|
||||||
fadeTrans.setFromValue(0);
|
fadeTrans.setFromValue(0);
|
||||||
fadeTrans.setToValue(1.0);
|
fadeTrans.setToValue(1.0);
|
||||||
@@ -430,17 +421,19 @@ public class DashBoardController {
|
|||||||
snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood"));
|
snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood"));
|
||||||
Map<String, String> extraMap = userService
|
Map<String, String> extraMap = userService
|
||||||
.getExtraInputs(userService.currentUser.getName());
|
.getExtraInputs(userService.currentUser.getName());
|
||||||
|
veganMeal.setText(extraMap.get("vegan"));
|
||||||
localProduce.setText(extraMap.get("local_produce"));
|
localProduce.setText(extraMap.get("local_produce"));
|
||||||
bike.setText(extraMap.get("bike"));
|
bike.setText(extraMap.get("bike"));
|
||||||
solarPanels.setText(extraMap.get("solar_panels"));
|
publicTrans.setText(extraMap.get("public_transport"));
|
||||||
loweringTemp.setText(extraMap.get("temperature"));
|
loweringTemp.setText(extraMap.get("temperature"));
|
||||||
|
solarPanels.setText(extraMap.get("solar_panels"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the user profile pane.
|
* Displays the user profile pane.
|
||||||
* @param event the event (clicking the button)
|
* @param event the event (clicking the button)
|
||||||
*/
|
*/
|
||||||
public void displayUser(ActionEvent event) {
|
public void displayUser(ActionEvent event) throws InterruptedException {
|
||||||
System.out.println(userService.currentUser.getName());
|
System.out.println(userService.currentUser.getName());
|
||||||
System.out.println(userService.getFootprint(userService.currentUser.getName()));
|
System.out.println(userService.getFootprint(userService.currentUser.getName()));
|
||||||
footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName()));
|
footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName()));
|
||||||
@@ -456,6 +449,7 @@ public class DashBoardController {
|
|||||||
userPane.setVisible(true);
|
userPane.setVisible(true);
|
||||||
activitiesPane.setVisible(false);
|
activitiesPane.setVisible(false);
|
||||||
friendsPane.setVisible(false);
|
friendsPane.setVisible(false);
|
||||||
|
updatePiechart();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -516,6 +510,7 @@ public class DashBoardController {
|
|||||||
* Opens the calculator.
|
* Opens the calculator.
|
||||||
* @throws IOException if the Application doesn't load.
|
* @throws IOException if the Application doesn't load.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void openCalculator() throws IOException, InterruptedException {
|
public void openCalculator() throws IOException, InterruptedException {
|
||||||
Parent calc = Application.load(this.getClass().getClassLoader()
|
Parent calc = Application.load(this.getClass().getClassLoader()
|
||||||
.getResource("fxml/calculator.fxml"));
|
.getResource("fxml/calculator.fxml"));
|
||||||
@@ -530,7 +525,7 @@ public class DashBoardController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a random hint to the left.
|
* This method adds a random hint to the side bar.
|
||||||
*/
|
*/
|
||||||
public void addRandomHints() {
|
public void addRandomHints() {
|
||||||
FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText);
|
FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText);
|
||||||
@@ -579,6 +574,7 @@ public class DashBoardController {
|
|||||||
* Leaderboard is updating.
|
* Leaderboard is updating.
|
||||||
* @throws InterruptedException throws exception
|
* @throws InterruptedException throws exception
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void updateLeaderboard() throws InterruptedException {
|
public void updateLeaderboard() throws InterruptedException {
|
||||||
//global leaderboard
|
//global leaderboard
|
||||||
globalLeaderboard.getItems().clear();
|
globalLeaderboard.getItems().clear();
|
||||||
@@ -603,10 +599,37 @@ public class DashBoardController {
|
|||||||
developmentLeaderboard.setItems(developmentData);
|
developmentLeaderboard.setItems(developmentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method updating piechart.
|
||||||
|
* @throws InterruptedException exception
|
||||||
|
*/
|
||||||
|
public void updatePiechart() throws InterruptedException {
|
||||||
|
Map<String, String> resultMap = userService.getResults(userService.currentUser.getName());
|
||||||
|
if (pieChart != null) {
|
||||||
|
ObservableList<PieChart.Data> pieChartData =
|
||||||
|
FXCollections.observableArrayList(
|
||||||
|
new PieChart.Data("Transport",
|
||||||
|
Double.parseDouble(resultMap.get("transport"))),
|
||||||
|
new PieChart.Data("Housing",
|
||||||
|
Double.parseDouble(resultMap.get("housing"))),
|
||||||
|
new PieChart.Data("Food",
|
||||||
|
Double.parseDouble(resultMap.get("food"))),
|
||||||
|
new PieChart.Data("Goods",
|
||||||
|
Double.parseDouble(resultMap.get("goods"))),
|
||||||
|
new PieChart.Data("Services",
|
||||||
|
Double.parseDouble(resultMap.get("services")))
|
||||||
|
);
|
||||||
|
pieChart.setTitle("FOOTPRINT DISTRIBUTION");
|
||||||
|
pieChart.setMaxSize(1000, 1000);
|
||||||
|
pieChart.setData(pieChartData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Friends tables are updating.
|
* Friends tables are updating.
|
||||||
* @throws InterruptedException throws exception
|
* @throws InterruptedException throws exception
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void updateFriends() throws InterruptedException {
|
public void updateFriends() throws InterruptedException {
|
||||||
List<String> wholeList = userService.getFriendNames(userService.currentUser.getName());
|
List<String> wholeList = userService.getFriendNames(userService.currentUser.getName());
|
||||||
wholeList.add(userService.currentUser.getName());
|
wholeList.add(userService.currentUser.getName());
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
} catch (Exception ex) {
|
} catch (InterruptedException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,7 +263,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,7 +278,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,14 @@ import javafx.scene.control.ScrollPane;
|
|||||||
import javafx.scene.control.Slider;
|
import javafx.scene.control.Slider;
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.AnchorPane;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.text.Text;
|
import javafx.scene.text.Text;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
@@ -46,6 +48,10 @@ public class RegisterWindowController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
ExtraActivityController extraActivityController;
|
ExtraActivityController extraActivityController;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private Text explainText;
|
||||||
|
|
||||||
|
|
||||||
//navigation panes
|
//navigation panes
|
||||||
@FXML
|
@FXML
|
||||||
private AnchorPane getStartedPane;
|
private AnchorPane getStartedPane;
|
||||||
@@ -159,6 +165,9 @@ public class RegisterWindowController {
|
|||||||
private PasswordField passwordField2;
|
private PasswordField passwordField2;
|
||||||
@FXML
|
@FXML
|
||||||
private Button signUpButton;
|
private Button signUpButton;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//@FXML
|
//@FXML
|
||||||
//private Line uNamePathLine;
|
//private Line uNamePathLine;
|
||||||
|
|
||||||
@@ -186,6 +195,18 @@ public class RegisterWindowController {
|
|||||||
slideIn.play();
|
slideIn.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showExplanation(ActionEvent event) throws InterruptedException {
|
||||||
|
System.out.println(explainText.isVisible());
|
||||||
|
if (explainText.isVisible()) {
|
||||||
|
System.out.println("set to false");
|
||||||
|
explainText.setVisible(false);
|
||||||
|
} else {
|
||||||
|
System.out.println("set to true");
|
||||||
|
explainText.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signs up the user.
|
* Signs up the user.
|
||||||
* @param event the click of the sign up button
|
* @param event the click of the sign up button
|
||||||
@@ -221,7 +242,7 @@ public class RegisterWindowController {
|
|||||||
//register the user with the provided username and password
|
//register the user with the provided username and password
|
||||||
try {
|
try {
|
||||||
userService.registerUser(userNameText.getText(), passwordField.getText());
|
userService.registerUser(userNameText.getText(), passwordField.getText());
|
||||||
} catch (Exception ex) {
|
} catch (HttpClientErrorException ex) {
|
||||||
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
|
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
|
||||||
"This username has already been taken!");
|
"This username has already been taken!");
|
||||||
return;
|
return;
|
||||||
@@ -486,7 +507,7 @@ public class RegisterWindowController {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
extraActivityController.updateExtras();
|
extraActivityController.updateExtras();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("Continue");
|
System.out.println("Continue");
|
||||||
}
|
}
|
||||||
Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName());
|
Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName());
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import javafx.stage.Stage;
|
|||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -67,7 +68,7 @@ public class UserController {
|
|||||||
//log the user in with the userService method
|
//log the user in with the userService method
|
||||||
try {
|
try {
|
||||||
userService.loginUser(usernameField.getText(), passwordField.getText());
|
userService.loginUser(usernameField.getText(), passwordField.getText());
|
||||||
} catch (RuntimeException ex) {
|
} catch (HttpClientErrorException ex) {
|
||||||
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
|
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
|
||||||
"Your username or password is incorrect!");
|
"Your username or password is incorrect!");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -301,6 +301,23 @@ public class UserService {
|
|||||||
.encode().toUri(), Map.class);
|
.encode().toUri(), Map.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the results of a user.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return Map with all results
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
|
public Map<String, String> getResults(String name) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getResults")
|
||||||
|
.queryParam("name", name);
|
||||||
|
HttpEntity<?> entity = new HttpEntity<>(headers);
|
||||||
|
System.out.println(builder.build().encode().toUri());
|
||||||
|
return this.restTemplate.getForObject(builder.build()
|
||||||
|
.encode().toUri(), Map.class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list of all users.
|
* Gets the list of all users.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,11 +1,26 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import javafx.scene.shape.*?>
|
<?import java.lang.*?>
|
||||||
<?import javafx.geometry.*?>
|
<?import javafx.geometry.*?>
|
||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.image.*?>
|
<?import javafx.scene.image.*?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
|
<?import javafx.scene.shape.*?>
|
||||||
<?import javafx.scene.text.*?>
|
<?import javafx.scene.text.*?>
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.CheckBox?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.ScrollPane?>
|
||||||
|
<?import javafx.scene.control.Slider?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.image.Image?>
|
||||||
|
<?import javafx.scene.image.ImageView?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.shape.Line?>
|
||||||
|
<?import javafx.scene.text.Font?>
|
||||||
|
<?import javafx.scene.text.Text?>
|
||||||
|
|
||||||
<AnchorPane prefHeight="703.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.RegisterWindowController">
|
<AnchorPane prefHeight="703.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.RegisterWindowController">
|
||||||
<children>
|
<children>
|
||||||
@@ -146,6 +161,25 @@
|
|||||||
</Label>
|
</Label>
|
||||||
<Button fx:id="getStartedNextButton" layoutX="383.0" layoutY="406.0" mnemonicParsing="false" onAction="#displayTravel" styleClass="nextButton" text="Next" />
|
<Button fx:id="getStartedNextButton" layoutX="383.0" layoutY="406.0" mnemonicParsing="false" onAction="#displayTravel" styleClass="nextButton" text="Next" />
|
||||||
<Line endX="79.0" layoutX="147.0" layoutY="14.0" stroke="#545b54" />
|
<Line endX="79.0" layoutX="147.0" layoutY="14.0" stroke="#545b54" />
|
||||||
|
<Text layoutX="296.0" layoutY="51.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Welcome to Greenify!">
|
||||||
|
<font>
|
||||||
|
<Font name="System Bold" size="22.0" />
|
||||||
|
</font>
|
||||||
|
</Text>
|
||||||
|
<Text fx:id="explainText" layoutX="53.0" layoutY="487.0" strokeType="OUTSIDE" strokeWidth="0.0" text="This application will help you decrease your CO2-footprint. In the next screen, you will be asked to fill in certain things, like your yearly energy costs. These values will help us calculate your CO2-footprint. Warning: If you don't fill anything in, the calculator will use a default value based on averages, so if you want a value to be zero, please fill in zero. After that, you'll be able to see your score and compare your footprint to those of your friends. Let's go green and save the planet!" textAlignment="CENTER" visible="false" wrappingWidth="714.0">
|
||||||
|
<font>
|
||||||
|
<Font size="16.0" />
|
||||||
|
</font>
|
||||||
|
</Text>
|
||||||
|
<Button layoutX="14.0" layoutY="532.0" mnemonicParsing="false" onAction="#showExplanation" style="-fx-background-color: transparent; -fx-padding: 0 0 0 0;">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="73.0" fitWidth="72.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/questionmark.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
</children></AnchorPane>
|
</children></AnchorPane>
|
||||||
<AnchorPane fx:id="travelPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
|
<AnchorPane fx:id="travelPane" layoutY="85.0" prefHeight="618.0" prefWidth="820.0" visible="false">
|
||||||
<children>
|
<children>
|
||||||
|
|||||||
@@ -23,12 +23,7 @@
|
|||||||
<Button fx:id="loginButton" layoutX="419.0" layoutY="274.0" mnemonicParsing="false" onAction="#handleLoginButtonAction" prefHeight="26.0" prefWidth="96.0" text="Login" textAlignment="CENTER" />
|
<Button fx:id="loginButton" layoutX="419.0" layoutY="274.0" mnemonicParsing="false" onAction="#handleLoginButtonAction" prefHeight="26.0" prefWidth="96.0" text="Login" textAlignment="CENTER" />
|
||||||
<Button fx:id="signUpButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
|
<Button fx:id="signUpButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
|
||||||
<PasswordField fx:id="passwordField" layoutX="318.0" layoutY="210.0" prefHeight="42.0" prefWidth="303.0" promptText="Password" />
|
<PasswordField fx:id="passwordField" layoutX="318.0" layoutY="210.0" prefHeight="42.0" prefWidth="303.0" promptText="Password" />
|
||||||
<Hyperlink alignment="CENTER" layoutX="384.0" layoutY="301.0" prefHeight="42.0" prefWidth="173.0" text="Forgot Password?" textAlignment="CENTER" textFill="#3db25a" textOverrun="LEADING_WORD_ELLIPSIS">
|
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not a member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
|
||||||
<font>
|
|
||||||
<Font name="Corbel Bold" size="18.0" />
|
|
||||||
</font>
|
|
||||||
</Hyperlink>
|
|
||||||
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not Member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
|
|
||||||
<font>
|
<font>
|
||||||
<Font name="Californian FB" size="20.0" />
|
<Font name="Californian FB" size="20.0" />
|
||||||
</font>
|
</font>
|
||||||
|
|||||||
@@ -63,7 +63,6 @@
|
|||||||
<Line endX="104.0" layoutX="105.0" layoutY="178.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="105.0" layoutY="178.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Line endX="104.0" layoutX="109.0" layoutY="223.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="109.0" layoutY="223.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Line fx:id="pathLine" endX="100.0" endY="28.0" fill="#1b9736" layoutX="8.0" layoutY="323.0" startX="-100.0" startY="28.0" stroke="#5a635c" />
|
<Line fx:id="pathLine" endX="100.0" endY="28.0" fill="#1b9736" layoutX="8.0" layoutY="323.0" startX="-100.0" startY="28.0" stroke="#5a635c" />
|
||||||
<Line endX="104.0" layoutX="105.0" layoutY="271.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" />
|
|
||||||
<Line endX="104.0" layoutX="106.0" layoutY="270.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="106.0" layoutY="270.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Label fx:id="hintText" alignment="TOP_LEFT" layoutX="14.0" layoutY="420.0" prefHeight="218.0" prefWidth="187.0" text="Hints" textFill="#c2cdc4">
|
<Label fx:id="hintText" alignment="TOP_LEFT" layoutX="14.0" layoutY="420.0" prefHeight="218.0" prefWidth="187.0" text="Hints" textFill="#c2cdc4">
|
||||||
<font>
|
<font>
|
||||||
@@ -84,6 +83,7 @@
|
|||||||
</ImageView>
|
</ImageView>
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Line endX="104.0" layoutX="108.0" layoutY="88.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" />
|
||||||
</children></AnchorPane>
|
</children></AnchorPane>
|
||||||
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
@@ -241,71 +241,83 @@
|
|||||||
<Font name="System Bold Italic" size="18.0" />
|
<Font name="System Bold Italic" size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Pane layoutX="545.0" layoutY="130.0" prefHeight="342.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
<Pane layoutX="545.0" layoutY="130.0" prefHeight="255.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
||||||
<children>
|
<children>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="26.0" prefHeight="46.0" prefWidth="115.0" text="Meat fish eggs">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="14.0" prefHeight="46.0" prefWidth="115.0" text="Meat fish eggs">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="90.0" prefHeight="46.0" prefWidth="115.0" text="Grains/baked foods" textAlignment="CENTER">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="60.0" prefHeight="46.0" prefWidth="115.0" text="Grains/baked foods" textAlignment="CENTER">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="154.0" prefHeight="46.0" prefWidth="115.0" text="Dairy">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="106.0" prefHeight="46.0" prefWidth="115.0" text="Dairy">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="218.0" prefHeight="46.0" prefWidth="115.0" text="Fruits vegetables">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="152.0" prefHeight="46.0" prefWidth="115.0" text="Fruits vegetables">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="282.0" prefHeight="46.0" prefWidth="115.0" text="Snacks drinks">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="198.0" prefHeight="46.0" prefWidth="115.0" text="Snacks drinks">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="meat" layoutX="171.0" layoutY="41.0" styleClass="activityField" text="Label" />
|
<Label fx:id="meat" layoutX="171.0" layoutY="29.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="grains" layoutX="171.0" layoutY="105.0" styleClass="activityField" text="Label" />
|
<Label fx:id="grains" layoutX="171.0" layoutY="75.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="dairy" layoutX="171.0" layoutY="169.0" styleClass="activityField" text="Label" />
|
<Label fx:id="dairy" layoutX="171.0" layoutY="121.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="fruits" layoutX="171.0" layoutY="233.0" styleClass="activityField" text="Label" />
|
<Label fx:id="fruits" layoutX="171.0" layoutY="167.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="snacks" layoutX="171.0" layoutY="297.0" styleClass="activityField" text="Label" />
|
<Label fx:id="snacks" layoutX="171.0" layoutY="213.0" styleClass="activityField" text="Label" />
|
||||||
</children>
|
</children>
|
||||||
</Pane>
|
</Pane>
|
||||||
<Label alignment="CENTER" layoutX="545.0" layoutY="488.0" prefHeight="32.0" prefWidth="255.0" text="Extras!" textAlignment="CENTER" textFill="#107222">
|
<Label alignment="CENTER" layoutX="545.0" layoutY="385.0" prefHeight="32.0" prefWidth="255.0" text="Extras!" textAlignment="CENTER" textFill="#107222">
|
||||||
<font>
|
<font>
|
||||||
<Font name="System Bold Italic" size="18.0" />
|
<Font name="System Bold Italic" size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Pane layoutX="545.0" layoutY="520.0" prefHeight="129.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
<Pane layoutX="545.0" layoutY="412.0" prefHeight="238.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
||||||
<children>
|
<children>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="7.0" prefHeight="27.0" prefWidth="183.0" text="Buying local produce">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="56.0" prefHeight="27.0" prefWidth="183.0" text="Buying local produce">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="localProduce" layoutX="195.0" layoutY="7.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="localProduce" layoutX="189.0" layoutY="56.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="39.0" prefHeight="27.0" prefWidth="183.0" text="Using bike">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="92.0" prefHeight="27.0" prefWidth="183.0" text="Using bike">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="bike" layoutX="195.0" layoutY="39.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="bike" layoutX="189.0" layoutY="92.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="20.0" layoutY="71.0" prefHeight="27.0" prefWidth="183.0" text="Lowering the temperature">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="164.0" prefHeight="27.0" prefWidth="183.0" text="Lowering the temperature">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="loweringTemp" layoutX="195.0" layoutY="71.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="loweringTemp" layoutX="188.0" layoutY="164.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="20.0" layoutY="103.0" prefHeight="27.0" prefWidth="183.0" text="Installing solar panels">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="200.0" prefHeight="27.0" prefWidth="183.0" text="Installing solar panels">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="solarPanels" layoutX="195.0" layoutY="103.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="solarPanels" layoutX="188.0" layoutY="200.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="128.0" prefHeight="27.0" prefWidth="183.0" text="Using public transport">
|
||||||
|
<font>
|
||||||
|
<Font size="14.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Label fx:id="publicTrans" layoutX="188.0" layoutY="128.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="11.0" layoutY="20.0" prefHeight="27.0" prefWidth="183.0" text="Eating vegetarian meal">
|
||||||
|
<font>
|
||||||
|
<Font size="14.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Label fx:id="veganMeal" layoutX="188.0" layoutY="20.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
</children>
|
</children>
|
||||||
</Pane>
|
</Pane>
|
||||||
<Button fx:id="addExtraActivityButton2" contentDisplay="RIGHT" layoutX="545.0" layoutY="14.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity!" textFill="#147219">
|
<Button fx:id="addExtraActivityButton2" contentDisplay="RIGHT" layoutX="545.0" layoutY="14.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity!" textFill="#147219">
|
||||||
|
|||||||
BIN
src/Client/src/main/resources/icons/questionmark.png
Normal file
BIN
src/Client/src/main/resources/icons/questionmark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
@@ -1,9 +1,9 @@
|
|||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import greenify.client.Friend;
|
import greenify.client.Friend;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
public class FriendTest {
|
public class FriendTest {
|
||||||
@Test
|
@Test
|
||||||
public void setAndGetTest() {
|
public void setAndGetTest() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import static junit.framework.TestCase.assertTrue;
|
import static junit.framework.TestCase.assertTrue;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
import greenify.client.Hints;
|
import greenify.client.Hints;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -15,7 +16,7 @@ public class HintsTest {
|
|||||||
public void hintsContainsTest() {
|
public void hintsContainsTest() {
|
||||||
Hints test = new Hints();
|
Hints test = new Hints();
|
||||||
assertTrue(test.hints.contains("27,000 trees are cut down "
|
assertTrue(test.hints.contains("27,000 trees are cut down "
|
||||||
+ "each day so we can have toilet paper."));
|
+ "every day so we can have toilet paper."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -24,6 +25,20 @@ public class HintsTest {
|
|||||||
String random = test.randomHint();
|
String random = test.randomHint();
|
||||||
assertTrue(test.hints.contains(random));
|
assertTrue(test.hints.contains(random));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void hintsContainsTestTwo() {
|
||||||
|
Hints test = new Hints();
|
||||||
|
assertTrue(test.hints.contains("Plastic bad, very bad."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void hintsNotNullTest() {
|
||||||
|
Hints test = new Hints();
|
||||||
|
assertNotNull(test.hints);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import greenify.client.rest.UserService;
|
import greenify.client.rest.UserService;
|
||||||
import greenify.common.UserDto;
|
import greenify.common.UserDto;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -14,9 +17,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class UserServiceTest {
|
public class UserServiceTest {
|
||||||
|
|
||||||
@@ -163,6 +163,12 @@ public class UserServiceTest {
|
|||||||
userService.getAchievements("mika");
|
userService.getAchievements("mika");
|
||||||
Mockito.verify(userService).getAchievements("mika");
|
Mockito.verify(userService).getAchievements("mika");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() throws Exception {
|
||||||
|
userService.getResults("mika");
|
||||||
|
Mockito.verify(userService).getResults("mika");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -185,5 +185,15 @@ public class UserController {
|
|||||||
public Map<String, Boolean> getAchievements(@RequestParam(value = "name") String name) {
|
public Map<String, Boolean> getAchievements(@RequestParam(value = "name") String name) {
|
||||||
return userService.getAchievements(name);
|
return userService.getAchievements(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gets the result for schema.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return map of all results of the user
|
||||||
|
*/
|
||||||
|
@RequestMapping("/getResults")
|
||||||
|
public Map<String, String> getResults(@RequestParam(value = "name") String name) {
|
||||||
|
return userService.getResults(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ public class AchievementService {
|
|||||||
* @param user user for whom achiev6 changes
|
* @param user user for whom achiev6 changes
|
||||||
*/
|
*/
|
||||||
public void achieveLetItShine(User user) {
|
public void achieveLetItShine(User user) {
|
||||||
int solar_panels = Integer.parseInt(user.getExtraInputs().get("solar_panels"));
|
int solarPanels = Integer.parseInt(user.getExtraInputs().get("solar_panels"));
|
||||||
if (solar_panels >= 2) {
|
if (solarPanels >= 2) {
|
||||||
userService.setAchievement(user.getName(), "Let it shine", true);
|
userService.setAchievement(user.getName(), "Let it shine", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -108,5 +109,48 @@ public class CalculatorService {
|
|||||||
inputs.put("input_footprint_shopping_goods_total", netShopping + "");
|
inputs.put("input_footprint_shopping_goods_total", netShopping + "");
|
||||||
user.setFootPrintInputs(inputs);
|
user.setFootPrintInputs(inputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the result of the CO2-calculation from the CoolClimate website
|
||||||
|
* @param map results that the user filled in
|
||||||
|
* @return the results from the website.
|
||||||
|
*/
|
||||||
|
public Map<String, String> getResults(Map<String, String> map) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.set("accept", MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
headers.set("app_id", "a98272e3");
|
||||||
|
headers.set("app_key", "b9167c4918cb2b3143614b595065d83b");
|
||||||
|
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
|
||||||
|
UriComponentsBuilder builder =
|
||||||
|
UriComponentsBuilder.fromHttpUrl("https://apis.berkeley.edu/coolclimate/footprint");
|
||||||
|
for (String inputId : map.keySet()) {
|
||||||
|
builder = builder.queryParam(inputId, map.get(inputId));
|
||||||
|
}
|
||||||
|
ResponseEntity<String> response = restTemplate
|
||||||
|
.exchange(builder.build().encode().toUri(), HttpMethod.GET,
|
||||||
|
entity, String.class);
|
||||||
|
String transport = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_transport_total>")
|
||||||
|
+ 24, response.getBody().indexOf("</result_transport_total>"));
|
||||||
|
String housing = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_housing_total>")
|
||||||
|
+ 22, response.getBody().indexOf("</result_housing_total>"));
|
||||||
|
String food = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_food_total>")
|
||||||
|
+ 19, response.getBody().indexOf("</result_food_total>"));
|
||||||
|
String goods = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_goods_total>")
|
||||||
|
+ 20, response.getBody().indexOf("</result_goods_total>"));
|
||||||
|
String services = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_services_total>")
|
||||||
|
+ 23, response.getBody().indexOf("</result_services_total>"));
|
||||||
|
Map<String, String> resultMap = new HashMap<>();
|
||||||
|
resultMap.put("transport", transport);
|
||||||
|
resultMap.put("housing", housing);
|
||||||
|
resultMap.put("food", food);
|
||||||
|
resultMap.put("goods", goods);
|
||||||
|
resultMap.put("services", services);
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -280,6 +280,17 @@ public class UserService {
|
|||||||
return user.getAchievements();
|
return user.getAchievements();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gets all achievements of a user.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return map with all achievements of a user
|
||||||
|
*/
|
||||||
|
public Map<String, String> getResults(String name) {
|
||||||
|
User user = userRepository.findByName(name);
|
||||||
|
Map<String, String> results = calculatorService.getResults(user.getFootPrintInputs());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets the list of all users.
|
* This method gets the list of all users.
|
||||||
* @return list of all users
|
* @return list of all users
|
||||||
|
|||||||
@@ -250,4 +250,16 @@ public class UserControllerTest {
|
|||||||
assertEquals("mika", arg1Captor.getValue());
|
assertEquals("mika", arg1Captor.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() throws Exception {
|
||||||
|
ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class);
|
||||||
|
mvc.perform(get("/getResults")
|
||||||
|
.param("name", "mika")
|
||||||
|
.accept(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
verify(userService, times(1)).getResults(arg1Captor.capture());
|
||||||
|
assertEquals("mika", arg1Captor.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,4 +173,138 @@ public class CalculatorServiceTest {
|
|||||||
Float footPrint = service.invokeExternalService(map);
|
Float footPrint = service.invokeExternalService(map);
|
||||||
Assert.assertEquals(new Float(11421.537), footPrint);
|
Assert.assertEquals(new Float(11421.537), footPrint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() {
|
||||||
|
CalculatorService service = new CalculatorService();
|
||||||
|
service.restTemplate = new RestTemplate();
|
||||||
|
Map<String,String> map = new HashMap<String, String>() {{
|
||||||
|
put("input_location", "Chicago");
|
||||||
|
put("input_location_mode", "1");
|
||||||
|
put("input_size", "1");
|
||||||
|
put("input_income", "40000");
|
||||||
|
put("input_population", "1");
|
||||||
|
put("input_changed", "0");
|
||||||
|
put("input_footprint_household_adults", "1");
|
||||||
|
put("input_footprint_household_children", "0");
|
||||||
|
put("input_footprint_transportation_num_vehicles", "1");
|
||||||
|
put("input_footprint_transportation_miles1", "16100");
|
||||||
|
put("input_footprint_transportation_mpg1", "6");
|
||||||
|
put("input_footprint_transportation_fuel1", "2");
|
||||||
|
put("input_footprint_transportation_miles2", "13200");
|
||||||
|
put("input_footprint_transportation_fuel2", "0");
|
||||||
|
put("input_footprint_transportation_mpg2", "22");
|
||||||
|
put("input_footprint_transportation_miles3", "13200");
|
||||||
|
put("input_footprint_transportation_fuel3", "0");
|
||||||
|
put("input_footprint_transportation_mpg3", "22");
|
||||||
|
put("input_footprint_transportation_miles4", "13200");
|
||||||
|
put("input_footprint_transportation_fuel4", "0");
|
||||||
|
put("input_footprint_transportation_mpg4", "22");
|
||||||
|
put("input_footprint_transportation_miles5", "13200");
|
||||||
|
put("input_footprint_transportation_fuel5", "0");
|
||||||
|
put("input_footprint_transportation_mpg5", "22");
|
||||||
|
put("input_footprint_transportation_miles6", "13200");
|
||||||
|
put("input_footprint_transportation_fuel6", "0");
|
||||||
|
put("input_footprint_transportation_mpg6", "22");
|
||||||
|
put("input_footprint_transportation_miles7", "13200");
|
||||||
|
put("input_footprint_transportation_fuel7", "0");
|
||||||
|
put("input_footprint_transportation_mpg7", "22");
|
||||||
|
put("input_footprint_transportation_miles8", "13200");
|
||||||
|
put("input_footprint_transportation_fuel8", "0");
|
||||||
|
put("input_footprint_transportation_mpg8", "22");
|
||||||
|
put("input_footprint_transportation_miles9", "13200");
|
||||||
|
put("input_footprint_transportation_fuel9", "0");
|
||||||
|
put("input_footprint_transportation_mpg9", "22");
|
||||||
|
put("input_footprint_transportation_miles10", "13200");
|
||||||
|
put("input_footprint_transportation_fuel10", "0");
|
||||||
|
put("input_footprint_transportation_mpg10", "22");
|
||||||
|
put("input_footprint_transportation_groundtype", "436");
|
||||||
|
put("input_footprint_transportation_publictrans", "436");
|
||||||
|
put("input_footprint_transportation_bus", "436");
|
||||||
|
put("input_footprint_transportation_transit", "436");
|
||||||
|
put("input_footprint_transportation_commuter", "436");
|
||||||
|
put("input_footprint_transportation_intercity", "436");
|
||||||
|
put("input_footprint_transportation_airtype", "3900");
|
||||||
|
put("input_footprint_transportation_airtotal", "3900");
|
||||||
|
put("input_footprint_transportation_airshort", "3900");
|
||||||
|
put("input_footprint_transportation_airmedium", "3900");
|
||||||
|
put("input_footprint_transportation_airlong", "3900");
|
||||||
|
put("input_footprint_transportation_airextended", "3900");
|
||||||
|
put("input_footprint_housing_cdd", "40000");
|
||||||
|
put("input_footprint_housing_hdd", "40000");
|
||||||
|
put("input_footprint_housing_electricity_type", "40000");
|
||||||
|
put("input_footprint_housing_electrivity_dollars", "40000");
|
||||||
|
put("input_footprint_housing_electricity_kwh", "12632");
|
||||||
|
put("input_footprint_housing_cleanpercent", "0");
|
||||||
|
put("input_footprint_housing_naturalgas_type", "1");
|
||||||
|
put("input_footprint_housing_naturalgas_dollars", "40000");
|
||||||
|
put("input_footprint_housing_naturalgas_therms", "472");
|
||||||
|
put("input_footprint_housing_naturalgas_cuft", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_type", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_dollars", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_gallons", "73");
|
||||||
|
put("input_footprint_housing_heatingoil_dollars_per_gallon", "40000");
|
||||||
|
put("input_footprint_housing_squarefeet", "1850");
|
||||||
|
put("input_footprint_housing_watersewage", "100");
|
||||||
|
put("input_footprint_housing_gco2_per_kwh", "40000");
|
||||||
|
put("input_footprint_shopping_food_meatfisheggs_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_beefpork_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_poultry_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_fish_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_other_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_fruitvegetables_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_dairy_default", "4.2");
|
||||||
|
put("input_footprint_shopping_food_cereals_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_otherfood_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meattype", "40000");
|
||||||
|
put("input_footprint_shopping_food_meatfisheggs", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_beefpork", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_poultry", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_fish", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_other", "2.4");
|
||||||
|
put("input_footprint_shopping_food_cereals", "4.1");
|
||||||
|
put("input_footprint_shopping_food_dairy", "2.2");
|
||||||
|
put("input_footprint_shopping_food_fruitvegetables", "3.5");
|
||||||
|
put("input_footprint_shopping_food_otherfood", "3.4");
|
||||||
|
put("input_footprint_shopping_goods_default_furnitureappliances", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_clothing", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_entertainment", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_office", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_personalcare", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_autoparts", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_medical", "1310");
|
||||||
|
put("input_footprint_shopping_goods_type", "1310");
|
||||||
|
put("input_footprint_shopping_goods_total", "1310");
|
||||||
|
put("input_footprint_shopping_goods_furnitureappliances", "1310");
|
||||||
|
put("input_footprint_shopping_goods_clothing", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_type", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_total", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_entertainment", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_office", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_personalcare", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_autoparts", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_medical", "1310");
|
||||||
|
put("input_footprint_shopping_services_type", "1310");
|
||||||
|
put("input_footprint_shopping_services_total", "1310");
|
||||||
|
put("input_footprint_shopping_services_healthcare", "1310");
|
||||||
|
put("input_footprint_shopping_services_education", "1310");
|
||||||
|
put("input_footprint_shopping_services_communications", "1310");
|
||||||
|
put("input_footprint_shopping_services_vehicleservices", "1310");
|
||||||
|
put("input_footprint_shopping_services_finance", "1310");
|
||||||
|
put("input_footprint_shopping_services_household", "1310");
|
||||||
|
put("input_footprint_shopping_services_charity", "1310");
|
||||||
|
put("input_footprint_shopping_services_miscservices", "1310");
|
||||||
|
put("internal_state_abbreviation", "US");
|
||||||
|
put("input_footprint_shopping_services_total", "2413");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Map<String, String> result = new HashMap<>();
|
||||||
|
result.put("transport", "10769.855687");
|
||||||
|
result.put("housing", "556.831359");
|
||||||
|
result.put("food", "0.028481");
|
||||||
|
result.put("goods", "55.256948");
|
||||||
|
result.put("services", "39.564835");
|
||||||
|
Map<String, String> footPrint = service.getResults(map);
|
||||||
|
Assert.assertEquals(result, footPrint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user