Package org.eclim.installer.step

Source Code of org.eclim.installer.step.FeatureProvider

/**
* Copyright (C) 2005 - 2014  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.step;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import java.util.ArrayList;

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

import org.formic.Installer;

import org.formic.wizard.step.shared.Feature;

/**
* Provider to supply avaiable features to FeatureListStep.
*
* @author Eric Van Dewoestine
*/
public class FeatureProvider
  implements org.formic.wizard.step.shared.FeatureProvider,
             PropertyChangeListener
{
  public static final String[] FEATURES = {
    "jdt", "adt", "wst", "cdt",
    "dltk", "dltkruby", "pdt",
    "pydev", "sdt211", "groovy"
  };

  private static final String[][] FEATURES_DEPENDS = {
    null, {"jdt", "wst"}, null, null,
    null, {"dltk"}, {"dltk", "wst"},
    null, {"jdt"}, {"jdt"}
  };

  private static final String[][] FEATURES_EXCLUSIVE = {
    null, null, null, null,
    null, null, null,
    null, null, null
  };

  @Override
  public Feature[] getFeatures()
  {
    EclipseInfo info = (EclipseInfo)
      Installer.getContext().getValue("eclipse.info");

    boolean[] enabled = new boolean[FEATURES.length];
    for (int ii = 0; ii < FEATURES.length; ii++){
      enabled[ii] = false;
      enabled[ii] = info.getUninstalledDependencies(FEATURES[ii]).size() == 0;
    }

    ArrayList<Feature> features = new ArrayList<Feature>();
    feature:
    for (int ii = 0; ii < FEATURES.length; ii++){
      // check if the feature has any dependency matching, if so, exclude the
      // feature if the dependency exists but doesn't match
      for(Dependency dep : info.getDependencies(FEATURES[ii])){
        if (!dep.isInstalled()){
          continue;
        }
        String match = dep.getMatchVersion();
        if (match != null && match.length() > 0){
          Matcher matcher = Pattern.compile(match)
            .matcher(dep.getFeature().getFullVersion());
          if (!matcher.find()){
            continue feature;
          }
        }
      }

      Feature feature = new Feature(
          FEATURES[ii],
          enabled[ii],
          FEATURES_DEPENDS[ii],
          FEATURES_EXCLUSIVE[ii]);

      String status = info.getStatus(FEATURES[ii]);
      if (status != null){
        feature.setAvailable(false);
        feature.setEnabled(false);
        feature.setInfo(
            Installer.getString(
              "feature.status." + status,
              Installer.getString("eclipse.version")));
      }

      features.add(feature);
    }

    return features.toArray(new Feature[features.size()]);
  }

  @Override
  public void propertyChange(PropertyChangeEvent evt)
  {
    // do nothing for now.
  }
}
TOP

Related Classes of org.eclim.installer.step.FeatureProvider

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.