private boolean canAdd(IFeatureModel candidate) {
    ISiteFeature[] features = fModel.getSite().getFeatures();
    IFeature cfeature = candidate.getFeature();

    for (int i = 0; i < features.length; i++) {
      ISiteFeature bfeature = features[i];
      if (bfeature.getId().equals(cfeature.getId())
          && bfeature.getVersion().equals(cfeature.getVersion())) return false;
    }
    return true;
  }
 private static boolean isFeaturePatch(IFeature feature) {
   IFeatureImport[] imports = feature.getImports();
   for (int i = 0; i < imports.length; i++) {
     if (imports[i].isPatch()) return true;
   }
   return false;
 }
 public static ISiteFeature createSiteFeature(ISiteModel model, IFeatureModel featureModel)
     throws CoreException {
   IFeature feature = featureModel.getFeature();
   ISiteFeature sfeature = model.getFactory().createFeature();
   sfeature.setId(feature.getId());
   sfeature.setVersion(feature.getVersion());
   // sfeature.setURL(model.getBuildModel().getSiteBuild().getFeatureLocation()
   // + "/" + feature.getId() + "_" + feature.getVersion() + ".jar");
   // //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
   sfeature.setURL(
       "features/"
           + feature.getId()
           + "_"
           + formatVersion(feature.getVersion())
           + ".jar"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
   sfeature.setOS(feature.getOS());
   sfeature.setWS(feature.getWS());
   sfeature.setArch(feature.getArch());
   sfeature.setNL(feature.getNL());
   sfeature.setIsPatch(isFeaturePatch(feature));
   return sfeature;
 }