/src/java/server/web/BeslagslisterController.java

https://bitbucket.org/mgyth/server2 · Java · 307 lines · 245 code · 39 blank · 23 comment · 19 complexity · 7240a0b26c0ed2c4799410b7e35c5bcd MD5 · raw file

  1. package server.web;
  2. import java.io.Serializable;
  3. import java.util.ResourceBundle;
  4. import java.util.logging.Logger;
  5. import javax.ejb.EJB;
  6. import javax.faces.application.FacesMessage;
  7. import javax.faces.bean.ManagedBean;
  8. import javax.faces.bean.SessionScoped;
  9. import javax.faces.component.UIComponent;
  10. import javax.faces.context.FacesContext;
  11. import javax.faces.convert.Converter;
  12. import javax.faces.convert.FacesConverter;
  13. import javax.faces.event.ActionEvent;
  14. import javax.faces.model.DataModel;
  15. import javax.faces.model.ListDataModel;
  16. import javax.faces.model.SelectItem;
  17. import server.ejb.BeslagslisterFacade;
  18. import server.entity.Beslagslister;
  19. import server.entity.Doerer;
  20. import server.web.util.JsfUtil;
  21. import server.web.util.PaginationHelper;
  22. import server.web.util.SerializableListDataModel;
  23. @ManagedBean(name = "beslagslisterController")
  24. @SessionScoped
  25. public class BeslagslisterController implements Serializable {
  26. private Beslagslister current;
  27. private Beslagslister currentAjax;
  28. private SerializableListDataModel items = null;
  29. @EJB
  30. private server.ejb.BeslagslisterFacade ejbFacade;
  31. private PaginationHelper pagination;
  32. private int selectedItemIndex;
  33. public BeslagslisterController() {
  34. }
  35. public void prepareDelete(Beslagslister beslag){
  36. this.currentAjax = beslag;
  37. }
  38. public Beslagslister getSelected() {
  39. if (current == null) {
  40. current = new Beslagslister();
  41. selectedItemIndex = -1;
  42. }
  43. return current;
  44. }
  45. private BeslagslisterFacade getFacade() {
  46. return ejbFacade;
  47. }
  48. public void createBeslagFromFile(Beslagslister beslag) {
  49. getFacade().create(beslag);
  50. }
  51. public PaginationHelper getPagination() {
  52. if (pagination == null) {
  53. pagination = new PaginationHelper(10) {
  54. @Override
  55. public int getItemsCount() {
  56. return getFacade().count();
  57. }
  58. @Override
  59. public SerializableListDataModel createPageDataModel() {
  60. return new SerializableListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
  61. }
  62. };
  63. }
  64. return pagination;
  65. }
  66. public String prepareList() {
  67. recreateModel();
  68. return "/beslagslister/List";
  69. }
  70. public String prepareView() {
  71. current = (Beslagslister) getItems().getRowData();
  72. selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
  73. return "/beslagslister/View";
  74. }
  75. public void prepareViewProsjekt(Beslagslister beslag) {
  76. current = beslag;
  77. selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
  78. }
  79. public String prepareCreate() {
  80. current = new Beslagslister();
  81. selectedItemIndex = -1;
  82. return "/beslagslister/Create";
  83. }
  84. public String create() {
  85. try {
  86. getFacade().create(current);
  87. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Database: ", ResourceBundle.getBundle("/Bundle").getString("BeslagslisterUpdated")));
  88. return prepareCreate();
  89. } catch (Exception e) {
  90. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Database: ", ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured") + " " + e));
  91. return null;
  92. }
  93. }
  94. public void prepareCreateAjax(Doerer doren) {
  95. current = new Beslagslister();
  96. current.setDoridfk(doren);
  97. doren.addBeslagslisterCollection(current);
  98. selectedItemIndex = -1;
  99. }
  100. public void createAjax() {
  101. try {
  102. getFacade().create(current);
  103. recreateModel();
  104. // current.getDoridfk().getBeslagslisterCollection().add(current);
  105. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Database: ", ResourceBundle.getBundle("/Bundle").getString("BeslagslisterUpdated")));
  106. } catch (Exception e) {
  107. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Database: ", ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured") + " " + e));
  108. }
  109. }
  110. public void newProjectView() {
  111. current = null;
  112. }
  113. public String prepareEdit() {
  114. current = (Beslagslister) getItems().getRowData();
  115. selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
  116. return "/beslagslister/Edit";
  117. }
  118. public void updateDialog() {
  119. try {
  120. getFacade().edit(current);
  121. recreateModel();
  122. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Database: ", ResourceBundle.getBundle("/Bundle").getString("DoererUpdated")));
  123. } catch (Exception e) {
  124. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Database: ", ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured") + " " + e));
  125. }
  126. }
  127. public String update() {
  128. try {
  129. getFacade().edit(current);
  130. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Database: ", ResourceBundle.getBundle("/Bundle").getString("BeslagslisterUpdated")));
  131. return "/beslagslister/View";
  132. } catch (Exception e) {
  133. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Database: ", ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured") + " " + e));
  134. return null;
  135. }
  136. }
  137. /**
  138. * Sletter
  139. * beslaget,
  140. * setter
  141. * index
  142. * til
  143. * -1
  144. * og
  145. * ombygger
  146. * pagineringen
  147. * og
  148. * modellen
  149. *
  150. * @param
  151. * Beslagslister
  152. * som
  153. * skal
  154. * slettes
  155. */
  156. public void destroyAjax(Beslagslister beslag) {
  157. current = beslag;
  158. performDestroy();
  159. beslag.getDoridfk().getBeslagslisterCollection().remove(beslag);
  160. recreatePagination();
  161. recreateModel();
  162. }
  163. public String destroy() {
  164. current = (Beslagslister) getItems().getRowData();
  165. selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
  166. performDestroy();
  167. recreatePagination();
  168. recreateModel();
  169. return "/beslagslister/List";
  170. }
  171. public String destroyAndView() {
  172. performDestroy();
  173. recreateModel();
  174. updateCurrentItem();
  175. if (selectedItemIndex >= 0) {
  176. return "/beslagslister/View";
  177. } else {
  178. // all items were removed - go back to list
  179. recreateModel();
  180. return "/beslagslister/List";
  181. }
  182. }
  183. private void performDestroy() {
  184. try {
  185. getFacade().remove(current);
  186. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Database: ", ResourceBundle.getBundle("/Bundle").getString("BeslagslisterDeleted")));
  187. } catch (Exception e) {
  188. FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Database: ", ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured") + " " + e));
  189. }
  190. }
  191. private void updateCurrentItem() {
  192. int count = getFacade().count();
  193. if (selectedItemIndex >= count) {
  194. // selected index cannot be bigger than number of items:
  195. selectedItemIndex = count - 1;
  196. // go to previous page if last page disappeared:
  197. if (pagination.getPageFirstItem() >= count) {
  198. pagination.previousPage();
  199. }
  200. }
  201. if (selectedItemIndex >= 0) {
  202. current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
  203. }
  204. }
  205. public DataModel getItems() {
  206. if (items == null) {
  207. items = getPagination().createPageDataModel();
  208. }
  209. return items;
  210. }
  211. private void recreateModel() {
  212. items = null;
  213. }
  214. private void recreatePagination() {
  215. pagination = null;
  216. }
  217. public String next() {
  218. getPagination().nextPage();
  219. recreateModel();
  220. return "/beslagslister/List";
  221. }
  222. public String previous() {
  223. getPagination().previousPage();
  224. recreateModel();
  225. return "/beslagslister/List";
  226. }
  227. public SelectItem[] getItemsAvailableSelectMany() {
  228. return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
  229. }
  230. public SelectItem[] getItemsAvailableSelectOne() {
  231. return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
  232. }
  233. @FacesConverter(forClass = Beslagslister.class)
  234. public static class BeslagslisterControllerConverter implements Converter {
  235. @Override
  236. public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
  237. if (value == null || value.length() == 0) {
  238. return null;
  239. }
  240. BeslagslisterController controller = (BeslagslisterController) facesContext.getApplication().getELResolver().
  241. getValue(facesContext.getELContext(), null, "beslagslisterController");
  242. return controller.ejbFacade.find(getKey(value));
  243. }
  244. java.lang.Integer getKey(String value) {
  245. java.lang.Integer key;
  246. key = Integer.valueOf(value);
  247. return key;
  248. }
  249. String getStringKey(java.lang.Integer value) {
  250. StringBuilder sb = new StringBuilder();
  251. sb.append(value);
  252. return sb.toString();
  253. }
  254. @Override
  255. public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
  256. if (object == null) {
  257. return null;
  258. }
  259. if (object instanceof Beslagslister) {
  260. Beslagslister o = (Beslagslister) object;
  261. return getStringKey(o.getIDBeslagsliste());
  262. } else {
  263. throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Beslagslister.class.getName());
  264. }
  265. }
  266. }
  267. private static final Logger LOG = Logger.getLogger(BeslagslisterController.class.getName());
  268. }