package com.idega.builder.facelets; import com.idega.builder.business.CachedBuilderPage; import com.idega.util.StringHandler; import com.idega.xml.XMLNamespace; /** * <p> * Utility Class for the Facelets Builder implmementation * </p> * * @author <a href="tryggvi@idega.is">Tryggvi Larusson </a> * * Last modified: $Date: 2009/01/14 15:36:57 $ by $Author: tryggvil $ * @version $Id: FaceletsUtil.java,v 1.3 2009/01/14 15:36:57 tryggvil Exp $ */ public class FaceletsUtil { /** * Comment for <code>serialVersionUID</code> */ public static final long serialVersionUID = -1115066670523521567L; public static final String BUILDERPAGE_PREFIX = "builderpage_"; public static final int BUILDERPAGE_PREFIX_LENGTH = BUILDERPAGE_PREFIX.length(); public static final String PAGES_DEFAULT_FOLDER = "facelets"; public static final String FACELET_PAGE_EXTENSION_WITH_DOT = ".xhtml"; public static final int FACELET_PAGE_EXTENSION_WITH_DOT_LENGTH = FACELET_PAGE_EXTENSION_WITH_DOT.length(); public static final XMLNamespace BUILDER_NAMESPACE=new XMLNamespace("http://xmlns.idega.com/com.idega.builder"); public static String getRewrittenTemplateReference(CachedBuilderPage page,String templateId) { //TODO: Implement conversion based on PageURI return "/facelets/builderpage_" + templateId + ".xhtml"; } /** * Returns page key if the view id represents a FaceletPage else null. * * @param viewId * @return */ public static String getPageKey(String viewId) { // we are looking for something like "/jsps/builderpage_12.jsp" // quick check at the beginning if (! viewId.endsWith(FaceletsUtil.FACELET_PAGE_EXTENSION_WITH_DOT)) { // no jsp page at all return null; } int startIndex = viewId.lastIndexOf(FaceletsUtil.BUILDERPAGE_PREFIX); if (startIndex < 0) { // jsp page but not a builder page return null; } startIndex += FaceletsUtil.BUILDERPAGE_PREFIX_LENGTH; int endIndex = viewId.length() - FaceletsUtil.FACELET_PAGE_EXTENSION_WITH_DOT_LENGTH; String key = viewId.substring(startIndex, endIndex); if (StringHandler.isNaturalNumber(key)) { return key; } return null; } }