Package com.adaptrex.tools.framework.javascript

Source Code of com.adaptrex.tools.framework.javascript.CompileService

package com.adaptrex.tools.framework.javascript;

import java.io.IOException;

import com.adaptrex.tools.Tools;
import com.adaptrex.tools.environment.Environment;
import com.adaptrex.tools.environment.IEnvironmentService;
import com.adaptrex.tools.log.ILogService;
import com.adaptrex.tools.log.Log;
import com.adaptrex.tools.webapp.Page;
import com.adaptrex.tools.webapp.Webapp;
import com.google.inject.Inject;
import com.google.inject.Singleton;

@Singleton
public class CompileService implements ICompileService {

  private IEnvironmentService environmentService;
  private ILogService logService;
 
  @Inject
  public CompileService(IEnvironmentService environmentService, ILogService logService) {
    this.environmentService = environmentService;
    this.logService = logService;
  }
 
  @Override
  public boolean createBootstrap(Webapp webapp, String framework) throws IOException {
    Environment env = environmentService.getEnvironment();
   
    boolean isExt = framework.equals(JavaScriptFramework.EXTJS);
    JavaScriptFramework javaScriptFramework = isExt ? webapp.getExt() : webapp.getSenchaTouch();   
    AdaptrexJS adaptrexJS = webapp.getAdaptrex();
    if (adaptrexJS == null) {
      logService.log(Log.ERROR, "Generate Bootstrap Error",
          "The adaptrex-js folder required to generate your bootstrap file is missing"
          );
      return false;
    }
   
   
    String sdkFolder = isExt ? "extjs" : "sencha-touch";
   
    String sdkPath = javaScriptFramework.getFullPath();
    String adaptrexSdkPath = adaptrexJS.getFullPath() + "/" + sdkFolder;
    String dependencyFile = isExt ? "ExtDependencies.js" : "SenchaTouchDependencies.js";
    String webappSrcAbsolutePath = webapp.getFullPath() + "/src/main/webapp";
   
    javaScriptFramework.cleanCmdBugs();
    try {
      String[] cmdString = {env.getCmdPath() + "/sencha",
        "-d",
        "-sdk=" + sdkPath,
        "compile",
        "-classpath=" +
          adaptrexSdkPath + "/src",
        "exclude","-all",
        "and","include","-r","-f",dependencyFile,
        "and","exclude","-t","core",
        "and","include","-na","Adaptrex.override",
        "and","exclude","-f",dependencyFile,
        "and","concat",webappSrcAbsolutePath + "/adaptrex/" + sdkFolder + "/bootstrap-debug.js",
        "and","concat","-compress",webappSrcAbsolutePath + "/adaptrex/" + sdkFolder + "/bootstrap.js"
      };
     
      ProcessBuilder processBuilder = new ProcessBuilder(cmdString);
      processBuilder.redirectErrorStream();
      Process cmd = processBuilder.start();
      Tools.StreamGobbler gobbler = new Tools.StreamGobbler(cmd.getInputStream());
          gobbler.start();
      cmd.waitFor();
     
      String compileOutput = gobbler.getGobblerOutput();
      if (compileOutput.contains("[ERR]")) {
        logService.log(Log.ERROR, "Unspecified Error", compileOutput);
        return false;
      }
    } catch (Exception e) {
      logService.log(Log.ERROR, "Error: " + e.getClass().getName(), e.getMessage());
      return false;
    } finally {
      javaScriptFramework.restoreCmdBugs();
    }
   
    logService.log(Log.SUCCESS, "Created bootstrap for " + adaptrexJS.getFolderName() +
        " and " + javaScriptFramework.getFolderName());
    return true;
  }

  @Override
  public boolean compileWebapp(Webapp webapp) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean compilePage(Webapp webapp, Page page) {
    // TODO Auto-generated method stub
    return false;
  }

}
TOP

Related Classes of com.adaptrex.tools.framework.javascript.CompileService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.