Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package portalen.client.logik;
- import java.util.ArrayList;
- import com.google.gwt.cell.client.ActionCell;
- import com.google.gwt.event.dom.client.ClickEvent;
- import com.google.gwt.event.dom.client.ClickHandler;
- import com.google.gwt.user.client.Window;
- import com.google.gwt.user.client.rpc.AsyncCallback;
- import com.google.gwt.view.client.ListDataProvider;
- import portalen.client.rpc.RpcServiceAsync;
- import portalen.client.ui.ContentPanel;
- import portalen.client.ui.admin.adminMainView.AdminMainView;
- import portalen.shared.Food;
- import portalen.shared.User;
- //Admin controller til at håndtere alle funktioner for admin
- public class AdminController {
- private ContentPanel content;
- private AdminMainView adminMainView;
- private RpcServiceAsync rpcService;
- private User currentUser;
- //En liste af Data Provider som indenholder en arraylist med mad og bruger for datagrid
- private ListDataProvider<User> listProviderUsers;
- private ListDataProvider<Food> listProviderFood;
- //Constructor til AdminController
- public AdminController(ContentPanel content, RpcServiceAsync rpcService) {
- this.content = content;
- this.adminMainView = content.getAdminMainView();
- this.rpcService = rpcService;
- bindHandlers();
- listProviderUsers = new ListDataProvider<>();
- listProviderFood = new ListDataProvider<>();
- adminMainView.getAdminUsersView().getUsersTable().initUsersTable(listProviderUsers);
- adminMainView.getAdminUsersView().getFoodTable().initUsersTable(listProviderFood);
- }
- //Medtoder som kører når admin logger ind. Sætter brugeren som currentUser og kører loadTables();
- public void loadUser(User currentUser) {
- this.currentUser = currentUser;
- loadTables();
- }
- //binder aller handlers til knapperne
- private void bindHandlers() {
- adminMainView.addClickHandlers(new MenuClickHandler());
- adminMainView.getAdminUsersView().addClickHandler(new CreateUserClickHandler());
- adminMainView.getAdminUsersView().addClickHandler1(new CreateFoodClickHandler());
- adminMainView.getAdminUsersView().addClickHandler2(new EditUserClickHandler());
- adminMainView.getAdminUsersView().addClickHandler3(new EditFoodClickHandler());
- adminMainView.getAdminUsersView().getUsersTable().addClickHandler(new DeleteUserHandler());
- adminMainView.getAdminUsersView().getFoodTable().addClickHandler(new DeleteFoodHandler());
- }
- //Styrer log ud klik
- class MenuClickHandler implements ClickHandler {
- @Override
- public void onClick(ClickEvent event) {
- //Når en bruger logger ud, bliver der ændret view til LoginView, resetter Lists og sætter currentUser til null
- if (event.getSource() == adminMainView.getLogoutBtn()) {
- content.changeView(content.getLoginView());
- listProviderUsers.getList().clear();
- listProviderFood.getList().clear();
- currentUser = null;
- }
- }
- }
- //HÃ¥ndterer klik for at slette brugere
- class DeleteUserHandler implements ActionCell.Delegate<User> {
- @Override
- public void execute(final User user) {
- //Sikker på du vil slette?
- boolean deleteUserConfirmed = Window.confirm("Er du sikker på du vil slette:\n" + user.getUsername());
- //Hvis det er bekræftet vil et RPC kald blive lavet, så brugeren bliver slette i databasen
- if (deleteUserConfirmed) {
- rpcService.deleteUser(user.getId(), new AsyncCallback<Boolean>() {
- //HÃ¥ndterer fejl fra callbak
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget gik galt");
- }
- //HÃ¥ndterer success svar fra kald. True eller false alt efter om det lykkedes.
- @Override
- public void onSuccess(Boolean isDeleted) {
- if (!isDeleted) {
- Window.alert("Kunne ikke slette bruger");
- } else {
- // Hvis bruger bliver slette fra database, bliver den også slettet i vores liste.
- listProviderUsers.getList().remove(user);
- }
- }
- });
- }
- }
- }
- class DeleteFoodHandler implements ActionCell.Delegate<Food> {
- @Override
- public void execute(final Food food) {
- //Hvis det er bekræftet vil et RPC kald blive lavet, så brugeren bliver slette i databasen
- boolean deleteFoodConfirmed = Window.confirm("Er du sikker på du vil slette:\n" + food.getFoodname());
- //Hvis det er bekræftet, så vil et RCP kald blive foretaget.
- if (deleteFoodConfirmed) {
- rpcService.deleteFood(food.getId(), new AsyncCallback<Boolean>() {
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget gik galt");
- }
- @Override
- public void onSuccess(Boolean isDeleted) {
- if (!isDeleted) {
- Window.alert("Kunne ikke slette madvaren");
- } else {
- listProviderFood.getList().remove(food);
- }
- }
- });
- }
- }
- }
- //Håndterer klik på CreateUser kanppen
- class CreateUserClickHandler implements ClickHandler {
- @Override
- public void onClick(ClickEvent event) {
- // Brugernavn og password på den bruger man gerne vil oprette.
- String username = adminMainView.getAdminUsersView().getNewUserUsernameTxtBox().getText();
- String password = adminMainView.getAdminUsersView().getNewUserPasswordTxtBox().getText();
- //Sørger for at password og brugernavn er langt nok
- if (username.length() > 3 && password.length() > 3) {
- //Opretter et user obejkt fra det indtastede brugernavn og password
- //Skal være final, fordi objektet er tilføjet til listen af bruger inde i RCP kaldet
- final User user = new User();
- user.setUsername(username);
- user.setPassword(password);
- rpcService.createUser(user, new AsyncCallback<Boolean>() {
- //HÃ¥ndterer fejl fra kaldet
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget gik galt");
- }
- //HÃ¥ndterer et successfuldt kald.
- @Override
- public void onSuccess(Boolean isCreated) {
- if (!isCreated) {
- Window.alert("Kunne ikke oprette brugeren");
- } else {
- //Hvis brugeren er oprettet bliver brugeren tilføjet til listen
- adminMainView.getAdminUsersView().clearTextBoxFields();
- listProviderUsers.getList().add(user);
- }
- }
- });
- } else {
- Window.alert("Username & password must be at least 4 characters");
- }
- }
- }
- class CreateFoodClickHandler implements ClickHandler {
- @Override
- public void onClick(ClickEvent event) {
- //madnavn og pris bliver hentet fra boksene.
- String foodName = adminMainView.getAdminUsersView().getNewFoodTxtBox().getText();
- String foodPrice = adminMainView.getAdminUsersView().getNewFoodpriceTxtBox().getText();
- //Sørger for de er mindst to tegn lange
- if (foodName.length() > 1 && foodPrice.length() > 1) {
- final Food food = new Food();
- food.setFoodname(foodName);
- food.setFoodprice(Integer.parseInt(foodPrice));
- rpcService.createFood(food, new AsyncCallback<Boolean>() {
- //håndterer succesfuldt kald fra rpc.
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget gik galt");
- }
- /**
- * Handles success response from callback
- * The callback returns either true or false depending if the user
- * were created or not
- */
- @Override
- public void onSuccess(Boolean isCreated) {
- if (!isCreated) {
- Window.alert("Kunne ikke oprette madvare");
- } else {
- //Popup med madnavn og pris. Tilføjer madvaren til listen og clearer textbox fields.
- Window.alert(adminMainView.getAdminUsersView().getNewFoodTxtBox().getText() + " blev oprettet med en pris på: " + adminMainView.getAdminUsersView().getNewFoodpriceTxtBox().getText() + " kr.");
- listProviderFood.getList().add(food);
- adminMainView.getAdminUsersView().clearTextBoxFields();
- }
- }
- });
- } else {
- Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
- }
- }
- }
- //Til at ændre prisen på madvarer
- class EditFoodClickHandler implements ClickHandler {
- @Override
- public void onClick(ClickEvent event) {
- String foodName = adminMainView.getAdminUsersView().getEditFoodTxtBox().getText();
- String foodPrice = adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText();
- //Sørger for at længden på madvaren og prisen er lang nok.
- if (foodName.length() > 1 && foodPrice.length() > 1) {
- final Food food = new Food();
- food.setFoodname(adminMainView.getAdminUsersView().getEditFoodTxtBox().getText());
- food.setFoodprice(Integer.parseInt(adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText()));
- //Laver et rcp kald til at ændre prisen på madvaren
- rpcService.changeFoodPrice(food, new AsyncCallback<Boolean>() {
- //HÃ¥ndterer fejl fra call back
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget fik galt");
- }
- //HÃ¥ndterer et successfuldt kald
- @Override
- public void onSuccess(Boolean isCreated) {
- if (!isCreated) {
- Window.alert("Kunne ikke rette prisen");
- } else {
- //Popop vindue med info. Retter prisen i listen. Clearer textbox fields.
- Window.alert(adminMainView.getAdminUsersView().getEditFoodTxtBox().getText() + " blev ændret til: " + adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText() + " kr.");
- listProviderFood.refresh();
- adminMainView.getAdminUsersView().clearTextBoxFields();
- }
- }
- });
- } else {
- Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
- }
- }
- }
- //Til at rette brugerens password
- class EditUserClickHandler implements ClickHandler {
- @Override
- public void onClick(ClickEvent event) {
- //Henter de indtastede værdier
- String username = adminMainView.getAdminUsersView().getEditUserUsernameTxtBox().getText();
- String password = adminMainView.getAdminUsersView().getEditUserPasswordTxtBox().getText();
- if (username.length() > 1 && password.length() > 1) {
- final User user = new User();
- user.setUsername(username);
- user.setPassword(password);
- //Kald til rcp med det nye password og gamle username
- rpcService.changeUserPassword(user, new AsyncCallback<Boolean>() {
- //HÃ¥ndterer fejl fra callback
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Noget gik galt");
- }
- //HÃ¥nderer successfuldt kald
- @Override
- public void onSuccess(Boolean isCreated) {
- if (!isCreated) {
- Window.alert("Kunne ikke ændre passwordet");
- } else {
- /* If the user is created the text fields are cleared
- * and the user is added to the list of users
- */
- Window.alert("Passwordet blev ændret til: " + adminMainView.getAdminUsersView().getEditUserPasswordTxtBox().getText());
- adminMainView.getAdminUsersView().clearTextBoxFields();
- }
- }
- });
- } else {
- Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
- }
- }
- }
- //Metode som loader tabellen af brugere og mad til DataProvider, som indenholder en arraylist
- //Dette sker ved at lave et rpc kald til serveren, som henter brugerne fra databasen
- private void loadTables() {
- rpcService.getUsers(currentUser.getId(), new AsyncCallback<ArrayList<User>>() {
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Kan ikke hente brugere");
- }
- @Override
- public void onSuccess(ArrayList<User> users) {
- //Tilføjer alle brugerne til Arraylisten
- listProviderUsers.getList().addAll(users);
- }
- });
- rpcService.getFood(currentUser.getId(), new AsyncCallback<ArrayList<Food>>() {
- @Override
- public void onFailure(Throwable caught) {
- Window.alert("Kan ikke hente mad");
- }
- @Override
- public void onSuccess(ArrayList<Food> food) {
- //Tilføjer alle madvarene til arraylisten
- listProviderFood.getList().addAll(food);
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement