[Title] Added TemplateTransfer
authorchanghyun1.lee <changhyun1.lee@samsung.com>
Wed, 7 Nov 2012 08:24:15 +0000 (17:24 +0900)
committerchanghyun1.lee <changhyun1.lee@samsung.com>
Thu, 8 Nov 2012 02:11:47 +0000 (11:11 +0900)
[Desc.]
[Issue] Redmine-5681

Change-Id: Ica5363187b83286bf1cafbbf97dca5e2f1136b65

org.tizen.common.verrari/src/org/tizen/common/verrari/template/TemplateTransformer.java [new file with mode: 0644]
org.tizen.common.verrari/test/src/org/tizen/common/verrari/template/TemplateTransformerTest.java [new file with mode: 0644]

diff --git a/org.tizen.common.verrari/src/org/tizen/common/verrari/template/TemplateTransformer.java b/org.tizen.common.verrari/src/org/tizen/common/verrari/template/TemplateTransformer.java
new file mode 100644 (file)
index 0000000..c6d0603
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Verrari - TemplateEngine
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Changhyun Lee <changhyun1.lee@samsung.com>
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ *
+ * 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.verrari.template;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * TemplateTransfer
+ *
+ * @author ChangHyun Lee{@literal <changhyun1.lee@samsung.com>} (S-Core)
+ */
+public class TemplateTransformer {
+
+    public static final String REGEX_COMMENT = "(\\$\\#).*"; //$NON-NLS-1$ // $# value : line comment
+    public static final String REGEX_TRANSFORM = "(\\$\\$\\{)(.*?)(\\})"; //$NON-NLS-1$ // $${value} : transform
+
+    private String transformNotation = "$"; //$NON-NLS-1$
+
+    public TemplateTransformer() {
+    }
+
+    public String templateTransfer(String contents, String expression) {
+        // delete comments and change transform expression
+        return changeTransformExpression(deleteComments(contents), expression);
+    }
+
+    protected String deleteComments(String contents) {
+        Pattern pattern = Pattern.compile(REGEX_COMMENT);
+        Matcher matcher = pattern.matcher(contents);
+        return matcher.replaceAll(""); //$NON-NLS-1$
+    }
+
+    protected String changeTransformExpression(String contents, String expression) {
+        Pattern pattern = Pattern.compile(REGEX_TRANSFORM);
+        Matcher matcher = pattern.matcher(contents);
+        String genContents = contents;
+        while (matcher.find()) {
+            genContents = genContents.replace(matcher.group(), matcher.group().replace("$$", expression)); //$NON-NLS-1$
+        }
+        return genContents;
+    }
+
+    public void setTransformNotation(String transformNotation) {
+        this.transformNotation = transformNotation;
+    }
+
+    public String getTransformNotation() {
+        return transformNotation;
+    }
+
+}
diff --git a/org.tizen.common.verrari/test/src/org/tizen/common/verrari/template/TemplateTransformerTest.java b/org.tizen.common.verrari/test/src/org/tizen/common/verrari/template/TemplateTransformerTest.java
new file mode 100644 (file)
index 0000000..865e2a0
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Verrari - TemplateEngine
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Changhyun Lee <changhyun1.lee@samsung.com>
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ *
+ * 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.verrari.template;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * TemplateTransferTest.
+ *
+ * Test case for {@link TemplateTransformer}
+ *
+ * @author Changhyun Lee{@literal <changhyun1.lee@samsung.com>} (S-Core)
+ *
+ * @see TemplateTransformer
+ *
+ */
+public class TemplateTransformerTest {
+
+    public static final String source =
+            "This is test case. \n" +
+            "$# this line is comment. \n" +
+            "$# this line is comment. \n" +
+            "$${test1}  $${test2}  $${test3} \n" +
+            "$${test4}  $${test5}  $# $${test6} \n";
+
+    /**
+     * Test {@link TemplateTransformer#setTransformNotation()}
+     *
+     * @throws Exception in case of failure in test
+     *
+     * @see TemplateTransformer#setTransformNotation()
+     */
+    @Test
+    public void test_setTransformNotation() throws Exception {
+        TemplateTransformer transfer = new TemplateTransformer();
+        String expression = "@#$";
+        transfer.setTransformNotation(expression);
+        assertEquals(expression, transfer.getTransformNotation());
+    }
+
+    /**
+     * Test {@link TemplateTransformer#getTransformNotation()}
+     *
+     * @throws Exception in case of failure in test
+     *
+     * @see TemplateTransformer#getTransformNotation()
+     */
+    @Test
+    public void test_getTransformNotation() throws Exception {
+        TemplateTransformer transfer = new TemplateTransformer();
+        assertEquals("$", transfer.getTransformNotation());
+    }
+
+    /**
+     * Test {@link TemplateTransformer#templateTransfer()}
+     *
+     * @throws Exception in case of failure in test
+     *
+     * @see TemplateTransformer#templateTransfer()
+     */
+    @Test
+    public void test_templateTransfer() throws Exception {
+        String genSource = new TemplateTransformer().templateTransfer(source, "$");
+        assertFalse(genSource.contains("$$"));
+        assertFalse(genSource.contains("$#"));
+        assertFalse(genSource.contains("comment"));
+        assertTrue(genSource.contains("${test1}"));
+        assertTrue(genSource.contains("${test2}"));
+        assertTrue(genSource.contains("${test3}"));
+        assertTrue(genSource.contains("${test4}"));
+        assertTrue(genSource.contains("${test5}"));
+        assertFalse(genSource.contains("${test6}"));
+    }
+
+    /**
+     * Test {@link TemplateTransformer#deleteComments()}
+     *
+     * @throws Exception in case of failure in test
+     *
+     * @see TemplateTransformer#deleteComments()
+     */
+    @Test
+    public void test_deleteComments() throws Exception {
+        String genSource = new TemplateTransformer().deleteComments(source);
+        assertFalse(genSource.contains("$#"));
+        assertFalse(genSource.contains("comment"));
+        assertFalse(genSource.contains("$${test6}"));
+        assertTrue(genSource.contains("$$"));
+        assertTrue(genSource.contains("$${test1}"));
+        assertTrue(genSource.contains("$${test2}"));
+        assertTrue(genSource.contains("$${test3}"));
+        assertTrue(genSource.contains("$${test4}"));
+        assertTrue(genSource.contains("$${test5}"));
+    }
+
+    /**
+     * Test {@link TemplateTransformer#changeTransformExpression()}
+     *
+     * @throws Exception in case of failure in test
+     *
+     * @see TemplateTransformer#changeTransformExpression()
+     */
+    @Test
+    public void test_changeTransformExpression() throws Exception {
+        String genSource = new TemplateTransformer().changeTransformExpression(source, "$");
+        assertTrue(genSource.contains("$#"));
+        assertTrue(genSource.contains("comment"));
+        assertTrue(genSource.contains("${test6}"));
+        assertFalse(genSource.contains("$$"));
+        assertTrue(genSource.contains("${test1}"));
+        assertTrue(genSource.contains("${test2}"));
+        assertTrue(genSource.contains("${test3}"));
+        assertTrue(genSource.contains("${test4}"));
+        assertTrue(genSource.contains("${test5}"));
+    }
+
+}