ShowInformationAction.java
001 /*
002  * Created on 10.06.2004
003  */
004 package de.fub.tip.actions;
005 
006 import java.sql.SQLException;
007 
008 import javax.servlet.http.HttpServletRequest;
009 import javax.servlet.http.HttpServletResponse;
010 import javax.sql.DataSource;
011 
012 import org.apache.log4j.Logger;
013 import org.apache.struts.action.Action;
014 import org.apache.struts.action.ActionForm;
015 import org.apache.struts.action.ActionForward;
016 import org.apache.struts.action.ActionMapping;
017 
018 import de.fub.tip.datenanzeige.container.InformationVOContainer;
019 import de.fub.tip.datenanzeige.ormapper.InformationVO;
020 import de.fub.tip.datenanzeige.ormapper.SightVO;
021 import de.fub.tip.datenanzeige.ormapper.UserdataVO;
022 import de.fub.tip.datenbank.factory.InformationsAnzeigerFactory;
023 import de.fub.tip.datenbank.logik.InformationsAnzeiger;
024 import de.fub.tip.exceptions.NoDataFoundException;
025 import de.fub.tip.exceptions.NoUserLoggedInException;
026 
027 /**
028  * Sinn: zeigt Informationen zu einer Sehenswürdigkeit an. Derzeit 
029  * werden einfach alle Informationen aus der DB zu einer Sehenswürdigkeit 
030  * angezeigt.
031  
032  @author hirsch, 10.06.2004
033  @version 2004-06-11
034  * $Id: ShowInformationAction.java,v 1.11 2004/06/11 19:47:04 hirsch Exp $
035  */
036 public class ShowInformationAction extends Action {
037     /** Logger zur Fehlersuche */
038   private static Logger logger = 
039       Logger.getLogger(ShowInformationAction.class);
040   /** zum Herstellen einer Datenbankverbindung 
041    * wird die Datenquelle von Struts übergeben
042    */
043   private DataSource dataSource = null;
044   
045   /**
046    * zeigt Informationen zu einer Sehenswürdigkeit an, deren ID
047    * als URL-Parameter übergeben wurde
048    *
049    @param actionMapping ActionMapping
050    @param actionForm zugehörige ActionForm
051    @param request der aktuelle Request
052    @param response ServletResponse
053    *
054    @return ActionForward nächstes Ziel
055    */
056   public ActionForward execute(ActionMapping actionMapping,
057       ActionForm actionForm, HttpServletRequest request,
058       HttpServletResponse response ) {
059 
060       InformationVOContainer ergebnis = new InformationVOContainer();
061       
062     logger.info("ShowInformationAction.execute() called.");
063 
064     try {
065             dataSource = this.getDataSource(request, "tip")
066             InformationsAnzeiger benutzerlogik = 
067                 (InformationsAnzeiger
068                 InformationsAnzeigerFactory.getInstance(
069               dataSource).getLogicObject();
070             
071             // URL-Parameter auslesen
072             String sightid = (Stringrequest.getParameter("sight");
073             if(sightid =="" || sightid==null) {
074                 logger.error("ShowInformationAction: " +
075                     "ungültiger Aufruf mit URL-Parameter sight!");
076                 throw new NoDataFoundException("ShowInformationAction: " +
077                     "ungültiger Aufruf mit URL-Parameter sight!");
078             // end if
079 
080       UserdataVO user = (UserdataVOrequest.getSession().
081         getAttribute("user");
082 
083             // alle Informationen zu der Sehenswürdigkeit sammeln
084             SightVO sight = new SightVO();
085             sight.setId(new Integer(sightid));
086             ergebnis = benutzerlogik.getAllInformationForSight(sight, user);
087             
088             // die Sehenswürdigkeit des 1.Containerelementes speichern, damit die
089             // Ansicht separat darauf zugreifen kann.
090             if ergebnis != null) {
091           sight = ( (InformationVOergebnis.next() ).getSight();
092           logger.debug("in Action: " + sight.getId() + sight.getName() + sight.getLocation());
093               request.setAttribute("sehensw", sight);
094           logger.debug("ShowInformationAction.Sehenswürdigkeit als " +
095             "Parameter sehensw gespeichert. ");
096             // end if
097             
098         catch (NoDataFoundException e) {
099         logger.debug("ShowInformationAction.execute(): " +e);
100         return actionMapping.findForward("success");
101         
102       catch (SQLException e) {
103       logger.debug("ShowInformationAction.SQLException: "+e+ ", "+
104               e.getMessage());
105 
106       return actionMapping.findForward("dbproblem");
107 
108       catch (NoUserLoggedInException e) {
109       logger.debug("ShowInformationAction.NoUserException: "+e+ ", "+
110               e.getMessage());
111 
112       return actionMapping.findForward("dbproblem");
113       // end of catch
114     
115     ifergebnis!= null ) {
116       request.setAttribute("informations", ergebnis);
117       logger.debug("Container hat "+ ergebnis.size()" Elemente.");
118       logger.debug("ShowInformationAction.Container als " +
119         "Parameter informations gespeichert.");
120     // end if
121       
122     logger.debug("ShowInformationAction.execute(): " +
123     "Bearbeitung erfolgreich beendet");
124   
125     return actionMapping.findForward("success");
126   // end of execute
127 // end of class