Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/cybertivity/powerjournal/SingleEntryController.java


1   package com.cybertivity.powerjournal;
2   import java.awt.Container;
3   import java.io.File;
4   import java.security.NoSuchAlgorithmException;
5   import java.sql.Timestamp;
6   import java.text.ParseException;
7   import java.text.SimpleDateFormat;
8   import java.util.ArrayList;
9   import java.util.Date;
10  import java.util.HashMap;
11  import java.util.Iterator;
12  import java.util.Set;
13  import javax.swing.JDialog;
14  import javax.swing.JFrame;
15  import javax.swing.JOptionPane;
16  import com.cybertivity.powerjournal.database.*;
17  import com.cybertivity.powerjournal.framework.*;
18  
19  /**
20   * Title:        PowerJournal
21   * Description:  $Id: SingleEntryController.java,v 1.2 2001/12/15 17:12:38 arrowood Exp $
22   * Copyright:    Copyright (c) 2001
23   * Company:      <A HREF="http://www.cybertivity.com">Cybertivity</A>
24   *
25   * @author <A HREF="mailto:chris.arrowood@cybertivity.com">Chris Arrowood</A>
26   * @created December 9, 2001
27   * @version 1.0
28   */
29  
30  public class SingleEntryController extends EntryController {
31  
32    private SingleEntryView view = null;
33    private Container content = null;
34    private boolean isGuest = true;
35    private EntryManager entryManager = null;
36  
37  
38    public SingleEntryController(Container contentArg, SingleEntryView singleEntryView, boolean isGuestArg) {
39      content = contentArg;
40      isGuest = isGuestArg;
41      view = singleEntryView;
42      singleEntryView.addObserver(this);
43    }
44  
45  
46    public void handleModelEvent(ModelEvent event) {
47  
48    }
49  
50  
51    public void handleViewEvent(ViewEvent event) {
52      Object initiator = event.getInitiator();
53      String action = event.getField();
54      try {
55        if (initiator instanceof SingleEntryView) {
56          handleSingleEntryView(event);
57        } else {
58          throw new java.lang.UnsupportedOperationException("Error: MainController recieved an action that has not been implemented. ACTION:" + action);
59        }
60      } catch (Exception ex) {
61        new ExceptionDialog(ex);
62      }
63    }
64  
65  
66    private void handleSingleEntryView(ViewEvent event) {
67      String action = event.getField();
68      Object arg = event.getValue();
69      if (action.equals(SingleEntryView.EVENT_FIRST)) {
70        if (saveCurrentEntry()) {
71          moveToFirstEntry();
72        }
73      } else if (action.equals(SingleEntryView.EVENT_PREVIOUS)) {
74        if (saveCurrentEntry()) {
75          moveToPreviousEntry();
76        }
77      } else if (action.equals(SingleEntryView.EVENT_NEXT)) {
78        if (saveCurrentEntry()) {
79          moveToNextEntry();
80        }
81      } else if (action.equals(SingleEntryView.EVENT_LAST)) {
82        if (saveCurrentEntry()) {
83          moveToLastEntry();
84        }
85      } else if (action.equals(SingleEntryView.EVENT_NEW)) {
86        if (saveCurrentEntry()) {
87          newEntry();
88        }
89      } else if (action.equals(SingleEntryView.EVENT_RELOAD)) {
90        reloadEntry();
91      } else if (action.equals(SingleEntryView.EVENT_DELETE)) {
92        deleteEntry();
93      } else if (action.equals(SingleEntryView.EVENT_VIEW_ALL)) {
94        fireEvent(SingleEntryView.EVENT_VIEW_ALL,"");
95      } else {
96        throw new java.lang.UnsupportedOperationException("Error: MainController recieved an action that has not been implemented. ACTION:" + action);
97      }
98    }
99  
100 
101   protected void setEntryManager(EntryManager entryManagerArg) {
102     entryManager = entryManagerArg;
103   }
104 
105 
106   protected void setGuestMode(boolean guestMode) {
107     isGuest = guestMode;
108   }
109 
110 
111   protected void moveToFirstEntry() {
112     try {
113       Entry entry = entryManager.moveToFirstEntry();
114       view.displayEntry(entry, isGuest);
115     } catch (DBException e) {
116       Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
117     }
118   }
119 
120 
121   private void moveToNextEntry() {
122     try {
123       view.displayEntry(entryManager.moveToNextEntry(view.getSelectedEntryNumber()), isGuest);
124     } catch (DBException e) {
125       Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
126     }
127   }
128 
129 
130   private void moveToPreviousEntry() {
131     try {
132       view.displayEntry(entryManager.moveToPreviousEntry(view.getSelectedEntryNumber()), isGuest);
133     } catch (DBException e) {
134       Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
135     }
136   }
137 
138 
139   private void moveToLastEntry() {
140     try {
141       Entry entry = entryManager.moveToLastEntry();
142       view.displayEntry(entry, isGuest);
143     } catch (DBException e) {
144       Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
145     }
146   }
147 
148   protected boolean saveCurrentEntry() {
149     boolean success = true;
150     if (!isGuest) {
151       try {
152         SimpleDateFormat sdf = new SimpleDateFormat(Entry.DATE_FORMAT);
153         Date date = sdf.parse(view.getDisplayedEntryDate());
154         Timestamp dateTimeStamp = new Timestamp(date.getTime());
155         Entry entry = new Entry("", "");
156         entry.setEntryContents(view.getDisplayedEntryContents());
157         entry.setEntryDescription(view.getDisplayedEntryDescription());
158         entry.setEntryDate(dateTimeStamp);
159         entry.setEntryPrivate(view.getDisplayedEntryIsPrivate());
160         if (view.getSelectedEntryNumber().equals(SingleEntryView.NEW_ENTRY_NUMBER_LABEL)) {
161           entryManager.insertEntryToTable(entry);
162         } else {
163           entryManager.updateCurrentEntry(entry, Integer.parseInt(view.getSelectedEntryNumber()));
164         }
165       } catch (ParseException e) {
166         Dialogs.showError(content, "Entry Error", "The date and time that you entered are invalid.\n\nUse the following format:\n" + Entry.DATE_FORMAT);
167         success = false;
168       } catch (DBException e) {
169         Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
170         success = false;
171       }
172     }
173     return success;
174   }
175 
176 
177   protected void newEntry() {
178     Entry newEntry = new Entry("", "");
179     view.displayEntry(newEntry, isGuest, true);
180   }
181 
182 
183   protected void deleteEntry() {
184     fireEvent(SingleEntryView.EVENT_DELETE,"");
185   }
186 
187 
188   private void reloadEntry() {
189     try {
190       int ans = Dialogs.getConfirm(content, "Reload Current Entry?", "Are you sure you wish to reload the current entry?  You will lose any changes that have been made to this entry.");
191       if (ans == JOptionPane.OK_OPTION) {
192         Entry entry = entryManager.getEntryById(view.getSelectedEntryNumber());
193         view.displayEntry(entry, isGuest);
194       } else {
195         Dialogs.showInformation(content, "Action Canceled", "The action was canceled");
196       }
197     } catch (DBException e) {
198       Dialogs.showError(content, MainController.ERROR_TITLE_DB, e.getMessage());
199     }
200   }
201 
202 }