package org.smartly.packages.sitebuilder.impl; import org.smartly.commons.logging.Logger; import org.smartly.commons.logging.util.LoggingUtils; import org.smartly.commons.io.repository.deploy.FileDeployer; import org.smartly.commons.util.FileUtils; import org.smartly.commons.util.PathUtils; import org.smartly.packages.sitebuilder.SmartlySiteBuilder; import org.smartly.packages.sitebuilder.impl.engine.SiteBuilderEngine; import org.smartly.packages.sitebuilder.impl.model.ModelDeployer; /** * */ public class SiteBuilder { private SiteBuilder() { } /** * Creates new site template from existing model. * * @param modelName * @param templateName * @throws Exception If template already exists. */ public void newTemplate(final String modelName, final String templateName) throws Exception { final String target = PathUtils.join(SmartlySiteBuilder.getAbsolutePathTemplates(), templateName); if (FileUtils.exists(target)) { throw new Exception("Template already Exists: " + templateName); } // add compilable extension FileDeployer.getPreProcessorFiles().add(".json"); // add compilable directives FileDeployer.getPreprocessorValues().put(ISiteBuilderConstants.COMPILE_SITE_NAME, templateName); FileDeployer.getPreprocessorValues().put(ISiteBuilderConstants.COMPILE_DOMAIN, SmartlySiteBuilder.getDomain()); final ModelDeployer deployer = new ModelDeployer(modelName, target); deployer.deployChildren(); } public void buildSite(final String templateName) throws Exception { final SiteBuilderEngine engine = new SiteBuilderEngine(templateName); engine.build(); } // ------------------------------------------------------------------------ // p r i v a t e // ------------------------------------------------------------------------ private Logger getLogger() { return LoggingUtils.getLogger(this); } // -------------------------------------------------------------------- // S T A T I C // -------------------------------------------------------------------- private static SiteBuilder __instance; public static SiteBuilder getInstance() { if (null == __instance) { __instance = new SiteBuilder(); } return __instance; } }