001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/enterprise/control/AbstractDBListener.java $ 002 /*---------------------------------------------------------------------------- 003 This file is part of deegree, http://deegree.org/ 004 Copyright (C) 2001-2009 by: 005 Department of Geography, University of Bonn 006 and 007 lat/lon GmbH 008 009 This library is free software; you can redistribute it and/or modify it under 010 the terms of the GNU Lesser General Public License as published by the Free 011 Software Foundation; either version 2.1 of the License, or (at your option) 012 any later version. 013 This library is distributed in the hope that it will be useful, but WITHOUT 014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 016 details. 017 You should have received a copy of the GNU Lesser General Public License 018 along with this library; if not, write to the Free Software Foundation, Inc., 019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 020 021 Contact information: 022 023 lat/lon GmbH 024 Aennchenstr. 19, 53177 Bonn 025 Germany 026 http://lat-lon.de/ 027 028 Department of Geography, University of Bonn 029 Prof. Dr. Klaus Greve 030 Postfach 1147, 53001 Bonn 031 Germany 032 http://www.geographie.uni-bonn.de/deegree/ 033 034 e-mail: info@deegree.org 035 ----------------------------------------------------------------------------*/ 036 package org.deegree.enterprise.control; 037 038 import java.util.HashMap; 039 040 import org.deegree.portal.PortalException; 041 042 /** 043 * The class listens to the get request against iso 19115 formated metadata here the result shall be 044 * returned in full format 045 * 046 * <p> 047 * --------------------------------------------------------------------- 048 * </p> 049 * 050 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a> 051 * @version $Revision: 18195 $ $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $ 052 */ 053 public abstract class AbstractDBListener extends AbstractListener { 054 055 /** 056 * This method is called either to search for metadata or to lookup keywords from the thesaurus 057 */ 058 public void actionPerformed( FormEvent event ) { 059 060 RPCWebEvent rpcEvent = (RPCWebEvent) event; 061 062 try { 063 validateRequest( rpcEvent ); 064 } catch ( Exception e ) { 065 gotoErrorPage( "Invalid Operations: " + e.toString() ); 066 return; 067 } 068 069 HashMap result = null; 070 try { 071 result = performRequest( rpcEvent ); 072 } catch ( Exception e ) { 073 e.printStackTrace(); 074 gotoErrorPage( "Invalid Operations: " + e.toString() ); 075 return; 076 } 077 078 Object res = null; 079 try { 080 res = validateResult( result ); 081 } catch ( Exception e ) { 082 e.printStackTrace(); 083 gotoErrorPage( "Invalid Result: " + e.toString() ); 084 return; 085 } 086 087 try { 088 handleResult( res ); 089 } catch ( Exception e ) { 090 gotoErrorPage( "Error handling result: " + e.toString() ); 091 return; 092 } 093 094 } 095 096 /** 097 * validates the request to be performed. 098 * 099 * @param event 100 * event object containing the request to be performed 101 */ 102 protected abstract void validateRequest( RPCWebEvent event ) 103 throws PortalException; 104 105 /** 106 * creates a request from the <tt>RPCWebEvent</tt> passed to this listener 107 * 108 * @param rpcEvent 109 * event object containing the request to be performed 110 * @return string representation of a request 111 * @exception PortalException 112 * will be throwns if it is impossible to create the request 113 */ 114 protected abstract HashMap createRequest( RPCWebEvent rpcEvent ) 115 throws PortalException; 116 117 /** 118 * performs the request contained in the passed <tt>RPCWebEvent</tt> 119 * 120 * @param event 121 * event object containing the request to be performed 122 * @return result of the GetRecord request 123 * @exception PortalException 124 */ 125 protected abstract HashMap performRequest( RPCWebEvent event ) 126 throws PortalException; 127 128 /** 129 * validates the result of the catalog request and returns an <tt>Object</tt> depending on the 130 * results content. 131 * 132 * @param result 133 * result to a request 134 * @return validated result to a request 135 * @exception PortalException 136 */ 137 protected abstract Object validateResult( HashMap result ) 138 throws PortalException; 139 140 /** 141 * handles the result of a 'FULL' catalog query 142 * 143 * @param result 144 * result to a GetRecord request 145 */ 146 protected abstract void handleResult( Object result ) 147 throws PortalException; 148 149 }