[Title] add hybridAppCLIBuilder
authorTaeyoung Son <taeyoung2.son@samsung.com>
Mon, 13 May 2013 13:46:43 +0000 (22:46 +0900)
committerTaeyoung Son <taeyoung2.son@samsung.com>
Tue, 14 May 2013 03:42:27 +0000 (12:42 +0900)
        remove unnecessary methods
        modify abstract path to relative path
[Desc.]
[Issue]

Change-Id: Iba292395bfcd51dfbf97015f627e94f7673e6e98

org.tizen.cli/src/org/tizen/cli/exec/web/build/Main.java

index 3976e33..4115c28 100755 (executable)
@@ -35,13 +35,10 @@ import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.tizen.cli.exec.AbstractLauncher;
-import org.tizen.cli.exec.Help;
 import org.tizen.common.FactoryWithArgument;
 import org.tizen.common.builder.BuildProcess;
 import org.tizen.common.builder.Resource;
 import org.tizen.common.builder.ResourceLayer;
-import org.tizen.common.core.command.Executor;
-import org.tizen.common.core.command.zip.ZipCommand;
 import org.tizen.common.file.FileHandler;
 import org.tizen.common.file.FileHandler.Attribute;
 import org.tizen.common.file.Filter;
@@ -51,6 +48,7 @@ import org.tizen.common.file.filter.WildCardFilterFactory;
 import org.tizen.common.util.FileUtil;
 import org.tizen.common.util.FilenameUtil;
 import org.tizen.common.util.IOUtil;
+import org.tizen.web.builder.HybridAppCLIBuilder;
 import org.tizen.web.builder.JavaScriptMinifier;
 import org.tizen.web.builder.UIFWBuilder;
 import org.tizen.web.builder.WorkingCopyBuilder;
@@ -86,10 +84,6 @@ extends AbstractLauncher
 
     //for build framework(org.tizen.common.builder)
     protected static final String RESOURCE_LAYER_START = "start";
-    protected static final String RESOURCE_LAYER_OPTIMIZE = "optimize";
-    protected static final String RESOURCE_LAYER_MINIFY = "minify";
-    protected static final String RESOURCE_LAYER_MINIFY_JS = RESOURCE_LAYER_MINIFY+".js";
-    protected static final String RESOURCE_LAYER_UIFW = "ui-framework";
     protected static final String RESOURCE_LAYER_END = "end";
 
     private static final String[] DEFAULT_EXCLUDES = {".build"+File.separator+"*"
@@ -167,13 +161,12 @@ extends AbstractLauncher
         BuildProcess buildProcess = new BuildProcess();
         ResourceLayer startLayer = new ResourceLayer(RESOURCE_LAYER_START, new VirtualFileHandler());
 
-        generateBuilders(cmdLine, buildProcess, startLayer);
-
         Resource[] resources = getResources(cmdLine, baseDir
                                             , startLayer
                                             , null
                                             , excludes.toArray(new String[excludes.size()]));
 
+        generateBuilders(cmdLine, buildProcess, startLayer);
         if (buildProcess.getLastBuilder() != null) {
             logger.debug("start build process");
             buildProcess.build(resources);
@@ -199,34 +192,49 @@ extends AbstractLauncher
         }
     }
 
-    private void generateBuilders(CommandLine cmdLine
+    public void generateBuilders(CommandLine cmdLine
                                             , BuildProcess buildProcess
                                             , ResourceLayer parentLayer) {
+        ResourceLayer lastLayer = parentLayer;
 
         boolean isExcludeUIFW = cmdLine.hasOption(OPT_NAME_EXCLUDE_UI_FRAMEWORK);
         if (isExcludeUIFW) {
-            addUIFWBuilder(isExcludeUIFW, buildProcess, parentLayer);
+            addUIFWBuilder(isExcludeUIFW, buildProcess, lastLayer);
         }
 
         boolean hasReference = cmdLine.hasOption(OPT_NAME_REFERENCE_PROJECT);
         if (hasReference) {
-            //TODO: add new HybridBuilder
+            lastLayer = getLastResourceLayer(buildProcess, lastLayer);
+            addHybridBuilder(buildProcess, lastLayer);
         }
 
         if (cmdLine.hasOption(OPT_NAME_OPTIMIZE)) {
-            addOptimizingBuilders(buildProcess, parentLayer);
+            lastLayer = getLastResourceLayer(buildProcess, lastLayer);
+            addOptimizingBuilders(buildProcess, lastLayer);
         }
 
-        ResourceLayer lastLayer = parentLayer;
-        if (buildProcess.getLastBuilder()!=null) {
-            lastLayer = buildProcess.getLastBuilder().getResourceLayer();
-        }
+        lastLayer = getLastResourceLayer(buildProcess, lastLayer);
         addLastbuilder(buildProcess, lastLayer);
     }
 
+    private void addHybridBuilder(BuildProcess buildProcess, ResourceLayer lastLayer) {
+        ResourceLayer layer = new ResourceLayer(HybridAppCLIBuilder.RESOURCE_LAYER_NAME
+                                                    , lastLayer
+                                                    , lastLayer.getFileHandler());
+        HybridAppCLIBuilder hybridAppBuilder = new HybridAppCLIBuilder(layer);
+        buildProcess.addBuilder(hybridAppBuilder);
+    }
+
+    private ResourceLayer getLastResourceLayer(BuildProcess buildProcess, ResourceLayer defaultLayer) {
+        ResourceLayer parentLayer = buildProcess.getLastResourceLayer();
+        return (parentLayer != null) ? parentLayer : defaultLayer;
+    }
+
     private void addUIFWBuilder(boolean isExclude, BuildProcess buildProcess,
             ResourceLayer parentLayer) {
-        ResourceLayer layer = new ResourceLayer(RESOURCE_LAYER_UIFW, parentLayer, parentLayer.getFileHandler());
+        ResourceLayer layer = new ResourceLayer(UIFWBuilder.RESOURCE_LAYER_NAME
+                                                    , parentLayer
+                                                    , parentLayer.getFileHandler());
         UIFWBuilder uifwBuilder = new UIFWBuilder(isExclude, layer);
         buildProcess.addBuilder(uifwBuilder);
     }
@@ -251,7 +259,9 @@ extends AbstractLauncher
         addResources(baseDir, layer, resources);
 
         if (cmdLine.hasOption(OPT_NAME_REFERENCE_PROJECT)) {
-            ResourceLayer referenceLayer = new ResourceLayer(WebConstant.RESOURCE_LAYER_REFERENCE_PROJECT, layer, layer.getFileHandler());
+            ResourceLayer referenceLayer = new ResourceLayer(HybridAppCLIBuilder.RESOURCE_LAYER_REFERENCE_NAME
+                                                                , layer
+                                                                , layer.getFileHandler());
             String refPath = cmdLine.getOptionValue(OPT_NAME_REFERENCE_PROJECT);
 
             addResources(refPath, referenceLayer, resources);
@@ -268,19 +278,20 @@ extends AbstractLauncher
 
 
         for (File file : files) {
-            String filePath = file.getPath();
-            if (!FilenameUtil.equals(filePath, baseDir)
-                    && !filter.accept(baseDir, FilenameUtil.getRelativePath(baseDir, filePath))) {
-                logger.debug("Ignore {}", filePath);
+            String fileRelativePath = FilenameUtil.getRelativePath(baseDir, file.getPath());
+
+            if (!FilenameUtil.equals(file.getPath(), baseDir)
+                    && !filter.accept(baseDir, fileRelativePath)) {
+                logger.debug("Ignore {}", fileRelativePath);
                 continue;
             }
-            Resource resource = new Resource(layer, filePath);
+            Resource resource = new Resource(layer, fileRelativePath);
 
             String dir = null;
             if (file.isFile()) {
-                dir = file.getParent();
+                dir = FilenameUtil.removeTailingPath(fileRelativePath, 1);
             } else {
-                dir = filePath;
+                dir = fileRelativePath;
             }
 
             if (fh instanceof VirtualFileHandler) {
@@ -316,127 +327,16 @@ extends AbstractLauncher
         }
     }
 
-    /**
-     * Archive <code>baseDir</code> to <code>wgtPath</code> including
-     * <code>includes</code> and excluding <code>excludes</code>
-     * 
-     * @param wgtPath wgt file path
-     * @param baseDir directory to root
-     * @param includes includes file pattern
-     * @param excludes excludes file pattern
-     */
-    private void zipFiles(final String wgtPath, final String baseDir, final Resource[] resources) {
-        final ZipCommand command = new ZipCommand(baseDir, resources, wgtPath);
-
-        final Executor executor = getExecutor();
-        executor.execute(command);
-    }
-
     private void addOptimizingBuilders(BuildProcess buildProcess, ResourceLayer parentLayer ) {
         if (buildProcess == null) {
             return;
         }
-        /*
-         * 1. optimization builder
-         */
-        ResourceLayer optimizeLayer = new ResourceLayer(RESOURCE_LAYER_OPTIMIZE, parentLayer, parentLayer.getFileHandler());
-        ResourceLayer minifyLayer = new ResourceLayer(RESOURCE_LAYER_MINIFY, optimizeLayer, parentLayer.getFileHandler());
 
         // add js minify builder
-        ResourceLayer jsMinLayer = new ResourceLayer(RESOURCE_LAYER_MINIFY_JS, minifyLayer, parentLayer.getFileHandler());
+        ResourceLayer jsMinLayer = new ResourceLayer(JavaScriptMinifier.RESOURCE_LAYER_NAME
+                                                        , parentLayer
+                                                        , parentLayer.getFileHandler());
         JavaScriptMinifier jsMin = new JavaScriptMinifier(jsMinLayer);
         buildProcess.addBuilder(jsMin);
     }
-
-    /**
-     * Check if <code>path</code> exists
-     * 
-     * @param path file path
-     * 
-     * @return <code>true</code> if <code>path</code> exists
-     * 
-     * @throws IOException If <code>path</code> can't be accessed
-     */
-    protected
-    boolean
-    exists(
-            final String path
-            )
-                    throws IOException
-                    {
-        return getFileHandler().is( path, Attribute.EXISTS );
-                    }
-
-    /**
-     * Check if <code>path</code> is Tizen web project root
-     * 
-     * @param path directory path to check
-     * 
-     * @return <code>true</code> if <code>path</code> is Tize web project root
-     * @throws IOException If <code>path</code>'s sub files can't be accessed
-     */
-    protected
-    boolean
-    isValidRoot(
-            final String path
-            )
-                    throws IOException
-                    {
-        final FileHandler fileHandler = getFileHandler();
-        final String projectFilePath = FilenameUtil.addTailingPath( path, ".project" );
-        return fileHandler.is( projectFilePath, Attribute.EXISTS );
-                    }
-
-    /**
-     * Return default excludes file patterns
-     * 
-     * @return default excludes file patterns
-     */
-    protected
-    String[] getDefaultExcludes()
-    {
-        return new String[] { ".*", "*.wgt" };
-    }
-
-    /**
-     * Archive <code>baseDir</code> to <code>wgtPath</code>
-     * 
-     * including <code>includes</code> and excluding <code>excludes</code>
-     * 
-     * @param wgtPath wgt file path
-     * @param baseDir directory to root
-     * @param includes includes file pattern
-     * @param excludes excludes file pattern
-     */
-    protected
-    void
-    zipFiles(
-            final String wgtPath,
-            final String baseDir
-            )
-    {
-        zipFiles(wgtPath, baseDir, null);
-    }
-
-    /* (non-Javadoc)
-     * @see org.tizen.cli.exec.AbstractLauncher#createHelp()
-     */
-    @Override
-    protected Help createHelp() {
-        Help help = super.createHelp();
-
-        help.setSyntax( help.getSyntax() + getSyntax() );
-        return help;
-    }
-
-    /* (non-Javadoc)
-     * @see org.tizen.cli.exec.AbstractLauncher#getSyntax()
-     */
-    @Override
-    protected
-    String
-    getSyntax()
-    {
-        return " [options]";
-    }
 }