package be.gervaisb.ogam.edu.web.tags;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;

public class ExtensionTag extends TagSupport {
	
	/** Serial version UID */
	private static final long serialVersionUID = 375320142011338571L;

	private String extended;
	private String part;
	
	public void setExtended(final String extended) {
		this.extended = extended;
	}
	
	public void setPart(final String part) {
		if ( !part.equalsIgnoreCase("form") && 
			 !part.equalsIgnoreCase("view") ) {
			throw new IllegalArgumentException(
					"Only \"form\" or \"view\" are alloweds as \"part\" attributes.");			
		}
		this.part = part.trim();
	}
	
	
	@Override
	public int doStartTag() throws JspException {
		try {

			StringBuilder path = new StringBuilder()
				.append("../../extended/").append(extended)
				//.append('/').append(extended.replace('.', '/'))
				.append('/').append(part).append(".jsp");
			pageContext.getOut().write("<a href="+path.toString()+">Page</a>");
			pageContext.include(path.toString(), true);
			//pageContext.include(path.toString());

		} catch (Exception e) {
			e.printStackTrace();
			throw new JspException("Failed to write extension", e);
		}
		System.out.println("EVAL_BODY_AGAIN");
		return EVAL_BODY_AGAIN;
	}
	
	@Override
	public int doEndTag() throws JspException {
		return EVAL_PAGE;
	}
	
}