Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controller;
- import com.fasterxml.jackson.core.JsonFactory;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.JavaType;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.node.JsonNodeFactory;
- import javafx.beans.value.ChangeListener;
- import javafx.collections.FXCollections;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.*;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.stage.Stage;
- import javafx.util.Pair;
- import model.Config;
- import model.JsonNodeFactorySingleton;
- import model.exceptions.CustomApplicationException;
- import model.exceptions.ParseJsonException;
- import model.factories.HttpRequestFactory;
- import model.helpers.HttpResponseHelper;
- import model.helpers.JsonParseHelper;
- import model.json.Container;
- import model.json.User;
- import model.singletons.AlertHelper;
- import model.singletons.IAlertHelper;
- import org.apache.http.HttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.ResourceBundle;
- public class BenutzerController implements Initializable {
- private IAlertHelper alertHelper = AlertHelper.getInstance();
- @FXML
- private Button btnAddUser;
- @FXML
- private TableView<User> tblUsers = new TableView<>();
- @FXML
- private TableColumn<User, Integer> tblColumnId = new TableColumn<User, Integer>();
- @FXML
- private TableColumn<User, String> tblColumnName = new TableColumn<User, String>();
- @FXML
- private TableColumn<User, String> tblColumnEmail = new TableColumn<User, String>();
- @FXML
- private TableColumn<User, String> tblColumnPassword = new TableColumn<User, String>();
- @FXML
- private TableColumn<User, Integer> tblColumnHighScore = new TableColumn<User, Integer>();
- @FXML
- private Button btnUpdateUser;
- @FXML
- private Button btnDeleteUser;
- @FXML
- private TextField txtUsername;
- @FXML
- private TextField txtEmail;
- @FXML
- private TextField txtPassword;
- @FXML
- private TextField txtProgress;
- @Override
- public void initialize(URL location, ResourceBundle resources) {
- setCellValueFactories();
- setTableSelectionListener(onChangeUpdateTextFields());
- refreshTable();
- }
- private void setCellValueFactories() {
- tblColumnEmail.setCellValueFactory(new PropertyValueFactory<>("email"));
- tblColumnId.setCellValueFactory(new PropertyValueFactory<>("id"));
- tblColumnName.setCellValueFactory(new PropertyValueFactory<>("name"));
- tblColumnHighScore.setCellValueFactory(new PropertyValueFactory<>("highScore"));
- }
- private void setTableSelectionListener(ChangeListener<User> listener) {
- tblUsers.getSelectionModel().selectedItemProperty().addListener(listener);
- }
- private ChangeListener<User> onChangeUpdateTextFields() {
- return ((observable, oldValue, newValue) -> {
- txtUsername.textProperty().setValue(newValue.getName());
- txtEmail.textProperty().setValue(newValue.getEmail());
- txtPassword.textProperty().setValue("");
- });
- }
- private void refreshTable() {
- try {
- HttpGet request = HttpRequestFactory.createGet(Config.GET_USERS);
- HttpResponse response = HttpResponseHelper.executeRequest(request);
- //Container<User[]> result = getHttpResponseAsContainer(response, users);
- String responseBody = HttpResponseHelper.getResponseAsString(response);
- ObjectMapper mapper = new ObjectMapper();
- Container<User[]> result = mapper.readValue(responseBody, new TypeReference<Container<User[]>>() {});
- if(result.getStatus().equals("success")) {
- User[] users = result.getData();
- tblUsers.setItems(FXCollections.observableArrayList(users));
- } else {
- alertHelper.showAlert("An error occured", result.getMessage());
- }
- } catch(Exception e) {
- e.printStackTrace();
- alertHelper.showAlert(e.getClass().toString(), e.getMessage(), Alert.AlertType.ERROR);
- }
- }
- private <TYPE> Container<TYPE> getHttpResponseAsContainer(HttpResponse response, TYPE type) throws CustomApplicationException{
- System.err.println(type.getClass());
- try {
- ObjectMapper mapper = new ObjectMapper();
- String responseBody = HttpResponseHelper.getResponseAsString(response);
- return mapper.readValue(responseBody, new TypeReference<Container<TYPE>>() {});
- } catch(JsonProcessingException e) {
- e.printStackTrace();
- throw new ParseJsonException("Wrong Type supplied!");
- }
- }
- @FXML
- public void createUser() {
- try {
- String username = txtUsername.getText();
- String email = txtEmail.getText();
- String password = txtPassword.getText();
- User testuser = new User();
- testuser.setName(username);
- testuser.setEmail(email);
- testuser.setPassword(password);
- ObjectMapper mapper = new ObjectMapper();
- JsonNode jsonNode = mapper.valueToTree(testuser);
- HttpPost request = HttpRequestFactory.createJsonPost(Config.ADD_USER, jsonNode);
- HttpResponse response = HttpResponseHelper.executeRequest(request);
- String responseBody = HttpResponseHelper.getResponseAsString(response);
- Container<User> user = getHttpResponseAsContainer(response, new User());
- System.out.println("----------------RESPONSE----------------");
- System.out.println(HttpResponseHelper.getResponseAsJson(response).toPrettyString());
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement