Package flex2.tools.oem.internal

Source Code of flex2.tools.oem.internal.ApplicationCompilerConfiguration

/*
*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You 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.
*
*/

package flex2.tools.oem.internal;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import flex2.compiler.common.Configuration;
import flex2.compiler.common.ConfigurationPathResolver;
import flex2.compiler.config.ConfigurationBuffer;
import flex2.compiler.config.ConfigurationException;
import flex2.compiler.config.ConfigurationInfo;
import flex2.compiler.config.ConfigurationValue;
import flex2.compiler.io.VirtualFile;
import flex2.tools.ToolsConfiguration;

/**
* A configuration that extends ToolsConfiguration by adding options
* for -file-specs, -include-resource-bundles, -load-config, and
* -projector.
*
* @version 2.0.1
* @author Clement Wong
*/
public class ApplicationCompilerConfiguration extends ToolsConfiguration
{
  public static Map<String, String> getAliases()
    {
        Map<String, String> map = new HashMap<String, String>();
      map.putAll(Configuration.getAliases());
      map.remove("o");
    return map;
    }
 
  public void validate(ConfigurationBuffer cfgbuf) throws ConfigurationException
  {
        super.validate( cfgbuf );

        String targetFile = getTargetFile();

    if (targetFile == null)
    {
        throw new ConfigurationException.MustSpecifyTarget( null, null, -1);
    }
  }

    private VirtualFile getVirtualFile(String file, ConfigurationValue cfgval)
    {
      try
      {
        return ConfigurationPathResolver.getVirtualFile( file, configResolver, cfgval );
      }
      catch (ConfigurationException ex)
      {
        return null;
      }
    }

  //
  // 'file-specs' option
  //

  // list of filespecs, default var for command line
  private List<String> fileSpecs = new ArrayList<String>();

  public List<String> getFileSpecs()
  {
    return fileSpecs;
  }

  public void cfgFileSpecs(ConfigurationValue cv, List<String> args) throws ConfigurationException
  {
    this.fileSpecs.addAll( args );
  }

    public static ConfigurationInfo getFileSpecsInfo()
    {
        return new ConfigurationInfo( -1, new String[] { "path-element" } )
        {
            public boolean allowMultiple()
            {
                return true;
            }

            public boolean isHidden()
            {
              return true;
            }
        };
    }

    private String resourceModulePath;

    public String getOutput()
    {
        return getTargetFile();
    }

  public String getTargetFile()
  {
        // If there are no target files but there are included resource bundles then
        // this is a resource module so generate a target file name.
        if (fileSpecs.size() == 0 && getIncludeResourceBundles().size() > 0)
        {
            if (resourceModulePath == null)
            {
//                resourceModulePath = I18nUtils.getGeneratedResourceModule(this).getPath();
            }
           
            return resourceModulePath;
        }
       
        return (fileSpecs.size() > 0) ? (String) fileSpecs.get( fileSpecs.size() - 1 ) : null;
  }

    //
  // 'generate-link-report' option
  //
 
  private boolean generateLinkReport;
 
  public boolean generateLinkReport()
  {
    return generateLinkReport || super.generateLinkReport();
  }
 
  public void keepLinkReport(boolean b)
  {
    generateLinkReport = b;
  }

    //
  // 'generate-size-report' option
  //
 
  private boolean generateSizeReport;
 
  public boolean generateSizeReport()
  {
    return generateSizeReport || super.generateSizeReport();
  }
 
  public void keepSizeReport(boolean b)
  {
    generateSizeReport = b;
  }
 
    //
    // 'include-resource-bundles' option
    //
   
    private List resourceBundles = new LinkedList();

    public List getIncludeResourceBundles()
    {
        return resourceBundles;
    }

    @SuppressWarnings("unchecked")
    public void cfgIncludeResourceBundles(ConfigurationValue val, List includeResourceBundles)
    {
        resourceBundles.addAll(toQNameString(includeResourceBundles));
    }

    public static ConfigurationInfo getIncludeResourceBundlesInfo()
    {
        return new ConfigurationInfo( -1, new String[] { "bundle" } )
        {
            public boolean allowMultiple()
            {
                return true;
            }
        };
    }
   
  //
  // 'load-config' option
  //

  private VirtualFile configFile;

  public VirtualFile getLoadConfig()
  {
    return configFile;
  }

  // dummy, ignored - pulled out of the buffer
  public void cfgLoadConfig(ConfigurationValue cv, String filename) throws ConfigurationException
  {
    // C: resolve the flex-config.xml path to a VirtualFile so incremental compilation can detect timestamp change.
    configFile = ConfigurationPathResolver.getVirtualFile(filename,
                                                          configResolver,
                                                          cv);
  }

  public static ConfigurationInfo getLoadConfigInfo()
    {
        return new ConfigurationInfo( 1, "filename" )
        {
            public boolean allowMultiple()
            {
                return true;
            }
        };
    }

    //
  // 'projector' option
  //
 
    private VirtualFile projector;

    public VirtualFile getProjector()
    {
        return projector;
    }

  public void cfgProjector( ConfigurationValue cfgval, String path )
  {
    projector = getVirtualFile(path, cfgval);
  }

    public static ConfigurationInfo getProjectorInfo()
    {
        return new ConfigurationInfo()
        {
            public boolean isHidden()
            {
                return true;
            }
        };
    }
}

TOP

Related Classes of flex2.tools.oem.internal.ApplicationCompilerConfiguration

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.