Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. package controller;
  2.  
  3. import com.fasterxml.jackson.core.JsonFactory;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.fasterxml.jackson.core.type.TypeReference;
  6. import com.fasterxml.jackson.databind.JavaType;
  7. import com.fasterxml.jackson.databind.JsonNode;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. import com.fasterxml.jackson.databind.node.JsonNodeFactory;
  10. import javafx.beans.value.ChangeListener;
  11. import javafx.collections.FXCollections;
  12. import javafx.fxml.FXML;
  13. import javafx.fxml.Initializable;
  14. import javafx.scene.control.*;
  15. import javafx.scene.control.cell.PropertyValueFactory;
  16. import javafx.stage.Stage;
  17. import javafx.util.Pair;
  18. import model.Config;
  19. import model.JsonNodeFactorySingleton;
  20. import model.exceptions.CustomApplicationException;
  21. import model.exceptions.ParseJsonException;
  22. import model.factories.HttpRequestFactory;
  23. import model.helpers.HttpResponseHelper;
  24. import model.helpers.JsonParseHelper;
  25. import model.json.Container;
  26. import model.json.User;
  27. import model.singletons.AlertHelper;
  28. import model.singletons.IAlertHelper;
  29. import org.apache.http.HttpResponse;
  30. import org.apache.http.client.methods.HttpGet;
  31. import org.apache.http.client.methods.HttpPost;
  32.  
  33. import java.net.URL;
  34. import java.util.ArrayList;
  35. import java.util.List;
  36. import java.util.ResourceBundle;
  37.  
  38. public class BenutzerController implements Initializable {
  39.  
  40. private IAlertHelper alertHelper = AlertHelper.getInstance();
  41.  
  42. @FXML
  43. private Button btnAddUser;
  44.  
  45. @FXML
  46. private TableView<User> tblUsers = new TableView<>();
  47.  
  48. @FXML
  49. private TableColumn<User, Integer> tblColumnId = new TableColumn<User, Integer>();
  50.  
  51. @FXML
  52. private TableColumn<User, String> tblColumnName = new TableColumn<User, String>();
  53.  
  54. @FXML
  55. private TableColumn<User, String> tblColumnEmail = new TableColumn<User, String>();
  56.  
  57. @FXML
  58. private TableColumn<User, String> tblColumnPassword = new TableColumn<User, String>();
  59.  
  60. @FXML
  61. private TableColumn<User, Integer> tblColumnHighScore = new TableColumn<User, Integer>();
  62.  
  63. @FXML
  64. private Button btnUpdateUser;
  65.  
  66. @FXML
  67. private Button btnDeleteUser;
  68.  
  69. @FXML
  70. private TextField txtUsername;
  71.  
  72. @FXML
  73. private TextField txtEmail;
  74.  
  75. @FXML
  76. private TextField txtPassword;
  77.  
  78. @FXML
  79. private TextField txtProgress;
  80.  
  81. @Override
  82. public void initialize(URL location, ResourceBundle resources) {
  83. setCellValueFactories();
  84. setTableSelectionListener(onChangeUpdateTextFields());
  85. refreshTable();
  86. }
  87. private void setCellValueFactories() {
  88. tblColumnEmail.setCellValueFactory(new PropertyValueFactory<>("email"));
  89. tblColumnId.setCellValueFactory(new PropertyValueFactory<>("id"));
  90. tblColumnName.setCellValueFactory(new PropertyValueFactory<>("name"));
  91. tblColumnHighScore.setCellValueFactory(new PropertyValueFactory<>("highScore"));
  92. }
  93.  
  94. private void setTableSelectionListener(ChangeListener<User> listener) {
  95. tblUsers.getSelectionModel().selectedItemProperty().addListener(listener);
  96. }
  97.  
  98. private ChangeListener<User> onChangeUpdateTextFields() {
  99. return ((observable, oldValue, newValue) -> {
  100. txtUsername.textProperty().setValue(newValue.getName());
  101. txtEmail.textProperty().setValue(newValue.getEmail());
  102. txtPassword.textProperty().setValue("");
  103. });
  104. }
  105.  
  106.  
  107. private void refreshTable() {
  108. try {
  109. HttpGet request = HttpRequestFactory.createGet(Config.GET_USERS);
  110. HttpResponse response = HttpResponseHelper.executeRequest(request);
  111. //Container<User[]> result = getHttpResponseAsContainer(response, users);
  112. String responseBody = HttpResponseHelper.getResponseAsString(response);
  113. ObjectMapper mapper = new ObjectMapper();
  114. Container<User[]> result = mapper.readValue(responseBody, new TypeReference<Container<User[]>>() {});
  115. if(result.getStatus().equals("success")) {
  116. User[] users = result.getData();
  117. tblUsers.setItems(FXCollections.observableArrayList(users));
  118. } else {
  119.  
  120. alertHelper.showAlert("An error occured", result.getMessage());
  121. }
  122. } catch(Exception e) {
  123. e.printStackTrace();
  124. alertHelper.showAlert(e.getClass().toString(), e.getMessage(), Alert.AlertType.ERROR);
  125. }
  126. }
  127.  
  128. private <TYPE> Container<TYPE> getHttpResponseAsContainer(HttpResponse response, TYPE type) throws CustomApplicationException{
  129. System.err.println(type.getClass());
  130. try {
  131. ObjectMapper mapper = new ObjectMapper();
  132. String responseBody = HttpResponseHelper.getResponseAsString(response);
  133. return mapper.readValue(responseBody, new TypeReference<Container<TYPE>>() {});
  134. } catch(JsonProcessingException e) {
  135. e.printStackTrace();
  136. throw new ParseJsonException("Wrong Type supplied!");
  137. }
  138. }
  139.  
  140. @FXML
  141. public void createUser() {
  142. try {
  143. String username = txtUsername.getText();
  144. String email = txtEmail.getText();
  145. String password = txtPassword.getText();
  146.  
  147. User testuser = new User();
  148. testuser.setName(username);
  149. testuser.setEmail(email);
  150. testuser.setPassword(password);
  151.  
  152. ObjectMapper mapper = new ObjectMapper();
  153. JsonNode jsonNode = mapper.valueToTree(testuser);
  154. HttpPost request = HttpRequestFactory.createJsonPost(Config.ADD_USER, jsonNode);
  155. HttpResponse response = HttpResponseHelper.executeRequest(request);
  156. String responseBody = HttpResponseHelper.getResponseAsString(response);
  157. Container<User> user = getHttpResponseAsContainer(response, new User());
  158. System.out.println("----------------RESPONSE----------------");
  159. System.out.println(HttpResponseHelper.getResponseAsJson(response).toPrettyString());
  160. } catch(Exception e) {
  161. e.printStackTrace();
  162. }
  163. }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement