/*
 * $Id: TemplateForwardTag.java,v 1.8 2004/11/02 21:42:31 marbobo Exp $
 *
 * Copyright (c) Siemens AG 2008 
 *           (c) Universität Paderborn 2008 
 * Licensed under EUPL 1.1. 
 *
 * $Log: TemplateForwardTag.java,v $
 * Revision 1.8  2004/11/02 21:42:31  marbobo
 * + Einige Funktionen für Gast-Benutzer gesperrt
 * + WebShare.LOGIN_PAGE mit WebShare.getLoginPage() ersetzt
 *
 * Revision 1.7  2004/07/20 08:56:56  jonyp
 * added copyright info + cvs log
 *
 * Revision 1.6  2004/01/29 16:22:05  bigmac
 * NPE bei abgelaufener/ungültiger Session wird verhindert
 *
 * Revision 1.4  2003/04/15 15:34:26  koppy
 * + Analyse / Klassifikation
 *
 * Revision 1.2  2002/11/05 14:53:24  koppy
 * UNIX lf
 *
 */

package vkc.view.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

import vkc.db.entities.VKCUser;
import vkc.view.WebShare;

/**
 * Tag für die Unterstützung von Templates
 *
 * @author koppy
 */
public class TemplateForwardTag extends TagSupport {
    /** Pfad vor dem Template-Verzeichnis */
    private String prefix = "/templates/";

    /** Pfad relativ zum Template-Verzeichnis */
    private String page = "/";

    /**
     * Konstruktor
     */
    public TemplateForwardTag() {
        super();
    }   

    public void setPrefix( String prefix ) {
        this.prefix = prefix;

        if ( !prefix.endsWith( "/" ) ) {
            this.prefix += "/";
        }
    }

    public void setPage( String page ) {
        this.page = page;

        if ( !page.startsWith( "/" ) ) {
            this.page = "/" + page;
        }
    }

    public int doStartTag() throws JspException {
        return SKIP_BODY;
    }

    public int doEndTag() throws javax.servlet.jsp.JspTagException {    	
        VKCUser user = (VKCUser) pageContext.getSession().getAttribute( WebShare.USER_KEY );        
		
		if ( user == null ) {
			try {
				pageContext.forward( WebShare.getLoginPage() );
				
				return SKIP_PAGE;				
			} catch ( Exception e ) {
				throw new JspTagException( "Exception forwarding to " +	WebShare.getLoginPage() + " : " + e );
			}
			
		}
		
        // Kontrolle an die entsprechende Template-Seite weiterleiten
        StringBuffer templatePage = new StringBuffer( 3 );
        templatePage.append( prefix );
		templatePage.append( user.getTemplate().getName() );
		templatePage.append( page );		 

        try {
            pageContext.forward( templatePage.toString() );
        } catch ( Exception e ) {
            throw new JspTagException("Exception forwarding to " + templatePage + " : " + e );
        }

        return SKIP_PAGE;
    }
}