Java tutorial
/* * B3P Gisviewer is an extension to Flamingo MapComponents making * it a complete webbased GIS viewer and configuration tool that * works in cooperation with B3P Kaartenbalie. * * Copyright 2006, 2007, 2008 B3Partners BV * * This file is part of B3P Gisviewer. * * B3P Gisviewer is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * B3P Gisviewer is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with B3P Gisviewer. If not, see <http://www.gnu.org/licenses/>. */ package nl.b3p.gis.viewer; import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import nl.b3p.commons.struts.CrudAction; import nl.b3p.gis.viewer.services.GisPrincipal; import nl.b3p.gis.viewer.services.HibernateUtil; import nl.b3p.wms.capabilities.ServiceProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.util.MessageResources; import org.apache.struts.validator.DynaValidatorForm; import org.hibernate.Session; import org.hibernate.Transaction; public class ViewerCrudAction extends CrudAction { private static Log log = LogFactory.getLog(ViewerCrudAction.class); protected static final String ACKNOWLEDGE_MESSAGES = "acknowledgeMessages"; @Override protected ActionForward getUnspecifiedAlternateForward(ActionMapping mapping, HttpServletRequest request) { return mapping.findForward(FAILURE); } protected String getOrganizationCode(HttpServletRequest request) { GisPrincipal gp = GisPrincipal.getGisPrincipal(request); if (gp != null) { ServiceProvider sp = gp.getSp(); if (sp != null) { return sp.getOrganizationCode(); } else { log.error("Er is geen serviceprovider aanwezig bij GisPrincipal met naam: " + gp.getName()); return null; } } else { log.debug("Er is geen GisPrincipal aanwezig."); return null; } } @Override protected void createLists(DynaValidatorForm dynaForm, HttpServletRequest request) throws Exception { String organizationcode = getOrganizationCode(request); if (organizationcode != null && organizationcode.length() > 0) { request.setAttribute("organizationcodekey", organizationcode); request.setAttribute("organizationcode", organizationcode); } } @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Session sess = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = sess.getTransaction(); tx.begin(); ActionForward forward = null; String msg = null; try { forward = super.execute(mapping, form, request, response); tx.commit(); return forward; } catch (Exception e) { tx.rollback(); log.error("Exception occured, rollback", e); MessageResources messages = getResources(request); if (e instanceof org.hibernate.JDBCException) { msg = e.toString(); SQLException sqle = ((org.hibernate.JDBCException) e).getSQLException(); msg = msg + ": " + sqle; SQLException nextSqlE = sqle.getNextException(); if (nextSqlE != null) { msg = msg + ": " + nextSqlE; } } else if (e instanceof java.sql.SQLException) { msg = e.toString(); SQLException nextSqlE = ((java.sql.SQLException) e).getNextException(); if (nextSqlE != null) { msg = msg + ": " + nextSqlE; } } else { msg = e.toString(); } addAlternateMessage(mapping, request, null, msg); } // Start tweede sessie om tenminste nog de lijsten op te halen sess = HibernateUtil.getSessionFactory().getCurrentSession(); tx = sess.getTransaction(); tx.begin(); try { prepareMethod((DynaValidatorForm) form, request, LIST, EDIT); //throw new Exception("Lorem Ipsum 2"); tx.commit(); } catch (Exception e) { tx.rollback(); log.error("Exception occured in second session, rollback", e); addAlternateMessage(mapping, request, null, e.toString()); } //addAlternateMessage(mapping, request, null, message); return getAlternateForward(mapping, request); } }