4A Server -  2.0
 All Classes Namespaces Files Functions Variables Enumerator
EditStoryScope.java
Go to the documentation of this file.
1 /*
2  * Project: Server for annotations sharing
3  * Author: Ing. Jaroslav Dytrych idytrych@fit.vutbr.cz
4  * File: EditStoryScope.java
5  * Description: Backbean for pages for adding, editing and deleting of StoryScopes
6  */
7 
8 /**
9  * @file EditStoryScope.java
10  *
11  * @brief Backbean for pages for adding, editing and deleting of StoryScopes
12  */
13 
14 package cz.vutbr.fit.knot.annotations.web;
15 
20 import java.io.Serializable;
21 import java.util.Iterator;
22 import java.util.List;
23 import java.util.logging.Level;
24 import java.util.logging.Logger;
25 import javax.faces.bean.ManagedBean;
26 import javax.faces.bean.ViewScoped;
27 
28 /**
29  * Backbean for pages for adding, editing and deleting of StoryScopes
30  *
31  * @brief Backbean for pages for adding, editing and deleting of StoryScopes
32  * @author Martin Petr (xpetrm05)
33  */
34 @ManagedBean
35 @ViewScoped
36 public class EditStoryScope implements Serializable {
37  /**
38  * Value represent name of StoryScope
39  */
40  private String storyScopeName = null;
41  /**
42  * Value represent URL of SEC Client for StoryScope
43  */
44  private String secClientURL = null;
45  /**
46  * Edited StoryScope or StoryScope to be deleted
47  */
48  private StoryScope storyScope = null;
49  /**
50  * Error message displayed in form
51  */
52  private String errorMessage = null;
53 
54 
55  /**
56  * Constructor
57  */
58  public EditStoryScope(){
59  }
60 
61  /**
62  * Gets edited StoryScope name field in form
63  * If StoryScope not set yet, pick up it from session
64  *
65  * @return Returns name of edited StoryScope
66  */
67  public String getStoryScopeName(){
68  if(storyScope == null){
69  storyScope = SessionManager.getSession().getEditedStoryScope();
70  }
71 
72  StoryScope backup = null;
73  if (SessionManager.getSession().getFormBackup() != null) {
74  if (SessionManager.getSession().getFormBackup().getClass().getName().endsWith("StoryScope")) {
75  backup = (StoryScope) SessionManager.getSession().getFormBackup();
76  if (backup.getId() != storyScope.getId()) {
77  backup = null;
78  }
79  }
80  }
81 
82  if(storyScopeName == null && backup != null) {
83  storyScopeName = backup.getName();
84  } else if(storyScopeName == null && storyScope != null) {
85  storyScopeName = storyScope.getName();
86  } else if(storyScopeName == null) {
87  storyScopeName = "";
88  }
89  return storyScopeName;
90  }
91 
92  /**
93  * Sets name of edited StoryScope in to field in form
94  *
95  * @param storyScopeName Name of edited StoryScope
96  */
97  public void setStoryScopeName(String storyScopeName){
98  this.storyScopeName = storyScopeName;
99  }
100 
101  /**
102  * Gets URL of SEC clinet for edited StoryScope field in form
103  * If StoryScope not set yet, pick up it from session
104  *
105  * @return Returns URL of SEC client for edited StorySapce
106  */
107  public String getSECClientURL(){
108  if(storyScope == null){
109  storyScope = SessionManager.getSession().getEditedStoryScope();
110  }
111 
112  StoryScope backup = null;
113  if (SessionManager.getSession().getFormBackup() != null) {
114  if (SessionManager.getSession().getFormBackup().getClass().getName().endsWith("StoryScope")) {
115  backup = (StoryScope) SessionManager.getSession().getFormBackup();
116  if (backup.getId() != storyScope.getId()) {
117  backup = null;
118  }
119  }
120  }
121 
122  if(secClientURL == null && backup != null) {
123  secClientURL = backup.getClientURL();
124  } else if(secClientURL == null && storyScope != null) {
125  secClientURL = storyScope.getClientURL();
126  } else if(secClientURL == null) {
127  secClientURL = "";
128  }
129 
130  return secClientURL;
131  }
132 
133  /**
134  * Sets URL of SEC clinet for edited StoryScope in to field in form
135  *
136  * @param secClientURL URL of SEC client for edited StorySapce
137  */
138  public void setSECClientURL(String secClientURL){
139  this.secClientURL = secClientURL;
140  }
141 
142  /**
143  * Gets edited StoryScope
144  * If StoryScope not set yet, pick up it from session
145  *
146  * @return Returns edited StoryScope
147  */
149  if(storyScope == null){
150  storyScope = SessionManager.getSession().getEditedStoryScope();
151  }
152  return storyScope;
153  }
154 
155  /**
156  * Sets edited StoryScope
157  *
158  * @param storyScope Edited StorySapce
159  */
161  this.storyScope = storyScope;
162  }
163 
164  /**
165  * Gets error message displayed in form
166  *
167  * @return Returns error message displayed in form
168  */
169  public String getErrorMessage() {
170  return errorMessage;
171  }
172 
173  /**
174  * Sets error message to be displayed in form
175  *
176  * @param errorMessage Error message to be displayed in form
177  */
178  public void setErrorMessage(String errorMessage) {
179  this.errorMessage = errorMessage;
180  }
181 
182  /**
183  * Action listener for save button in the page for editing of the StoryScope
184  *
185  * @return Returns page outcome (identificator of next page or null to stay here)
186  */
187  public String btnSaveAction() {
188  boolean errorOccurred = false;
189 
190  // name of story space must be fill
191  if (storyScopeName.isEmpty()) {
192  errorMessage = errorMessage + MessageProvider.getMessage("ssNameCantBeEmpty") + " ";
193  errorOccurred = true;
194  }
195 
196  // addres of SEC client must be fill
197  if (secClientURL.isEmpty()) {
198  errorMessage = errorMessage + MessageProvider.getMessage("ssClientCantBeEmpty") + " ";
199  errorOccurred = true;
200  }
201 
202  if(errorOccurred){
203  errorMessage = MessageProvider.getMessage("error") + " " + errorMessage;
204  }
205 
206  // update data in object
207  storyScope.setName(storyScopeName);
208  storyScope.setClientURL(secClientURL);
209 
210  //persist data into DB
211  StoryScope saved = (StoryScope) AppBean.getPersistenceManager().saveEntityChanges(storyScope);
212  if (saved == null) {
213  errorMessage = MessageProvider.getMessage("ssEditDatabaseFailure");
215  String msg = "Persisting of changes in the StoryScope account failed.";
216  Logger.getLogger(EditStoryScope.class.getName()).log(Level.SEVERE, msg);
217  }
218  return null;
219  } else { // if changes was successfully saved
220  storyScope = saved;
221  }
222 
223  SessionManager.getSession().setEditedStoryScope(null);
224  return "StoryscopesMain";
225  } // btnSaveAction()
226 
227  /**
228  * Action listener for save button on page for adding new StoryScope
229  *
230  * @return Returns page outcome (identificator of next page or null to stay here)
231  */
232  public String btnNewAction(){
233  boolean errorOccurred = false;
234 
235  // name of story space must be fill
236  if (storyScopeName.isEmpty()) {
237  errorMessage = errorMessage + MessageProvider.getMessage("ssNameCantBeEmpty") + " ";
238  errorOccurred = true;
239  }
240 
241  // addres of SEC client must be fill
242  if (secClientURL.isEmpty()) {
243  errorMessage = errorMessage + MessageProvider.getMessage("ssClientCantBeEmpty") + " ";
244  errorOccurred = true;
245  }
246 
247  if(errorOccurred){
248  errorMessage = MessageProvider.getMessage("error") + " " + errorMessage;
249  }
250 
251  // create new story space and store data
252  storyScope = new StoryScope();
253  storyScope.setName(storyScopeName);
254  storyScope.setClientURL(secClientURL);
255 
256  // persist new StoryScope
257  if(AppBean.getPersistenceManager().persistEntity(storyScope)){
258  errorMessage = MessageProvider.getMessage("ssAddDatabaseFailure");
260  String msg = "Persisting of new StoryScope account failed.";
261  Logger.getLogger(EditStoryScope.class.getName()).log(Level.SEVERE, msg);
262  }
263  return null;
264  }
265 
266  SessionManager.getSession().setEditedStoryScope(null);
267  return "StoryscopesMain";
268  } //btnNewAction()
269 
270  /**
271  * Action listener for delete button on deleting page. At first delete all
272  * subscriptions of StoryScope and then delete StoryScope.
273  *
274  * @return Returns page outcome (identificator of next page or null to stay here)
275  */
276  public String btnDeleteAction(){
277  List<Object> subscriptions = storyScope.getSubscriptions();
278 
279  // at first check if StoryScope have any subscriptions
280  if((subscriptions != null) && (!subscriptions.isEmpty())){
281  Iterator <Object> subIterator = subscriptions.iterator();
282  // if story space have any subscriptions then that subscriptions must be delete first
283  while(subIterator.hasNext()){
284  SubscribedItem actualSubscription = (SubscribedItem) subIterator.next();
285 
286  if(AppBean.getPersistenceManager().removeEntity(actualSubscription)){
287  errorMessage = MessageProvider.getMessage("ssSubsDeleteDatabaseFailure");
289  String msg = "DB failure during deleting subscribed items of current StoryScope.";
290  Logger.getLogger(EditStoryScope.class.getName()).log(Level.SEVERE, msg);
291  }
292  }
293  }
294  }
295 
296  // at second delete StoryScope
297  if(AppBean.getPersistenceManager().removeEntity(storyScope)){
298  errorMessage = MessageProvider.getMessage("ssDeleteDatabaseFailure");
300  String msg = "DB failure during deleting of StoryScope account.";
301  Logger.getLogger(EditStoryScope.class.getName()).log(Level.SEVERE, msg);
302  }
303  }
304 
305  SessionManager.getSession().setFormBackup(null);
306  SessionManager.getSession().setEditedStoryScope(null); // clean up variable in session
307  return "StoryscopesMain";
308  } // btnDeleteAction()
309 
310  /**
311  * Action listener for cancel button
312  *
313  * @return Returns page outcome
314  */
315  public String btnCancelAction() {
316  SessionManager.getSession().setFormBackup(null);
317  SessionManager.getSession().setEditedStoryScope(null); // clean up variable in session
318  return "StoryscopesMain";
319  }
320 }
Class for manipulating with session.
Class representing StoryScope for needs of SEC Interface.
Definition: StoryScope.java:48
Backbean for pages for adding, editing and deleting of StoryScopes.
Singleton for storing global variables.
Definition: AppBean.java:47
Class representing item of subscripted or unsubscripted sources list.