From 63512db13d90b41d7f9f310db9b8af3f308013ca Mon Sep 17 00:00:00 2001 From: Taeyoung Son Date: Mon, 13 May 2013 23:11:10 +0900 Subject: [PATCH] [Title] add TemplateEngineBuilder from webapp-eplugin add method(getLastResourceLayer) to BuildProcess class. [Desc.] [Issue] Change-Id: I47cd18c7d26c24186e07fc5ca3c84c7afbe4c1ba --- .../src/org/tizen/common/builder/BuildProcess.java | 7 +- .../common/builder/core/TemplateEngineBuilder.java | 103 +++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 org.tizen.common.builder/src/org/tizen/common/builder/core/TemplateEngineBuilder.java diff --git a/org.tizen.common.builder/src/org/tizen/common/builder/BuildProcess.java b/org.tizen.common.builder/src/org/tizen/common/builder/BuildProcess.java index 45d4ce6..da286b3 100755 --- a/org.tizen.common.builder/src/org/tizen/common/builder/BuildProcess.java +++ b/org.tizen.common.builder/src/org/tizen/common/builder/BuildProcess.java @@ -72,7 +72,12 @@ public class BuildProcess { this.builders.add( builder ); } - + + public ResourceLayer getLastResourceLayer() { + Builder lastBuilder = getLastBuilder(); + return (lastBuilder != null) ? lastBuilder.getResourceLayer() : null; + } + public Builder getLastBuilder() { return CollectionUtil.pickupLast( this.builders ); } diff --git a/org.tizen.common.builder/src/org/tizen/common/builder/core/TemplateEngineBuilder.java b/org.tizen.common.builder/src/org/tizen/common/builder/core/TemplateEngineBuilder.java new file mode 100644 index 0000000..cf9239b --- /dev/null +++ b/org.tizen.common.builder/src/org/tizen/common/builder/core/TemplateEngineBuilder.java @@ -0,0 +1,103 @@ +/* + * Web IDE - Builder + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * Kangho Kim + * Hyeongseok Heo + * Bonyong Lee + * Taeyoung Son + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +package org.tizen.common.builder.core; + +import java.io.ByteArrayOutputStream; + +import org.tizen.common.builder.BuildResult; +import org.tizen.common.builder.Resource; +import org.tizen.common.builder.exception.BuildException; +import org.tizen.common.util.IOUtil; +import org.tizen.common.verrari.IModelProvider; +import org.tizen.common.verrari.ITemplateEngine; +import org.tizen.common.verrari.ITemplateProvider; + +/** + * Template engine builder. + * When generate resource using template engine, use this abstract builder. + * @author Taeyoung Son {@literal } (S-Core) + * @since May 10, 2013 + * + */ +public abstract class TemplateEngineBuilder extends AbstractBuilder { + + protected ITemplateEngine templateEngine; + protected IModelProvider modelProvider; + + /** + * @param engine Set {@link ITemplateEngine}. It must not be null. + * @param modelProvider Set {@link IModelProvider}. It must not be null. + * @param templateProvider Set {@link ITemplateProvider}. It must not be null. + */ + public TemplateEngineBuilder(ITemplateEngine engine + , IModelProvider modelProvider + , ITemplateProvider templateProvider) { + this(engine, modelProvider); + this.templateEngine.setTemplateProvider(templateProvider); + } + + /** + * @param engine Set {@link ITemplateEngine}. It must not be null and must set {@link ITemplateProvider} to engine. + * @param modelProvider Set {@link IModelProvider}. It must not be null. + */ + public TemplateEngineBuilder(ITemplateEngine engine, IModelProvider modelProvider) { + super(); + this.templateEngine = engine; + this.modelProvider = modelProvider; + } + + /* + * (non-Javadoc) + * @see org.tizen.common.builder.Builder#build(org.tizen.common.builder.Resource) + */ + @Override + public BuildResult build(Resource resource) throws BuildException { + ByteArrayOutputStream baos = null; + try { + baos = new ByteArrayOutputStream(); + String templateKey = getTemplateKey(resource); + templateEngine.generate( templateKey, modelProvider, baos ); //$NON-NLS-1$ + Resource out = layer.addResource( resource.getPath(), baos.toByteArray() ); + final BuildResult ret = new BuildResult(); + ret.addDependency( resource, out ); + return ret; + } catch (Exception e) { + throw new BuildException( e ); + } finally { + IOUtil.tryClose( baos ); + } + } + + /** + * Get template key. It can be used {@link ITemplateEngine#generate(String, IModelProvider, java.io.OutputStream)}. + * @param resource + * @return Template key. + */ + protected abstract String getTemplateKey(Resource resource); +} -- 2.7.4