Package org.eclim.installer.ant

Source Code of org.eclim.installer.ant.FeatureSet

/**
* Copyright (C) 2005 - 2013  Eric Van Dewoestine
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.eclim.installer.ant;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.tools.ant.types.PatternSet;

import org.formic.InstallContext;
import org.formic.Installer;

/**
* PatternSet built to include files based on selected features.
*
* @author Eric Van Dewoestine
*/
public class FeatureSet
  extends PatternSet
{
  private static final Pattern VERSIONED = Pattern.compile("\\d+$");

  public FeatureSet()
  {
    super();

    // standard includes
    createInclude().setName("**/org.eclim/**/*");
    createInclude().setName("**/org.eclim_*/**/*");
    createInclude().setName("**/org.eclim.core/**/*");
    createInclude().setName("**/org.eclim.core_*/**/*");
    createInclude().setName("**/org.eclim.vimplugin/**/*");
    createInclude().setName("**/org.eclim.vimplugin_*/**/*");

    // feature based includes
    InstallContext context = Installer.getContext();
    String[] keys = context.getKeysByPrefix("featureList");
    for (int ii = 0; ii < keys.length; ii++){
      String key = keys[ii];
      Boolean value = Boolean.valueOf(context.getValue(key).toString());
      if(value.booleanValue()){
        createFeatureIncludes(key);

        // handle per version features by removing the version suffix.
        Matcher matcher = VERSIONED.matcher(key);
        if (matcher.find()){
          createFeatureIncludes(matcher.replaceFirst(""));
        }
      }
    }
  }

  private void createFeatureIncludes(String feature)
  {
    String name = "**/org.eclim." + feature.substring(feature.indexOf('.') + 1);
    createInclude().setName(name + "/**/*");
    createInclude().setName(name + "_*/**/*");
  }
}
TOP

Related Classes of org.eclim.installer.ant.FeatureSet

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.