Advertisement
Guest User

Untitled

a guest
May 2nd, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.08 KB | None | 0 0
  1. package portalen.client.logik;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import com.google.gwt.cell.client.ActionCell;
  6. import com.google.gwt.event.dom.client.ClickEvent;
  7. import com.google.gwt.event.dom.client.ClickHandler;
  8. import com.google.gwt.user.client.Window;
  9. import com.google.gwt.user.client.rpc.AsyncCallback;
  10. import com.google.gwt.view.client.ListDataProvider;
  11.  
  12. import portalen.client.rpc.RpcServiceAsync;
  13. import portalen.client.ui.ContentPanel;
  14. import portalen.client.ui.admin.adminMainView.AdminMainView;
  15. import portalen.shared.Food;
  16. import portalen.shared.User;
  17.  
  18. //Admin controller til at håndtere alle funktioner for admin
  19. public class AdminController {
  20.  
  21. private ContentPanel content;
  22. private AdminMainView adminMainView;
  23. private RpcServiceAsync rpcService;
  24. private User currentUser;
  25.  
  26.  
  27. //En liste af Data Provider som indenholder en arraylist med mad og bruger for datagrid
  28. private ListDataProvider<User> listProviderUsers;
  29. private ListDataProvider<Food> listProviderFood;
  30.  
  31. //Constructor til AdminController
  32. public AdminController(ContentPanel content, RpcServiceAsync rpcService) {
  33. this.content = content;
  34. this.adminMainView = content.getAdminMainView();
  35. this.rpcService = rpcService;
  36.  
  37. bindHandlers();
  38.  
  39. listProviderUsers = new ListDataProvider<>();
  40. listProviderFood = new ListDataProvider<>();
  41.  
  42. adminMainView.getAdminUsersView().getUsersTable().initUsersTable(listProviderUsers);
  43. adminMainView.getAdminUsersView().getFoodTable().initUsersTable(listProviderFood);
  44. }
  45.  
  46. //Medtoder som kører når admin logger ind. Sætter brugeren som currentUser og kører loadTables();
  47. public void loadUser(User currentUser) {
  48. this.currentUser = currentUser;
  49. loadTables();
  50. }
  51.  
  52. //binder aller handlers til knapperne
  53. private void bindHandlers() {
  54. adminMainView.addClickHandlers(new MenuClickHandler());
  55. adminMainView.getAdminUsersView().addClickHandler(new CreateUserClickHandler());
  56. adminMainView.getAdminUsersView().addClickHandler1(new CreateFoodClickHandler());
  57. adminMainView.getAdminUsersView().addClickHandler2(new EditUserClickHandler());
  58. adminMainView.getAdminUsersView().addClickHandler3(new EditFoodClickHandler());
  59. adminMainView.getAdminUsersView().getUsersTable().addClickHandler(new DeleteUserHandler());
  60. adminMainView.getAdminUsersView().getFoodTable().addClickHandler(new DeleteFoodHandler());
  61. }
  62.  
  63. //Styrer log ud klik
  64. class MenuClickHandler implements ClickHandler {
  65.  
  66. @Override
  67. public void onClick(ClickEvent event) {
  68. //Når en bruger logger ud, bliver der ændret view til LoginView, resetter Lists og sætter currentUser til null
  69. if (event.getSource() == adminMainView.getLogoutBtn()) {
  70. content.changeView(content.getLoginView());
  71. listProviderUsers.getList().clear();
  72. listProviderFood.getList().clear();
  73. currentUser = null;
  74. }
  75. }
  76. }
  77.  
  78. //HÃ¥ndterer klik for at slette brugere
  79. class DeleteUserHandler implements ActionCell.Delegate<User> {
  80.  
  81. @Override
  82. public void execute(final User user) {
  83.  
  84. //Sikker på du vil slette?
  85. boolean deleteUserConfirmed = Window.confirm("Er du sikker på du vil slette:\n" + user.getUsername());
  86.  
  87. //Hvis det er bekræftet vil et RPC kald blive lavet, så brugeren bliver slette i databasen
  88. if (deleteUserConfirmed) {
  89. rpcService.deleteUser(user.getId(), new AsyncCallback<Boolean>() {
  90.  
  91. //HÃ¥ndterer fejl fra callbak
  92. @Override
  93. public void onFailure(Throwable caught) {
  94. Window.alert("Noget gik galt");
  95. }
  96.  
  97.  
  98. //HÃ¥ndterer success svar fra kald. True eller false alt efter om det lykkedes.
  99. @Override
  100. public void onSuccess(Boolean isDeleted) {
  101. if (!isDeleted) {
  102. Window.alert("Kunne ikke slette bruger");
  103. } else {
  104. // Hvis bruger bliver slette fra database, bliver den også slettet i vores liste.
  105. listProviderUsers.getList().remove(user);
  106. }
  107.  
  108. }
  109. });
  110. }
  111. }
  112. }
  113.  
  114. class DeleteFoodHandler implements ActionCell.Delegate<Food> {
  115.  
  116. @Override
  117. public void execute(final Food food) {
  118. //Hvis det er bekræftet vil et RPC kald blive lavet, så brugeren bliver slette i databasen
  119. boolean deleteFoodConfirmed = Window.confirm("Er du sikker på du vil slette:\n" + food.getFoodname());
  120.  
  121. //Hvis det er bekræftet, så vil et RCP kald blive foretaget.
  122. if (deleteFoodConfirmed) {
  123. rpcService.deleteFood(food.getId(), new AsyncCallback<Boolean>() {
  124.  
  125.  
  126. @Override
  127. public void onFailure(Throwable caught) {
  128. Window.alert("Noget gik galt");
  129. }
  130.  
  131. @Override
  132. public void onSuccess(Boolean isDeleted) {
  133. if (!isDeleted) {
  134. Window.alert("Kunne ikke slette madvaren");
  135. } else {
  136. listProviderFood.getList().remove(food);
  137. }
  138.  
  139. }
  140. });
  141. }
  142. }
  143. }
  144.  
  145. //Håndterer klik på CreateUser kanppen
  146. class CreateUserClickHandler implements ClickHandler {
  147.  
  148. @Override
  149. public void onClick(ClickEvent event) {
  150. // Brugernavn og password på den bruger man gerne vil oprette.
  151. String username = adminMainView.getAdminUsersView().getNewUserUsernameTxtBox().getText();
  152. String password = adminMainView.getAdminUsersView().getNewUserPasswordTxtBox().getText();
  153.  
  154.  
  155. //Sørger for at password og brugernavn er langt nok
  156. if (username.length() > 3 && password.length() > 3) {
  157. //Opretter et user obejkt fra det indtastede brugernavn og password
  158. //Skal være final, fordi objektet er tilføjet til listen af bruger inde i RCP kaldet
  159. final User user = new User();
  160. user.setUsername(username);
  161. user.setPassword(password);
  162.  
  163. rpcService.createUser(user, new AsyncCallback<Boolean>() {
  164.  
  165. //HÃ¥ndterer fejl fra kaldet
  166. @Override
  167. public void onFailure(Throwable caught) {
  168. Window.alert("Noget gik galt");
  169. }
  170.  
  171. //HÃ¥ndterer et successfuldt kald.
  172. @Override
  173. public void onSuccess(Boolean isCreated) {
  174. if (!isCreated) {
  175. Window.alert("Kunne ikke oprette brugeren");
  176. } else {
  177. //Hvis brugeren er oprettet bliver brugeren tilføjet til listen
  178. adminMainView.getAdminUsersView().clearTextBoxFields();
  179. listProviderUsers.getList().add(user);
  180. }
  181.  
  182. }
  183. });
  184. } else {
  185. Window.alert("Username & password must be at least 4 characters");
  186. }
  187. }
  188. }
  189.  
  190. class CreateFoodClickHandler implements ClickHandler {
  191.  
  192. @Override
  193. public void onClick(ClickEvent event) {
  194. //madnavn og pris bliver hentet fra boksene.
  195. String foodName = adminMainView.getAdminUsersView().getNewFoodTxtBox().getText();
  196. String foodPrice = adminMainView.getAdminUsersView().getNewFoodpriceTxtBox().getText();
  197.  
  198.  
  199. //Sørger for de er mindst to tegn lange
  200. if (foodName.length() > 1 && foodPrice.length() > 1) {
  201.  
  202. final Food food = new Food();
  203. food.setFoodname(foodName);
  204. food.setFoodprice(Integer.parseInt(foodPrice));
  205.  
  206. rpcService.createFood(food, new AsyncCallback<Boolean>() {
  207.  
  208. //håndterer succesfuldt kald fra rpc.
  209. @Override
  210. public void onFailure(Throwable caught) {
  211. Window.alert("Noget gik galt");
  212. }
  213.  
  214. /**
  215. * Handles success response from callback
  216. * The callback returns either true or false depending if the user
  217. * were created or not
  218. */
  219. @Override
  220. public void onSuccess(Boolean isCreated) {
  221. if (!isCreated) {
  222. Window.alert("Kunne ikke oprette madvare");
  223. } else {
  224.  
  225. //Popup med madnavn og pris. Tilføjer madvaren til listen og clearer textbox fields.
  226. Window.alert(adminMainView.getAdminUsersView().getNewFoodTxtBox().getText() + " blev oprettet med en pris på: " + adminMainView.getAdminUsersView().getNewFoodpriceTxtBox().getText() + " kr.");
  227. listProviderFood.getList().add(food);
  228. adminMainView.getAdminUsersView().clearTextBoxFields();
  229. }
  230.  
  231. }
  232. });
  233. } else {
  234. Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
  235. }
  236. }
  237. }
  238.  
  239. //Til at ændre prisen på madvarer
  240. class EditFoodClickHandler implements ClickHandler {
  241.  
  242. @Override
  243. public void onClick(ClickEvent event) {
  244.  
  245. String foodName = adminMainView.getAdminUsersView().getEditFoodTxtBox().getText();
  246. String foodPrice = adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText();
  247.  
  248.  
  249. //Sørger for at længden på madvaren og prisen er lang nok.
  250. if (foodName.length() > 1 && foodPrice.length() > 1) {
  251.  
  252.  
  253. final Food food = new Food();
  254. food.setFoodname(adminMainView.getAdminUsersView().getEditFoodTxtBox().getText());
  255. food.setFoodprice(Integer.parseInt(adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText()));
  256.  
  257.  
  258. //Laver et rcp kald til at ændre prisen på madvaren
  259. rpcService.changeFoodPrice(food, new AsyncCallback<Boolean>() {
  260.  
  261. //HÃ¥ndterer fejl fra call back
  262. @Override
  263. public void onFailure(Throwable caught) {
  264. Window.alert("Noget fik galt");
  265. }
  266.  
  267. //HÃ¥ndterer et successfuldt kald
  268. @Override
  269. public void onSuccess(Boolean isCreated) {
  270. if (!isCreated) {
  271. Window.alert("Kunne ikke rette prisen");
  272. } else {
  273.  
  274. //Popop vindue med info. Retter prisen i listen. Clearer textbox fields.
  275. Window.alert(adminMainView.getAdminUsersView().getEditFoodTxtBox().getText() + " blev ændret til: " + adminMainView.getAdminUsersView().getEditFoodpriceTxtBox().getText() + " kr.");
  276.  
  277. listProviderFood.refresh();
  278. adminMainView.getAdminUsersView().clearTextBoxFields();
  279. }
  280.  
  281. }
  282. });
  283. } else {
  284. Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
  285. }
  286. }
  287. }
  288. //Til at rette brugerens password
  289. class EditUserClickHandler implements ClickHandler {
  290.  
  291. @Override
  292. public void onClick(ClickEvent event) {
  293. //Henter de indtastede værdier
  294. String username = adminMainView.getAdminUsersView().getEditUserUsernameTxtBox().getText();
  295. String password = adminMainView.getAdminUsersView().getEditUserPasswordTxtBox().getText();
  296.  
  297.  
  298. if (username.length() > 1 && password.length() > 1) {
  299.  
  300.  
  301. final User user = new User();
  302. user.setUsername(username);
  303. user.setPassword(password);
  304.  
  305. //Kald til rcp med det nye password og gamle username
  306. rpcService.changeUserPassword(user, new AsyncCallback<Boolean>() {
  307.  
  308. //HÃ¥ndterer fejl fra callback
  309. @Override
  310. public void onFailure(Throwable caught) {
  311. Window.alert("Noget gik galt");
  312. }
  313.  
  314. //HÃ¥nderer successfuldt kald
  315. @Override
  316. public void onSuccess(Boolean isCreated) {
  317. if (!isCreated) {
  318. Window.alert("Kunne ikke ændre passwordet");
  319. } else {
  320. /* If the user is created the text fields are cleared
  321. * and the user is added to the list of users
  322. */
  323.  
  324. Window.alert("Passwordet blev ændret til: " + adminMainView.getAdminUsersView().getEditUserPasswordTxtBox().getText());
  325. adminMainView.getAdminUsersView().clearTextBoxFields();
  326.  
  327. }
  328.  
  329. }
  330. });
  331. } else {
  332. Window.alert("Pris og navn skal være mindst 1 tal/bogstav");
  333. }
  334. }
  335. }
  336.  
  337. //Metode som loader tabellen af brugere og mad til DataProvider, som indenholder en arraylist
  338. //Dette sker ved at lave et rpc kald til serveren, som henter brugerne fra databasen
  339. private void loadTables() {
  340. rpcService.getUsers(currentUser.getId(), new AsyncCallback<ArrayList<User>>() {
  341.  
  342. @Override
  343. public void onFailure(Throwable caught) {
  344. Window.alert("Kan ikke hente brugere");
  345. }
  346.  
  347. @Override
  348. public void onSuccess(ArrayList<User> users) {
  349. //Tilføjer alle brugerne til Arraylisten
  350. listProviderUsers.getList().addAll(users);
  351. }
  352. });
  353. rpcService.getFood(currentUser.getId(), new AsyncCallback<ArrayList<Food>>() {
  354.  
  355. @Override
  356. public void onFailure(Throwable caught) {
  357. Window.alert("Kan ikke hente mad");
  358. }
  359.  
  360. @Override
  361. public void onSuccess(ArrayList<Food> food) {
  362. //Tilføjer alle madvarene til arraylisten
  363. listProviderFood.getList().addAll(food);
  364. }
  365. });
  366.  
  367. }
  368.  
  369. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement