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 = (String) request.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 = (UserdataVO) request.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 = ( (InformationVO) ergebnis.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 if( ergebnis!= 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
|