package org.appfuse.service;



/**
 * Business Delegate (Proxy) Interface to handle communication between web and
 * persistence layer.
 *
 * <p>
 * <a href="TemplateManager.java.html"><i>View Source</i></a>
 * </p>
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 * @version $Revision: 1.1 $ $Date: 2004/03/31 13:04:17 $
 */
public interface TemplateManager {
    //~ Methods ================================================================

    /**
     * Retrives a single template object based on a templateId
     *
     * @param templateId
     * @return populated Template object
     */
    public Object getTemplate(String templateId) throws Exception;

    /**
     * Saves a template's information.  This method can also be used to add a new
     * template.
     *
     * @param template a populated template object
     * @return updated template information
     */
    public Object saveTemplate(Object template) throws Exception;

    /**
     * Removes a template from the database by id
     *
     * @param template the template to remove
     * @throws Exception when something goes wrong
     */
    public void removeTemplate(Object template) throws Exception;
}