View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   //CabaWeb
3   //Copyright (C) 2004  Thomas Vogt <Thomas.Vogt@TVC-Software.com>
4   //
5   //This library is free software; you can redistribute it and/or
6   //modify it under the terms of the GNU Lesser General Public
7   //License as published by the Free Software Foundation; either
8   //version 2.1 of the License, or (at your option) any later version.
9   //
10  //This library is distributed in the hope that it will be useful,
11  //but WITHOUT ANY WARRANTY; without even the implied warranty of
12  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  //Lesser General Public License for more details.
14  //
15  //You should have received a copy of the GNU Lesser General Public
16  //License along with this library; if not, write to the Free Software
17  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  
20  package org.fhw.cabaweb.webfrontend.actions;
21  
22  import java.util.Collection;
23  import java.util.Iterator;
24  import java.util.Locale;
25  
26  import javax.servlet.http.HttpServletRequest;
27  import javax.servlet.http.HttpServletResponse;
28  import javax.servlet.http.HttpSession;
29  
30  import org.apache.commons.beanutils.PropertyUtils;
31  import org.apache.commons.logging.Log;
32  import org.apache.commons.logging.LogFactory;
33  import org.apache.struts.action.Action;
34  import org.apache.struts.action.ActionForm;
35  import org.apache.struts.action.ActionForward;
36  import org.apache.struts.action.ActionMapping;
37  import org.apache.struts.util.MessageResources;
38  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldbeschreibungen;
39  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsbeschreibungen;
40  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen;
41  import org.fhw.cabaweb.data.DataInterfaceProjektbeschreibungen;
42  import org.fhw.cabaweb.data.DataInterfaceSprachen;
43  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenFeldbeschreibungen;
44  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenGruppierungsbeschreibungen;
45  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenUntergruppierungsbeschreibungen;
46  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldbeschreibungen;
47  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsbeschreibungen;
48  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsbeschreibungen;
49  import org.fhw.cabaweb.ojb.dataobjects.Projektbeschreibungen;
50  import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
51  import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldbeschreibungen;
52  import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Gruppierungsbeschreibungen;
53  import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Untergruppierungsbeschreibungen;
54  
55  /***
56   * <strong>Action</strong>-Klasse f&uuml;r die Help Action .
57   * Aufruf einer Hilfeseite mit den angegebenen Inhalten.
58   * Die Controller Klasse der Struts Model View Controller Architektur.
59   *
60   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
61   * @version Version 1.0 09.08.2004
62   */
63  public final class HelpAction extends Action
64  {
65  
66      /*** Commons Logging Instanz */
67      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.HelpAction");
68  
69      /***
70       * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
71       * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
72       * erzeugt.
73       *
74       * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
75       * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
76       * wenn die Anfrage bereits bearbeitet wurde.
77       *
78       * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
79       * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
80       * @param request Die HTTP Anfrage die wir gerade bearbeiten
81       * @param response The HTTP Antwort die wir erzeugen
82       *
83       * @return Die Action zu der wir weiterleiten
84       * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
85       *            bzw. die Business Logik einen Fehler verursacht
86       */
87      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
88      {
89          /*** Die Session der aktuellen Anfrage */
90          HttpSession session = request.getSession();
91          /*** Die Locale Variable (Sprache, Formatierung, etc.) */
92          Locale locale = getLocale(request);
93          /*** Variable in der das Redirecting gespeichert wird */
94          ActionForward redirectTo = null;
95          /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
96          MessageResources messages;
97          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
98          DataInterfaceSprachen dis = new DataInterfaceSprachen();
99  
100         if (log.isDebugEnabled())
101         {
102             log.debug(" Sprache : " + locale.getDisplayLanguage());
103         }
104 
105         Sprachen sprache = null;
106         Collection sprachen = dis.sucheSprachname(locale.getDisplayLanguage());
107         Iterator sprachiterator = sprachen.iterator();
108         Integer sprachnummer = null;
109 
110         if (log.isDebugEnabled())
111         {
112             log.debug(" Gefundene Sprachen : " + sprachen.size());
113         }
114 
115         if (sprachiterator.hasNext())
116         {
117             sprache = (Sprachen) sprachiterator.next();
118 
119             if (sprache != null)
120             {
121                 sprachnummer = sprache.getSprachnummer();
122             }
123         }
124 
125         Integer projektnummer = null;
126         Integer e_feldnummer = null;
127         Integer e_gruppierungsnummer = null;
128         Integer e_untergruppierungsnummer = null;
129         Integer v_feldnummer = null;
130         Integer v_gruppierungsnummer = null;
131         Integer v_untergruppierungsnummer = null;
132         String helpfor = null;
133 
134         String bundle = null;
135         String titlekey = null;
136         String textkey = null;
137 
138         String hilfetitel = null;
139         String hilfetext = null;
140         String hilfebild = null;
141 
142         try
143         {
144             helpfor = (String) PropertyUtils.getSimpleProperty(form, "helpfor");
145             bundle = (String) PropertyUtils.getSimpleProperty(form, "bundle");
146             titlekey = (String) PropertyUtils.getSimpleProperty(form, "titlekey");
147             textkey = (String) PropertyUtils.getSimpleProperty(form, "textkey");
148             projektnummer = (Integer) PropertyUtils.getSimpleProperty(form, "projektnummer");
149             e_feldnummer = (Integer) PropertyUtils.getSimpleProperty(form, "e_feldnummer");
150             e_gruppierungsnummer = (Integer) PropertyUtils.getSimpleProperty(form, "e_gruppierungsnummer");
151             e_untergruppierungsnummer = (Integer) PropertyUtils.getSimpleProperty(form, "e_untergruppierungsnummer");
152             v_feldnummer = (Integer) PropertyUtils.getSimpleProperty(form, "v_feldnummer");
153             v_gruppierungsnummer = (Integer) PropertyUtils.getSimpleProperty(form, "v_gruppierungsnummer");
154             v_untergruppierungsnummer = (Integer) PropertyUtils.getSimpleProperty(form, "v_untergruppierungsnummer");
155         }
156         catch (Exception e)
157         {
158             log.error(e.getMessage(), e);
159         }
160 
161         if (log.isDebugEnabled())
162         {
163             log.debug(" Help for          : " + helpfor);
164             log.debug(" Resource bundle   : " + bundle);
165             log.debug(" Resource key Tit. : " + titlekey);
166             log.debug(" Resource key Text : " + textkey);
167             log.debug(" Projektnummer     : " + projektnummer);
168             log.debug(" Feldnummer (ERG)  : " + e_feldnummer);
169             log.debug(" Grp.nummer (ERG)  : " + e_gruppierungsnummer);
170             log.debug(" UGrp.nummer (ERG) : " + e_untergruppierungsnummer);
171             log.debug(" Feldnummer (VOR)  : " + v_feldnummer);
172             log.debug(" Grp.nummer (VOR)  : " + v_gruppierungsnummer);
173             log.debug(" UGrp.nummer (VOR) : " + v_untergruppierungsnummer);
174         }
175 
176         if (log.isDebugEnabled())
177         {
178             log.debug(" Found '" + sprache + "' language.");
179         }
180 
181         if (helpfor == null)
182         {
183             helpfor = "Not Available";
184         }
185 
186         if (helpfor.compareTo("Projekt") == 0)
187         {
188             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
189             DataInterfaceProjektbeschreibungen dipb = new DataInterfaceProjektbeschreibungen();
190 
191             if (projektnummer != null)
192             {
193                 Projektbeschreibungen beschreibung = null;
194                 Collection objekte = dipb.sucheKombination(projektnummer, sprachnummer);
195 
196                 Iterator iter = objekte.iterator();
197                 if (iter.hasNext())
198                 {
199                     beschreibung = (Projektbeschreibungen) iter.next();
200                 }
201 
202                 if (beschreibung != null)
203                 {
204                     hilfetitel = beschreibung.getKurzbeschreibung();
205                     hilfetext = beschreibung.getBeschreibung();
206                 }
207 
208                 hilfebild = null;
209             }
210         }
211         else if (helpfor.compareTo("ErgebnissdatenFeldname") == 0)
212         {
213             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
214             DataInterfaceErgebnissdatenFeldbeschreibungen diefb = new DataInterfaceErgebnissdatenFeldbeschreibungen();
215 
216             if (e_feldnummer != null)
217             {
218                 Ergebnissdaten_Feldbeschreibungen beschreibung = null;
219                 Collection objekte = diefb.sucheKombination(null, e_feldnummer, null, null, sprachnummer);
220 
221                 Iterator iter = objekte.iterator();
222                 if (iter.hasNext())
223                 {
224                     beschreibung = (Ergebnissdaten_Feldbeschreibungen) iter.next();
225                 }
226 
227                 if (beschreibung != null)
228                 {
229                     hilfetitel = beschreibung.getKurzbeschreibung();
230                     hilfetext = beschreibung.getBeschreibung();
231                 }
232 
233                 hilfebild = null;
234             }
235         }
236         else if (helpfor.compareTo("ErgebnissdatenGruppierungsname") == 0)
237         {
238             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
239             DataInterfaceErgebnissdatenGruppierungsbeschreibungen diegb = new DataInterfaceErgebnissdatenGruppierungsbeschreibungen();
240 
241             if (e_gruppierungsnummer != null)
242             {
243                 Ergebnissdaten_Gruppierungsbeschreibungen beschreibung = null;
244                 Collection objekte = diegb.sucheKombination(null, e_gruppierungsnummer, sprachnummer);
245 
246                 Iterator iter = objekte.iterator();
247                 if (iter.hasNext())
248                 {
249                     beschreibung = (Ergebnissdaten_Gruppierungsbeschreibungen) iter.next();
250                 }
251 
252                 if (beschreibung != null)
253                 {
254                     hilfetitel = beschreibung.getKurzbeschreibung();
255                     hilfetext = beschreibung.getBeschreibung();
256                 }
257 
258                 hilfebild = null;
259             }
260         }
261         else if (helpfor.compareTo("ErgebnissdatenUntergruppierungsname") == 0)
262         {
263             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
264             DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen dieugb = new DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen();
265 
266             if (e_untergruppierungsnummer != null)
267             {
268                 Ergebnissdaten_Untergruppierungsbeschreibungen beschreibung = null;
269                 Collection objekte = dieugb.sucheKombination(null, null, e_untergruppierungsnummer, sprachnummer);
270 
271                 Iterator iter = objekte.iterator();
272                 if (iter.hasNext())
273                 {
274                     beschreibung = (Ergebnissdaten_Untergruppierungsbeschreibungen) iter.next();
275                 }
276 
277                 if (beschreibung != null)
278                 {
279                     hilfetitel = beschreibung.getKurzbeschreibung();
280                     hilfetext = beschreibung.getBeschreibung();
281                 }
282 
283                 hilfebild = null;
284             }
285         }
286         else if (helpfor.compareTo("VoreinstellungenFeldname") == 0)
287         {
288             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
289             DataInterfaceVoreinstellungenFeldbeschreibungen divfb = new DataInterfaceVoreinstellungenFeldbeschreibungen();
290 
291             if (v_feldnummer != null)
292             {
293                 Voreinstellungen_Feldbeschreibungen beschreibung = null;
294                 Collection objekte = divfb.sucheKombination(null, v_feldnummer, null, null, sprachnummer);
295 
296                 Iterator iter = objekte.iterator();
297                 if (iter.hasNext())
298                 {
299                     beschreibung = (Voreinstellungen_Feldbeschreibungen) iter.next();
300                 }
301 
302                 if (beschreibung != null)
303                 {
304                     hilfetitel = beschreibung.getKurzbeschreibung();
305                     hilfetext = beschreibung.getBeschreibung();
306                 }
307 
308                 hilfebild = null;
309             }
310         }
311         else if (helpfor.compareTo("VoreinstellungenGruppierungsname") == 0)
312         {
313             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
314             DataInterfaceVoreinstellungenGruppierungsbeschreibungen diegb = new DataInterfaceVoreinstellungenGruppierungsbeschreibungen();
315 
316             if (v_gruppierungsnummer != null)
317             {
318                 Voreinstellungen_Gruppierungsbeschreibungen beschreibung = null;
319                 Collection objekte = diegb.sucheKombination(null, v_gruppierungsnummer, sprachnummer);
320 
321                 Iterator iter = objekte.iterator();
322                 if (iter.hasNext())
323                 {
324                     beschreibung = (Voreinstellungen_Gruppierungsbeschreibungen) iter.next();
325                 }
326 
327                 if (beschreibung != null)
328                 {
329                     hilfetitel = beschreibung.getKurzbeschreibung();
330                     hilfetext = beschreibung.getBeschreibung();
331                 }
332 
333                 hilfebild = null;
334             }
335         }
336         else if (helpfor.compareTo("VoreinstellungenUntergruppierungsname") == 0)
337         {
338             /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
339             DataInterfaceVoreinstellungenUntergruppierungsbeschreibungen dieugb = new DataInterfaceVoreinstellungenUntergruppierungsbeschreibungen();
340 
341             if (v_untergruppierungsnummer != null)
342             {
343                 Voreinstellungen_Untergruppierungsbeschreibungen beschreibung = null;
344                 Collection objekte = dieugb.sucheKombination(null, null, v_untergruppierungsnummer, sprachnummer);
345 
346                 Iterator iter = objekte.iterator();
347                 if (iter.hasNext())
348                 {
349                     beschreibung = (Voreinstellungen_Untergruppierungsbeschreibungen) iter.next();
350                 }
351 
352                 if (beschreibung != null)
353                 {
354                     hilfetitel = beschreibung.getKurzbeschreibung();
355                     hilfetext = beschreibung.getBeschreibung();
356                 }
357 
358                 hilfebild = null;
359             }
360         }
361         else if (helpfor.compareTo("Message") == 0)
362         {
363             if (bundle != null && bundle != "")
364                 messages = getResources(request, bundle);
365             else
366                 messages = getResources(request);
367 
368             if (titlekey != null && titlekey != "")
369                 hilfetitel = messages.getMessage(locale, titlekey);
370             if (textkey != null && textkey != "")
371                 hilfetext = messages.getMessage(locale, textkey);
372 
373             hilfebild = null;
374         }
375         else
376         {
377             messages = getResources(request);
378 
379             hilfetitel = messages.getMessage(locale, "error.help.title");
380             hilfetext = messages.getMessage(locale, "error.help.text");
381             hilfebild = null;
382         }
383 
384         messages = getResources(request);
385 
386         if (hilfetitel == null)
387             hilfetitel = messages.getMessage(locale, "error.help.message.title");
388 
389         if (hilfetext == null)
390             hilfetext = messages.getMessage(locale, "error.help.message.text");
391 
392         if (log.isDebugEnabled())
393         {
394             log.debug(" hilfetitel '" + hilfetitel + "'");
395             log.debug(" hilfetext '" + hilfetext + "'");
396             log.debug(" hilfebild '" + hilfebild + "'");
397         }
398 
399         session.setAttribute("hilfetitel", hilfetitel);
400         session.setAttribute("hilfetext", hilfetext);
401         session.setAttribute("hilfebild", hilfebild);
402 
403         // Get the Referer from request Header
404         //		String referer = request.getHeader("Referer");
405 
406         // Extract the mapping name from Referer like "/main.do"
407         //		String mappingName = referer.substring(referer.lastIndexOf("/"));
408 
409         if (log.isDebugEnabled())
410         {
411             //			log.debug(" Referer: " + referer);
412             log.debug(" Redirecting to: \"success\".");
413         }
414 
415         // Forward to the success page
416         redirectTo = mapping.findForward("success");
417         //        redirectTo = new ActionForward(mappingName);
418         //        redirectTo.setRedirect(true);
419 
420         return redirectTo;
421     }
422 }