[Title] add hybrid builder logic
authorTaeyoung Son <taeyoung2.son@samsung.com>
Mon, 13 May 2013 04:41:50 +0000 (13:41 +0900)
committerTaeyoung Son <taeyoung2.son@samsung.com>
Mon, 13 May 2013 04:48:12 +0000 (13:48 +0900)
[Desc.]
[Issue]

Change-Id: I56024f642a526a50c1db1b00856ca9e54407785f

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

index f00a7b2..3976e33 100755 (executable)
@@ -165,11 +165,11 @@ extends AbstractLauncher
         initExcludes(cmdLine);
 
         BuildProcess buildProcess = new BuildProcess();
-        ResourceLayer startLayer = new ResourceLayer("start", new VirtualFileHandler());
+        ResourceLayer startLayer = new ResourceLayer(RESOURCE_LAYER_START, new VirtualFileHandler());
 
         generateBuilders(cmdLine, buildProcess, startLayer);
 
-        Resource[] resources = getResources(baseDir
+        Resource[] resources = getResources(cmdLine, baseDir
                                             , startLayer
                                             , null
                                             , excludes.toArray(new String[excludes.size()]));
@@ -202,16 +202,22 @@ extends AbstractLauncher
     private void generateBuilders(CommandLine cmdLine
                                             , BuildProcess buildProcess
                                             , ResourceLayer parentLayer) {
-        if (cmdLine.hasOption(OPT_NAME_OPTIMIZE)) {
-            addOptimizingBuilders(buildProcess, parentLayer);
-        }
 
         boolean isExcludeUIFW = cmdLine.hasOption(OPT_NAME_EXCLUDE_UI_FRAMEWORK);
         if (isExcludeUIFW) {
             addUIFWBuilder(isExcludeUIFW, buildProcess, parentLayer);
         }
 
-        ResourceLayer lastLayer = null;
+        boolean hasReference = cmdLine.hasOption(OPT_NAME_REFERENCE_PROJECT);
+        if (hasReference) {
+            //TODO: add new HybridBuilder
+        }
+
+        if (cmdLine.hasOption(OPT_NAME_OPTIMIZE)) {
+            addOptimizingBuilders(buildProcess, parentLayer);
+        }
+
+        ResourceLayer lastLayer = parentLayer;
         if (buildProcess.getLastBuilder()!=null) {
             lastLayer = buildProcess.getLastBuilder().getResourceLayer();
         }
@@ -232,18 +238,35 @@ extends AbstractLauncher
         buildProcess.addBuilder(toFSBuilder);
     }
 
-    private Resource[] getResources(String baseDir
-                                        , ResourceLayer resourceLayer
+    private Resource[] getResources(CommandLine cmdLine
+                                        , String baseDir
+                                        , ResourceLayer layer
                                         , String[] includes
                                         , String[] excludes) throws IOException {
-
-        List<File> files = FileUtil.findFiles(new File(baseDir), ".*", true);
+//TODO: modify relative path
         List<Resource> resources = new ArrayList<Resource>();
-        FileHandler fh = resourceLayer.getFileHandler();
-
         setIncludes(includes);
         setExcludes(excludes);
 
+        addResources(baseDir, layer, resources);
+
+        if (cmdLine.hasOption(OPT_NAME_REFERENCE_PROJECT)) {
+            ResourceLayer referenceLayer = new ResourceLayer(WebConstant.RESOURCE_LAYER_REFERENCE_PROJECT, layer, layer.getFileHandler());
+            String refPath = cmdLine.getOptionValue(OPT_NAME_REFERENCE_PROJECT);
+
+            addResources(refPath, referenceLayer, resources);
+            layer = referenceLayer;
+        }
+
+        return resources.toArray(new Resource[resources.size()]);
+    }
+
+    private void addResources(String baseDir, ResourceLayer layer, List<Resource> resources) throws IOException {
+        List<File> files = null;
+        files = FileUtil.findFiles(new File(baseDir), ".*", true);
+        FileHandler fh = layer.getFileHandler();
+
+
         for (File file : files) {
             String filePath = file.getPath();
             if (!FilenameUtil.equals(filePath, baseDir)
@@ -251,7 +274,7 @@ extends AbstractLauncher
                 logger.debug("Ignore {}", filePath);
                 continue;
             }
-            Resource resource = new Resource(resourceLayer, filePath);
+            Resource resource = new Resource(layer, filePath);
 
             String dir = null;
             if (file.isFile()) {
@@ -273,7 +296,6 @@ extends AbstractLauncher
             }
             resources.add(resource);
         }
-        return resources.toArray(new Resource[resources.size()]);
     }
 
     private void setIncludes(String[] includes) {