Merge branch 'createCalculator' into 'master'
Merge createCalculator branch into master See merge request cse1105/2018-2019/oopp-group-43/template!41
This commit is contained in:
BIN
doc/reports/checkstyle/20190325_checkstyle.jpg
Normal file
BIN
doc/reports/checkstyle/20190325_checkstyle.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 396 KiB |
BIN
doc/reports/coverage/20190325_coverage.png
Normal file
BIN
doc/reports/coverage/20190325_coverage.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 190 KiB |
@@ -12,15 +12,11 @@ import org.springframework.context.ConfigurableApplicationContext;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
//springbootApplication is so Spring knows that this is a Spring application
|
||||
@SpringBootApplication
|
||||
public class Application extends javafx.application.Application {
|
||||
//configurable application is for spring so it knows that it can use it
|
||||
private static ConfigurableApplicationContext springContext;
|
||||
//logger to log all the things that happen to the console
|
||||
private static final Logger log = LoggerFactory.getLogger(Application.class);
|
||||
|
||||
//launch is to launch the GUI things
|
||||
public static void main(String[] args) {
|
||||
launch(args);
|
||||
}
|
||||
@@ -29,10 +25,8 @@ public class Application extends javafx.application.Application {
|
||||
* This method takes an url and return a parent.
|
||||
* @param url which is being loaded.
|
||||
* @return parent object.
|
||||
* @throws IOException if it can't find an FXML file
|
||||
*/
|
||||
public static Parent load(java.net.URL url) throws IOException {
|
||||
//loader to load the FXML file
|
||||
FXMLLoader loader = new FXMLLoader();
|
||||
loader.setControllerFactory(springContext::getBean);
|
||||
loader.setLocation(url);
|
||||
@@ -41,22 +35,14 @@ public class Application extends javafx.application.Application {
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
//run the application
|
||||
springContext = SpringApplication.run(Application.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) throws Exception {
|
||||
//load the fxml file
|
||||
Parent rootNode = load(this.getClass().getClassLoader().getResource("fxml/sample.fxml"));
|
||||
//set the title for the window
|
||||
Parent rootNode = load(this.getClass().getClassLoader().getResource("fxml/LoginWindow.fxml"));
|
||||
primaryStage.setTitle("Greenify");
|
||||
//set the scene
|
||||
Scene scene = new Scene(rootNode);
|
||||
//add the stylesheet
|
||||
scene.getStylesheets()
|
||||
.add(getClass().getClassLoader().getResource("stylesheets/LoginWindowStyle.css")
|
||||
.toExternalForm());
|
||||
primaryStage.setScene(scene);
|
||||
primaryStage.show();
|
||||
}
|
||||
|
||||
@@ -72,9 +72,6 @@ public class DashBoardController {
|
||||
activitiesButton.setSkin(new MyButtonSkin(activitiesButton));
|
||||
userButton.setSkin(new MyButtonSkin(userButton));
|
||||
friendsButton.setSkin(new MyButtonSkin(friendsButton));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -109,11 +106,7 @@ public class DashBoardController {
|
||||
* @param event the event (clicking the button)
|
||||
*/
|
||||
public void displayActivities(ActionEvent event) {
|
||||
|
||||
|
||||
addFadeTransition(activitiesPane);
|
||||
|
||||
net = userService.currentUser.getVeganMeal() + count;
|
||||
totalVeganMealCounter.setText("" + net);
|
||||
System.out.println("display activities");
|
||||
dashboardPane.setVisible(false);
|
||||
@@ -146,23 +139,6 @@ public class DashBoardController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* adds a vegetarian meal.
|
||||
* @param event the event (clicking the button)
|
||||
*/
|
||||
public void addVeganMeal(ActionEvent event) {
|
||||
|
||||
count++;
|
||||
net = userService.currentUser.getVeganMeal() + count;
|
||||
totalVeganMealCounter.setText("" + net);
|
||||
veganMealCounter.setText("" + count);
|
||||
System.out.println(userService);
|
||||
userService.addVeganMeal(userService.currentUser.getId(),
|
||||
userService.currentUser.getName());
|
||||
System.out.println("Vegetarian meal is added");
|
||||
}
|
||||
|
||||
//sets the slide in transition for startup
|
||||
public void addSlideTransition(Node node, Line path1) {
|
||||
PathTransition pathTrans = new PathTransition(Duration.millis(1100), path1, node);
|
||||
@@ -194,4 +170,4 @@ public class DashBoardController {
|
||||
button.setOnMouseExited(e -> scaleDown.playFromStart());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ public class UserController {
|
||||
public void openDashboard() throws IOException {
|
||||
//load the fxml file
|
||||
Parent dash = Application.load(this.getClass().getClassLoader()
|
||||
.getResource("fxml/dashboard.fxml"));
|
||||
.getResource("fxml/dashboard.fxml"));
|
||||
Scene scene = new Scene(dash);
|
||||
//add the stylesheet for the CSS
|
||||
scene.getStylesheets().add(getClass().getClassLoader()
|
||||
|
||||
@@ -80,27 +80,18 @@ public class UserService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* a user adds vegan meal.
|
||||
* @param id the id of the user
|
||||
* @param name the username of the user
|
||||
* @return a userDTO
|
||||
*/
|
||||
@SuppressWarnings("Duplicates")
|
||||
public UserDto addVeganMeal(Long id, String name) {
|
||||
//this method is almost the same as the registerUser one, but with a different link
|
||||
public String updateInput(String name, String inputName, String value) {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
|
||||
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/addVeganMeal")
|
||||
.queryParam("id", id)
|
||||
.queryParam("name", name);
|
||||
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/setInput")
|
||||
.queryParam("name", name)
|
||||
.queryParam("inputName", inputName)
|
||||
.queryParam("value",value);
|
||||
HttpEntity<?> entity = new HttpEntity<>(headers);
|
||||
System.out.println(builder.build().encode().toUri());
|
||||
return this.restTemplate.getForObject(builder.build().encode().toUri(), UserDto.class);
|
||||
}
|
||||
|
||||
@RequestMapping("/userData")
|
||||
public int getVeganData(@RequestParam(value = "veganMeal") int veganMeal) {
|
||||
return veganMeal;
|
||||
String result = this.restTemplate.getForObject(builder.build()
|
||||
.encode().toUri(), String.class);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import javafx.scene.image.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="602.0" prefWidth="934.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.UserController">
|
||||
<children>
|
||||
<ImageView fitHeight="600.0" fitWidth="943.0" layoutX="-1.0" pickOnBounds="true">
|
||||
@@ -36,3 +32,4 @@
|
||||
<TextField fx:id="usernameField" layoutX="319.0" layoutY="154.0" prefHeight="42.0" prefWidth="303.0" promptText="Username" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.image.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.shape.*?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.PasswordField?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
<AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.RegisterWindowController">
|
||||
<children>
|
||||
<Line fx:id="uNamePathLine" endX="100.0" layoutX="2.0" layoutY="109.0" startX="-100.0" />
|
||||
<Line fx:id="uNamePathLine" endX="100.0" layoutX="2.0" layoutY="109.0" startX="-100.0" />
|
||||
<ImageView fitHeight="312.0" fitWidth="300.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@../registerBackground.png" />
|
||||
|
||||
@@ -1,22 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.image.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.shape.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.Line?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<AnchorPane prefHeight="602.0" prefWidth="934.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.DashBoardController">
|
||||
<children>
|
||||
@@ -229,10 +217,10 @@
|
||||
</font>
|
||||
</Text>
|
||||
<TableView fx:id="friendsTable" layoutX="60.0" layoutY="130.0" prefHeight="426.0" prefWidth="216.0" style="-fx-background-color: #e1fcd9;">
|
||||
<columns>
|
||||
<TableColumn fx:id="friendsColumn" prefWidth="107.0" text="Friend" />
|
||||
<TableColumn fx:id="scoreColumn" prefWidth="108.0" text="Score" />
|
||||
</columns>
|
||||
<columns>
|
||||
<TableColumn fx:id="friendsColumn" prefWidth="107.0" text="Friend" />
|
||||
<TableColumn fx:id="scoreColumn" prefWidth="108.0" text="Score" />
|
||||
</columns>
|
||||
</TableView>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
||||
@@ -14,7 +14,6 @@ import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class UserServiceTest {
|
||||
//logger that logs everything to the console
|
||||
private static Logger logger = LoggerFactory.getLogger(UserServiceTest.class);
|
||||
|
||||
@Mock
|
||||
@@ -26,8 +25,7 @@ public class UserServiceTest {
|
||||
|
||||
@Test
|
||||
public void userRegisterTest() throws Exception {
|
||||
//tests if registering works
|
||||
UserDto testUser = new UserDto(1L, "Eric", 0);
|
||||
UserDto testUser = new UserDto(1L, "Eric");
|
||||
Mockito.when(restTemplate.getForObject(new java.net.URI("http://localhost:8080/registerUser?name=Eric&password=password"),
|
||||
UserDto.class))
|
||||
.thenReturn(testUser);
|
||||
@@ -38,25 +36,13 @@ public class UserServiceTest {
|
||||
|
||||
@Test
|
||||
public void userLoginTest() throws Exception {
|
||||
//tests if logging in works
|
||||
UserDto testUser = new UserDto(1L, "Eric", 0);
|
||||
UserDto testUser = new UserDto(1L, "Eric");
|
||||
Mockito.when(restTemplate.getForObject(new java.net.URI("http://localhost:8080/loginUser?name=Eric&password=password"),
|
||||
UserDto.class))
|
||||
.thenReturn(testUser);
|
||||
UserDto user = userService.loginUser("Eric", "password");
|
||||
Assert.assertEquals(testUser, user);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addVeganMealTest() throws Exception {
|
||||
//tests if adding a vegetarian meal works
|
||||
UserDto testUser = new UserDto(1L, "Eric", 0);
|
||||
Mockito.when(restTemplate.getForObject(new java.net.URI("http://localhost:8080/addVeganMeal?id=1&name=Eric"),
|
||||
UserDto.class))
|
||||
.thenReturn(testUser);
|
||||
UserDto user = userService.addVeganMeal(1L, "Eric");
|
||||
Assert.assertEquals(testUser, user);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
package greenify.common;
|
||||
|
||||
public class ActivityDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private String description;
|
||||
private int score;
|
||||
|
||||
public ActivityDto() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for ActivityDto.
|
||||
* @param id id of the activity
|
||||
* @param name name of the activity
|
||||
* @param description description of the activity
|
||||
* @param score score of the activity
|
||||
*/
|
||||
public ActivityDto(Long id, String name, String description, int score) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
//all the getters and setters of the class
|
||||
|
||||
/**
|
||||
* gets the name of the activity.
|
||||
* @return the name of the activity
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the name of the activity.
|
||||
* @param name the name to be set of the activity.
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the id of the activity.
|
||||
* @return the id of the activity.
|
||||
*/
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the id of the activity.
|
||||
* @param id the id to be set of the activity.
|
||||
*/
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the description of the activity.
|
||||
* @return the description of the activity.
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the description of the activity.
|
||||
* @param description the description to be set of the activity.
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the score of the activity.
|
||||
* @return the score of the activity.
|
||||
*/
|
||||
public int getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the score of the activity.
|
||||
* @param score the score to be set of the activity.
|
||||
*/
|
||||
public void setScore(int score) {
|
||||
this.score = score;
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@ package greenify.common;
|
||||
public class UserDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private int veganMeal;
|
||||
|
||||
public UserDto() {
|
||||
}
|
||||
@@ -16,12 +15,10 @@ public class UserDto {
|
||||
* The constructor method of UserDto.
|
||||
* @param id of the user
|
||||
* @param name of the user
|
||||
* @param veganMeal the number of vegetarian meals eaten
|
||||
*/
|
||||
public UserDto(Long id, String name, int veganMeal) {
|
||||
public UserDto(Long id, String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.veganMeal = veganMeal;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@@ -39,12 +36,4 @@ public class UserDto {
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getVeganMeal() {
|
||||
return veganMeal;
|
||||
}
|
||||
|
||||
public void setVeganMeal(int veganMeal) {
|
||||
this.veganMeal = veganMeal;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import greenify.common.ActivityDto;
|
||||
import org.junit.Test;
|
||||
|
||||
public class ActivityDtoTest {
|
||||
@Test
|
||||
public void setAndGetTest() {
|
||||
ActivityDto testActivity = new ActivityDto();
|
||||
testActivity.setId(1L);
|
||||
testActivity.setName("eatVeganMeal");
|
||||
testActivity.setDescription("User adds a vegan meal");
|
||||
testActivity.setScore(10);
|
||||
ActivityDto activity = new ActivityDto(1L, "eatVeganMeal", "User adds a vegan meal", 10);
|
||||
assertTrue(activity.getId() == 1L);
|
||||
assertEquals(activity.getName(), "eatVeganMeal");
|
||||
assertEquals(activity.getDescription(), "User adds a vegan meal");
|
||||
assertEquals(activity.getScore(), 10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsTest() {
|
||||
ActivityDto first = new ActivityDto(1L, "eatVeganMeal", "User adds a vegan meal", 10);
|
||||
ActivityDto second = new ActivityDto(1L, "eatVeganMeal", "User adds a vegan meal", 10);
|
||||
assertEquals(first.getId(), second.getId());
|
||||
assertEquals(first.getName(), second.getName());
|
||||
assertEquals(first.getDescription(), second.getDescription());
|
||||
assertEquals(first.getScore(), second.getScore());
|
||||
}
|
||||
}
|
||||
@@ -10,17 +10,15 @@ public class UserDtoTest {
|
||||
UserDto testUser = new UserDto();
|
||||
testUser.setId(1L);
|
||||
testUser.setName("greenify");
|
||||
testUser.setVeganMeal(0);
|
||||
UserDto user = new UserDto(1L, "greenify", 0);
|
||||
UserDto user = new UserDto(1L, "greenify");
|
||||
assertTrue(user.getId() == 1L);
|
||||
assertEquals(user.getName(), "greenify");
|
||||
assertTrue(user.getVeganMeal() == 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsTest() {
|
||||
UserDto first = new UserDto(1L, "greenify", 0);
|
||||
UserDto second = new UserDto(1L, "greenify", 0);
|
||||
UserDto first = new UserDto(1L, "greenify");
|
||||
UserDto second = new UserDto(1L, "greenify");
|
||||
assertEquals(first.getId(), second.getId());
|
||||
assertEquals(first.getName(), second.getName());
|
||||
}
|
||||
|
||||
59
src/Server/src/main/java/greenify/server/InputItem.java
Normal file
59
src/Server/src/main/java/greenify/server/InputItem.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package greenify.server;
|
||||
|
||||
public class InputItem {
|
||||
private String name;
|
||||
private Boolean isFloat;
|
||||
private String defaultValue;
|
||||
private Boolean isPresentByDefault = true;
|
||||
|
||||
/**
|
||||
* Constructor for input items.
|
||||
* @param name of the input
|
||||
* @param isFloat whether it is float or not
|
||||
* @param defaultValue states the value
|
||||
*/
|
||||
public InputItem(String name, boolean isFloat, String defaultValue) {
|
||||
this.name = name;
|
||||
this.isFloat = isFloat;
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for input items.
|
||||
* @param name of the input
|
||||
* @param isFloat whether it is float or not
|
||||
* @param defaultValue states the value
|
||||
* @param isPresentByDefault for different number of cars
|
||||
*/
|
||||
public InputItem(String name, Boolean isFloat, String defaultValue,
|
||||
Boolean isPresentByDefault) {
|
||||
this.name = name;
|
||||
this.isFloat = isFloat;
|
||||
this.defaultValue = defaultValue;
|
||||
this.isPresentByDefault = isPresentByDefault;
|
||||
}
|
||||
|
||||
public String getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String defaultValue) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Boolean getFloat() {
|
||||
return isFloat;
|
||||
}
|
||||
|
||||
public void setFloat(Boolean isFloat) {
|
||||
this.isFloat = isFloat;
|
||||
}
|
||||
}
|
||||
87
src/Server/src/main/java/greenify/server/InputValidator.java
Normal file
87
src/Server/src/main/java/greenify/server/InputValidator.java
Normal file
@@ -0,0 +1,87 @@
|
||||
package greenify.server;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class InputValidator {
|
||||
|
||||
private static final List<InputItem> inputItems = Arrays.asList(
|
||||
new InputItem("input_size", false, "1"),
|
||||
new InputItem("input_income", false, "40000"),
|
||||
new InputItem("transportation_num_vehicles", false, "1" ),
|
||||
new InputItem("transportation_miles1", false, "16100", false),
|
||||
new InputItem("transportation_fuels1", false, "2" , false),
|
||||
new InputItem("transportation_mpg1", false, null, false ),
|
||||
new InputItem("transportation_miles2", false, "13200", false ),
|
||||
new InputItem("transportation_fuels2", false, "0" , false),
|
||||
new InputItem("transportation_mpg2", false, "22" ,false),
|
||||
new InputItem("transportation_publicTrans", false, "436" ),
|
||||
new InputItem("transportation_air", false, "3900" ),
|
||||
new InputItem("housing_electricity_kwh_year", false, "12632" ),
|
||||
new InputItem("housing_cleanPercent", false, "0" ),
|
||||
new InputItem("housing_naturalGas_therms_year", false, "472" ),
|
||||
new InputItem("housing_heatingOil_gallons_year", false, "73" ),
|
||||
new InputItem("housing_square_feet", false, "1850" ),
|
||||
new InputItem("housing_water_sewage", false, "100" ),
|
||||
new InputItem("food_meat_fish_eggs", true, "2.4" ),
|
||||
new InputItem("food_grains", true, "4.1" ),
|
||||
new InputItem("food_dairy", true, "2.2" ),
|
||||
new InputItem("food_fruit_vegetables", true, "3.5" ),
|
||||
new InputItem("food_snacks_drinks", true, "3.4" ),
|
||||
new InputItem("shopping_goods", false, "1310" ),
|
||||
new InputItem("shopping_services", false, "2413" )
|
||||
);
|
||||
|
||||
/**
|
||||
* The method checks that the id is valid or not.
|
||||
* @param inputName the name of input
|
||||
* @return true or false
|
||||
*/
|
||||
public static Boolean isValidItem(String inputName) {
|
||||
return inputItems.stream().filter(i -> i.getName() == inputName).findAny().isPresent();
|
||||
}
|
||||
|
||||
/**
|
||||
* The method checks that the item value is valid or not.
|
||||
* @param inputName the name of input
|
||||
* @param value the value of item
|
||||
* @return true or false
|
||||
*/
|
||||
public static boolean isValidItemValue(String inputName, String value) {
|
||||
InputItem item = null;
|
||||
for (int i = 0; i < inputItems.size(); i++) {
|
||||
if (inputItems.get(i).getName() == inputName) {
|
||||
item = inputItems.get(i);
|
||||
}
|
||||
}
|
||||
if (item.getFloat()) {
|
||||
try {
|
||||
Float number = Float.parseFloat(value);
|
||||
} catch (NumberFormatException | NullPointerException nfe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
try {
|
||||
Integer number = Integer.parseInt(value);
|
||||
} catch (NumberFormatException | NullPointerException nfe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getter for default values.
|
||||
* @return the map of default values
|
||||
*/
|
||||
public static Map<String, String> getDefaultValues() {
|
||||
Map<String,String> map = new HashMap<String, String>(){};
|
||||
for (int i = 0; i < inputItems.size(); i++) {
|
||||
map.put(inputItems.get(i).getName(), inputItems.get(i).getDefaultValue());
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
package greenify.server.data.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Objects;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@Table(name = "activities")
|
||||
public class Activity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
Long id;
|
||||
String name;
|
||||
String description;
|
||||
int score;
|
||||
|
||||
/**
|
||||
* makes an activity object.
|
||||
* @param id the id of the activity.
|
||||
* @param name the name of the feature.
|
||||
* @param description the description of the feature.
|
||||
* @param score the amount of points a user gets for doing this activity.
|
||||
*/
|
||||
public Activity(long id, String name, String description, int score) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the id.
|
||||
* @return the id
|
||||
*/
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the name.
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the description.
|
||||
* @return the description
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the score.
|
||||
* @return the score
|
||||
*/
|
||||
public int getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sets the id.
|
||||
* @param id the you want to assign to this.id.
|
||||
*/
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the name.
|
||||
* @param name the you want to assign to this.name.
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the description.
|
||||
* @param description the description to be set.
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the score you get for an activity.
|
||||
* @param score the you want to assign to the activity.
|
||||
*/
|
||||
public void setScore(int score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a human readable object. It's in JSON.
|
||||
* @return the JSON form of the object.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Activity(id=" + this.id + ", name=" + this.name + ", description="
|
||||
+ this.description + ", score=" + this.score + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other instanceof Activity) {
|
||||
Activity that = (Activity)other;
|
||||
if (that.id == this.id && that.name.equals(this.name)
|
||||
&& that.description.equals(this.description) && that.score == this.score) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name, description, score);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,13 @@
|
||||
package greenify.server.data.model;
|
||||
|
||||
import greenify.server.InputValidator;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.ElementCollection;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
@@ -25,7 +30,11 @@ public class User {
|
||||
@NotNull
|
||||
private String password;
|
||||
|
||||
private int veganMeal;
|
||||
@NotNull
|
||||
private Float footPrint = 0.0f;
|
||||
|
||||
@ElementCollection
|
||||
private Map<String,String> footPrintInputs = new HashMap<>();
|
||||
|
||||
public User() {}
|
||||
|
||||
@@ -34,13 +43,12 @@ public class User {
|
||||
* @param id the id of the user.
|
||||
* @param name the supplied username
|
||||
* @param password the supplied password
|
||||
* @param veganMeal the supplied number of vegan meal
|
||||
*/
|
||||
public User(Long id, String name, String password, int veganMeal) {
|
||||
public User(Long id, String name, String password) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.password = password;
|
||||
this.veganMeal = veganMeal;
|
||||
this.setFootPrintInputs(InputValidator.getDefaultValues());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,15 +88,23 @@ public class User {
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the number of vegan meal.
|
||||
* @return the veganMeal
|
||||
* gets the footPrint of user.
|
||||
* @return the footPrint
|
||||
*/
|
||||
public int getVeganMeal() {
|
||||
return veganMeal;
|
||||
public Float getFootPrint() {
|
||||
return footPrint;
|
||||
}
|
||||
|
||||
public void setVeganMeal(int veganMeal) {
|
||||
this.veganMeal = veganMeal;
|
||||
public Map<String, String> getFootPrintInputs() {
|
||||
return footPrintInputs;
|
||||
}
|
||||
|
||||
public void setFootPrintInputs(Map<String, String> footPrintInputs) {
|
||||
this.footPrintInputs = footPrintInputs;
|
||||
}
|
||||
|
||||
public void setFootPrint(Float footPrint) {
|
||||
this.footPrint = footPrint;
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +115,7 @@ public class User {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User(id=" + this.id + ", name=" + this.name + ", password="
|
||||
+ this.password + ", veganMeal=" + this.veganMeal + ")";
|
||||
+ this.password + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,7 +123,7 @@ public class User {
|
||||
if (other instanceof User) {
|
||||
User that = (User)other;
|
||||
if (that.id == this.id && that.name.equals(this.name)
|
||||
&& that.password.equals(this.password) && that.veganMeal == this.veganMeal) {
|
||||
&& that.password.equals(this.password)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -116,6 +132,6 @@ public class User {
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name, password, veganMeal);
|
||||
return Objects.hash(id, name, password);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +1,33 @@
|
||||
package greenify.server.rest;
|
||||
|
||||
import greenify.common.UserDto;
|
||||
import greenify.server.data.model.User;
|
||||
import greenify.server.data.repository.UserRepository;
|
||||
import greenify.server.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
//class that controls the user with regards to the server and sending data between them
|
||||
//this class kind of 'redirects' the requests from the client to the server
|
||||
@RestController
|
||||
public class UserController {
|
||||
@Autowired
|
||||
UserService userService;
|
||||
|
||||
//registers a user in the userService
|
||||
@RequestMapping("/registerUser")
|
||||
//requestMapping is for the communication (GET, POST, PUT requests)
|
||||
//as with Web and Database Technology
|
||||
public UserDto registerUser(@RequestParam(value = "name") String name,
|
||||
@RequestParam(value = "password") String password) {
|
||||
//the requestParams are the parameters that are sent with the request
|
||||
//so in this case that it wants to register with the name and password
|
||||
return userService.registerUser(name, password);
|
||||
}
|
||||
|
||||
//logs a user in in the userService
|
||||
@RequestMapping("/loginUser")
|
||||
public UserDto loginUser(@RequestParam(value = "name") String name,
|
||||
@RequestParam(value = "password") String password) {
|
||||
return userService.loginUser(name, password);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* adds a vegetarian meal to the user.
|
||||
* @param id the id of the user
|
||||
* @param name thr username of the user
|
||||
*/
|
||||
@RequestMapping("/addVeganMeal")
|
||||
public void addVeganMeal(@RequestParam(value = "id") Long id,
|
||||
@RequestParam(value = "name") String name) {
|
||||
//here the requestParams are the id and name, because that is needed for the
|
||||
//addVeganMeal method of the userService
|
||||
userService.addVeganMeal(id, name);
|
||||
@RequestMapping("/setInput")
|
||||
public void setInput(@RequestParam(value = "name") String name,
|
||||
@RequestParam(value = "inputName") String inputName,
|
||||
@RequestParam(value = "value") String value) {
|
||||
userService.setInput(name, inputName, value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package greenify.server.service;
|
||||
|
||||
import greenify.server.data.model.User;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class CalculatorService {
|
||||
Logger logger = LoggerFactory.getLogger(UserService.class);
|
||||
|
||||
@Autowired
|
||||
RestTemplate restTemplate;
|
||||
|
||||
@Bean
|
||||
RestTemplate restTemplate(RestTemplateBuilder builder) {
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
protected Float invokeExternalService(Map<String, String> map) {
|
||||
/**
|
||||
* curl -X GET "https://apis.berkeley.edu/coolclimate/footprint-sandbox?input_location_mode=1
|
||||
* &input_location=48001&input_income=1&input_size=0&input_footprint_transportation_miles1=3
|
||||
* &input_footprint_transportation_mpg1=5&input_footprint_transportation_fuel1=0"
|
||||
* -H "accept: application/json" -H "app_id: a98272e3"
|
||||
* -H "app_key: b9167c4918cb2b3143614b595065d83b"
|
||||
*/
|
||||
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-sandbox");
|
||||
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);
|
||||
logger.info(response.getStatusCode().toString());
|
||||
logger.info(response.getBody());
|
||||
String result = response.getBody().substring(response.getBody()
|
||||
.indexOf("<result_grand_total>")
|
||||
+ 20, response.getBody().indexOf("</result_grand_total>"));
|
||||
// to do: in not HTTP 200 or exception case throws exception
|
||||
System.out.println(Float.parseFloat(result));
|
||||
return Float.parseFloat(result);
|
||||
}
|
||||
|
||||
public Float calculateFootprint(User user) {
|
||||
return invokeExternalService(user.getFootPrintInputs());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package greenify.server.service;
|
||||
|
||||
import greenify.common.ApplicationException;
|
||||
import greenify.common.UserDto;
|
||||
import greenify.server.InputValidator;
|
||||
import greenify.server.data.model.User;
|
||||
import greenify.server.data.repository.UserRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -11,14 +12,15 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
//userService class that gets used by the server to handle requests for users
|
||||
@Service
|
||||
public class UserService {
|
||||
Logger logger = LoggerFactory.getLogger(UserService.class);
|
||||
|
||||
@Autowired
|
||||
UserRepository userRepository;
|
||||
//userRepository to talk with the database
|
||||
|
||||
@Autowired
|
||||
CalculatorService calculatorService;
|
||||
|
||||
/**
|
||||
* registers the user.
|
||||
@@ -28,17 +30,15 @@ public class UserService {
|
||||
*/
|
||||
public UserDto registerUser(String name, String password) {
|
||||
User user = userRepository.findByName(name);
|
||||
//find the name of the user in the database
|
||||
if (user == null) {
|
||||
user = new User(null, name, password, 0);
|
||||
//if the user isn't already in the database, save it in there
|
||||
user = new User(null, name, password);
|
||||
user.setFootPrintInputs(InputValidator.getDefaultValues());
|
||||
userRepository.save(user);
|
||||
} else {
|
||||
throw new ApplicationException("User already exists");
|
||||
}
|
||||
logger.info("Created user id=" + user.getId() + ", name=" + user.getName());
|
||||
//return a transferable user object that has been saved
|
||||
return new UserDto(user.getId(), user.getName(), user.getVeganMeal());
|
||||
return new UserDto(user.getId(), user.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -49,34 +49,56 @@ public class UserService {
|
||||
*/
|
||||
public UserDto loginUser(String name, String password) {
|
||||
User user = userRepository.findByName(name);
|
||||
//again find the name
|
||||
if (user == null) {
|
||||
throw new ApplicationException("User does not exist");
|
||||
//if it doesn't exist or the password is wrong, throw an exception
|
||||
} else {
|
||||
if (!user.getPassword().equals(password)) {
|
||||
throw new ApplicationException("Wrong password");
|
||||
}
|
||||
}
|
||||
//return a transferable user object that has been logged in
|
||||
return new UserDto(user.getId(), user.getName(), user.getVeganMeal());
|
||||
return new UserDto(user.getId(), user.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* add vegan meal to the user.
|
||||
* @param id the id of the user
|
||||
* @param name the name of the user
|
||||
* The method sets input value.
|
||||
* @param name of the user
|
||||
* @param inputName is the name of the setting input
|
||||
* @param value of the input
|
||||
*/
|
||||
public void addVeganMeal(Long id, String name) {
|
||||
public void setInput(String name, String inputName, String value) {
|
||||
User user = userRepository.findByName(name);
|
||||
int count = user.getVeganMeal();
|
||||
//find the user and update their vegetarian meal count
|
||||
count++;
|
||||
user.setVeganMeal(count);
|
||||
//save it to the database
|
||||
userRepository.save(user);
|
||||
logger.info("Added vegan meal to user(id=" + user.getId()
|
||||
+ ", name=" + user.getName() + ")");
|
||||
if (user == null) {
|
||||
throw new ApplicationException("User does not exist");
|
||||
} else {
|
||||
if (InputValidator.isValidItem(inputName)
|
||||
&& InputValidator.isValidItemValue(inputName, value)) {
|
||||
user.getFootPrintInputs().put(inputName, value);
|
||||
user.setFootPrint(calculatorService.calculateFootprint(user));
|
||||
} else {
|
||||
throw new ApplicationException("Invalid input");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the input value of an input.
|
||||
* @param name of the user
|
||||
* @param inputName name of the input
|
||||
* @return input value
|
||||
*/
|
||||
public String getInput(String name, String inputName) {
|
||||
User user = userRepository.findByName(name);
|
||||
if (InputValidator.isValidItem(inputName)) {
|
||||
String item = user.getFootPrintInputs().get(inputName);
|
||||
return item;
|
||||
} else {
|
||||
throw new ApplicationException("Invalid input");
|
||||
}
|
||||
}
|
||||
|
||||
public Float getFootprint(String name) {
|
||||
User user = userRepository.findByName(name);
|
||||
return calculatorService.calculateFootprint(user);
|
||||
}
|
||||
|
||||
@GetMapping(path = "/all")
|
||||
|
||||
59
src/Server/src/test/java/InputValidatorTest.java
Normal file
59
src/Server/src/test/java/InputValidatorTest.java
Normal file
@@ -0,0 +1,59 @@
|
||||
import greenify.server.InputValidator;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class InputValidatorTest {
|
||||
|
||||
@Test
|
||||
public void validItemIdTest() {
|
||||
InputValidator inputValidator = new InputValidator();
|
||||
Assert.assertEquals(inputValidator.isValidItem("transportation_num_vehicles"), true);
|
||||
Assert.assertEquals(inputValidator.isValidItem("test"), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validItemValueTest() {
|
||||
Assert.assertEquals(true, InputValidator
|
||||
.isValidItemValue("transportation_num_vehicles", "4"));
|
||||
Assert.assertEquals(false, InputValidator
|
||||
.isValidItemValue("transportation_num_vehicles", "3.5"));
|
||||
Assert.assertEquals(false, InputValidator.isValidItemValue( "food_grains", "hello"));
|
||||
Assert.assertEquals(true, InputValidator.isValidItemValue("food_grains", "5"));
|
||||
Assert.assertEquals(true, InputValidator.isValidItemValue("food_grains", "3.5"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDefaultValuesTest() {
|
||||
Map<String, String> map = new HashMap<String, String>() {{
|
||||
put("input_size", "1");
|
||||
put("input_income", "40000");
|
||||
put("transportation_num_vehicles", "1");
|
||||
put("transportation_miles1", "16100");
|
||||
put("transportation_fuels1", "2");
|
||||
put("transportation_mpg1", null);
|
||||
put("transportation_miles2", "13200");
|
||||
put("transportation_fuels2", "0");
|
||||
put("transportation_mpg2", "22");
|
||||
put("transportation_publicTrans", "436");
|
||||
put("transportation_air", "3900");
|
||||
put("housing_electricity_kwh_year", "12632");
|
||||
put("housing_cleanPercent", "0");
|
||||
put("housing_naturalGas_therms_year", "472");
|
||||
put("housing_heatingOil_gallons_year", "73");
|
||||
put("housing_square_feet", "1850");
|
||||
put("housing_water_sewage", "100");
|
||||
put("food_meat_fish_eggs", "2.4");
|
||||
put("food_grains", "4.1");
|
||||
put("food_dairy", "2.2");
|
||||
put("food_fruit_vegetables", "3.5");
|
||||
put("food_snacks_drinks", "3.4");
|
||||
put("shopping_goods", "1310");
|
||||
put("shopping_services", "2413");
|
||||
}
|
||||
};
|
||||
Assert.assertEquals(InputValidator.getDefaultValues(), map);
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
package greenify.server.data.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class ActivityTest {
|
||||
@Test
|
||||
public void setAndGetTest() {
|
||||
Activity testActivity = new Activity(0, null, null, 0);
|
||||
testActivity.setId(1L);
|
||||
testActivity.setName("Vegetarian");
|
||||
testActivity.setDescription("Eating");
|
||||
testActivity.setScore(100);
|
||||
Activity activity = new Activity(1L, "Vegetarian", "Eating", 100);
|
||||
assertTrue(activity.getId().equals(1L));
|
||||
assertEquals(activity.getName(), "Vegetarian");
|
||||
assertEquals(activity.getDescription(), "Eating");
|
||||
assertEquals(activity.getScore(), 100);
|
||||
assertEquals(activity, testActivity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
Activity activity = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
assertEquals("Activity(id=1, name=Solar panels, "
|
||||
+ "description=Installed, score=10000)", activity.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsTest() {
|
||||
Activity first = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
Activity second = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
assertEquals(first.getId(), second.getId());
|
||||
assertEquals(first.getName(), second.getName());
|
||||
assertEquals(first.getDescription(), second.getDescription());
|
||||
assertEquals(first.getScore(), second.getScore());
|
||||
assertTrue(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notEqualsTest() {
|
||||
Activity first = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
Activity second = new Activity(2, "Solar panels", "Installed", 10000);
|
||||
assertFalse(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hashCodeTest() {
|
||||
Activity first = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
Activity second = new Activity(1, "Solar panels", "Installed", 10000);
|
||||
assertEquals(first, second);
|
||||
assertEquals(first.hashCode(), second.hashCode());
|
||||
}
|
||||
}
|
||||
@@ -13,36 +13,54 @@ public class UserTest {
|
||||
testUser.setId(1L);
|
||||
testUser.setName("greenify");
|
||||
testUser.setPassword("password");
|
||||
testUser.setVeganMeal(3);
|
||||
User user = new User(1L, "greenify", "password", 3);
|
||||
User user = new User(1L, "greenify", "password");
|
||||
assertTrue(user.getId().equals(1L));
|
||||
assertEquals(user.getName(), "greenify");
|
||||
assertEquals(user.getPassword(), "password");
|
||||
assertEquals(user.getVeganMeal(), 3);
|
||||
assertEquals(user, testUser);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
User user = new User(1L, "greenify", "password", 3);
|
||||
assertEquals("User(id=1, name=greenify, password=password, veganMeal=3)", user.toString());
|
||||
User user = new User(1L, "greenify", "password");
|
||||
assertEquals("User(id=1, name=greenify, password=password)", user.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsTest() {
|
||||
User first = new User(1L, "greenify", "password", 3);
|
||||
User second = new User(1L, "greenify", "password", 3);
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(1L, "greenify", "password");
|
||||
assertEquals(first.getId(), second.getId());
|
||||
assertEquals(first.getName(), second.getName());
|
||||
assertEquals(first.getPassword(), second.getPassword());
|
||||
assertEquals(first.getVeganMeal(), second.getVeganMeal());
|
||||
assertTrue(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsDifferentId() {
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(2L, "greenify", "password");
|
||||
assertFalse(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsDifferentName() {
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(1L, "hello", "password");
|
||||
assertFalse(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equalsDifferentPassword() {
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(1L, "greenify", "hi");
|
||||
assertFalse(first.equals(second));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notEqualsTest() {
|
||||
User first = new User(1L, "greenify", "password", 3);
|
||||
User second = new User(1L, "greenify", "password", 7);
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(2L, "greenify", "password");
|
||||
assertFalse(first.equals(second));
|
||||
}
|
||||
|
||||
@@ -55,8 +73,8 @@ public class UserTest {
|
||||
|
||||
@Test
|
||||
public void hashCodeTest() {
|
||||
User first = new User(1L, "greenify", "password", 3);
|
||||
User second = new User(1L, "greenify", "password", 3);
|
||||
User first = new User(1L, "greenify", "password");
|
||||
User second = new User(1L, "greenify", "password");
|
||||
assertEquals(first, second);
|
||||
assertEquals(first.hashCode(), second.hashCode());
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class UserRepositoryTest {
|
||||
|
||||
@Test
|
||||
public void findByUsernameTest() throws Exception {
|
||||
repository.save(new User(296L, "cugurlu", "password", 6));
|
||||
repository.save(new User(296L, "cugurlu", "password"));
|
||||
User user = this.repository.findByName("cugurlu");
|
||||
assertEquals(user.getName(), "cugurlu");
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class UserControllerTest {
|
||||
@Test
|
||||
public void registerUserTest() throws Exception {
|
||||
given(this.userService.registerUser("name", "password"))
|
||||
.willReturn(new UserDto(1L, "name", 0));
|
||||
.willReturn(new UserDto(1L, "name"));
|
||||
mvc.perform(get("/registerUser")
|
||||
.param("name", "name")
|
||||
.param("password", "password")
|
||||
@@ -46,7 +46,7 @@ public class UserControllerTest {
|
||||
@Test
|
||||
public void loginUserTest() throws Exception {
|
||||
given(this.userService.loginUser("ceren", "password"))
|
||||
.willReturn(new UserDto(1L, "ceren", 0));
|
||||
.willReturn(new UserDto(1L, "ceren"));
|
||||
mvc.perform(get("/loginUser")
|
||||
.param("name", "ceren")
|
||||
.param("password", "password")
|
||||
@@ -54,4 +54,9 @@ public class UserControllerTest {
|
||||
.andDo(print())
|
||||
.andExpect(status().isOk()).andExpect(content().json("{'id':1,'name':'ceren'}"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setInputTest() throws Exception {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
package greenify.server.service;
|
||||
|
||||
import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
|
||||
import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
|
||||
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
|
||||
|
||||
import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
|
||||
|
||||
import greenify.server.data.model.User;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.TestConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.web.client.ExpectedCount;
|
||||
import org.springframework.test.web.client.MockRestServiceServer;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
public class CalculatorServiceTest {
|
||||
|
||||
@TestConfiguration
|
||||
static class CalculatorServiceTestConfiguration {
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
@Bean
|
||||
public CalculatorService calculatorService() {
|
||||
CalculatorService calculatorService = new CalculatorService();
|
||||
return calculatorService;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
return restTemplate;
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private CalculatorService calculatorService;
|
||||
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
private MockRestServiceServer mockServer;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
mockServer = MockRestServiceServer.createServer(restTemplate);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void calculateFootprintTest() throws URISyntaxException {
|
||||
Map<String,String> map = new HashMap<String, String>() {{
|
||||
put("input_location_mode", "1");
|
||||
put("input_location", "48001");
|
||||
put("input_income", "1");
|
||||
}
|
||||
};
|
||||
User user = new User(1L,"greenify", "password");
|
||||
user.setFootPrintInputs(map);
|
||||
mockServer.expect(ExpectedCount.once(),
|
||||
//requestTo(new URI("https://apis.berkeley.edu/coolclimate/footprint-sandbox")))
|
||||
requestTo(new URI("https://apis.berkeley.edu/coolclimate/footprint-sandbox?"
|
||||
+ "input_location=48001&input_location_mode=1&input_income=1")))
|
||||
.andExpect(method(HttpMethod.GET))
|
||||
.andExpect(header("app_id", "a98272e3"))
|
||||
.andExpect(header("app_key", "b9167c4918cb2b3143614b595065d83b"))
|
||||
.andRespond(withStatus(HttpStatus.OK)
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.body("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||
+ "<response>\n"
|
||||
+ " <result_motor_vehicles_direct>5.0765</result_motor_vehicles_direct>\n"
|
||||
+ " <result_motor_vehicles_indirect>1.167595"
|
||||
+ "</result_motor_vehicles_indirect>\n"
|
||||
+ " <result_goods_total>2.481474</result_goods_total>\n"
|
||||
+ " <result_services_total>2.478352</result_services_total>\n"
|
||||
+ " <result_grand_total>19.259982</result_grand_total>\n"
|
||||
+ "</response>")
|
||||
);
|
||||
Float footPrint = calculatorService.calculateFootprint(user);
|
||||
mockServer.verify();
|
||||
Assert.assertEquals(new Float(19.259982), footPrint);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokeExternalServiceTest() {
|
||||
CalculatorService service = new CalculatorService();
|
||||
service.restTemplate = new RestTemplate();
|
||||
Map<String,String> map = new HashMap<String, String>() {{
|
||||
put("input_location_mode", "1");
|
||||
put("input_location", "48001");
|
||||
put("input_income", "1");
|
||||
put("input_size", "0");
|
||||
put("input_footprint_transportation_miles1", "3");
|
||||
put("input_footprint_transportation_mpg1", "5");
|
||||
put("input_footprint_transportation_fuel1", "0");
|
||||
}
|
||||
};
|
||||
Float footPrint = service.invokeExternalService(map);
|
||||
Assert.assertEquals(new Float(12.743548), footPrint);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package greenify.server.service;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -11,7 +12,6 @@ import greenify.server.data.repository.UserRepository;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.TestConfiguration;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
@@ -34,12 +34,15 @@ public class UserServiceTest {
|
||||
@MockBean
|
||||
private UserRepository userRepository;
|
||||
|
||||
@MockBean
|
||||
private CalculatorService calculatorService;
|
||||
|
||||
/**
|
||||
* setUp method for test.
|
||||
*/
|
||||
@Before
|
||||
public void setUp() {
|
||||
User alex = new User(1L, "alex", "password", 0);
|
||||
User alex = new User(1L, "alex", "password");
|
||||
when(userRepository.findByName(alex.getName()))
|
||||
.thenReturn(alex);
|
||||
}
|
||||
@@ -52,13 +55,96 @@ public class UserServiceTest {
|
||||
assertEquals(found.getName(), name);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loginExceptionTest() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.loginUser("alex", "greenify");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void userRegisterTest() {
|
||||
User user = new User(1L, "name", "password", 0);
|
||||
User user = new User(1L, "name", "password");
|
||||
UserDto registered = userService.registerUser(user.getName(), user.getPassword());
|
||||
assertEquals(registered.getName(), "name");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void registerExceptionTest() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.registerUser("alex", "password");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setInputTest() {
|
||||
User alex = new User(1L, "alex", "password");
|
||||
when(userRepository.findByName(alex.getName()))
|
||||
.thenReturn(alex);
|
||||
userService.setInput("alex", "food_grains", "6.5");
|
||||
assertEquals("6.5", alex.getFootPrintInputs().get("food_grains"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setInputNullTest() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.setInput(null, "hello", "5.5");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setInputApplicationTestItem() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.setInput("alex", "hello", "3.5");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setInputApplicationTestValue() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.setInput("alex", "transportation_num_vehicles", "5.5");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void setInputFootprintTest() {
|
||||
User alex = new User(1L, "alex", "password");
|
||||
when(userRepository.findByName(alex.getName()))
|
||||
.thenReturn(alex);
|
||||
when(calculatorService.calculateFootprint(alex))
|
||||
.thenReturn(15f);
|
||||
userService.setInput("alex", "food_grains", "6.5");
|
||||
assertTrue(15f == alex.getFootPrint());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getInputTest() {
|
||||
User alex = new User(1L, "alex", "password");
|
||||
when(userRepository.findByName(alex.getName()))
|
||||
.thenReturn(alex);
|
||||
userService.setInput("alex", "food_grains", "6.5");
|
||||
assertEquals("6.5", userService.getInput("alex", "food_grains"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getInputExceptionTest() {
|
||||
assertThrows(ApplicationException.class, () -> {
|
||||
userService.getInput("alex", "hello");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFootprintTest() {
|
||||
User alex = new User(1L, "alex", "password");
|
||||
when(userRepository.findByName(alex.getName()))
|
||||
.thenReturn(alex);
|
||||
when(calculatorService.calculateFootprint(alex))
|
||||
.thenReturn(15f);
|
||||
userService.setInput("alex", "food_grains", "6.5");
|
||||
assertTrue(15f == userService.getFootprint("alex"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAllUserTest() {
|
||||
assertEquals(userRepository.findAll(), userService.getAllUsers());
|
||||
|
||||
Reference in New Issue
Block a user