/** * Recursively gets the ID of required features of this feature and adds them to the list * * @param model feature model to get requirements of * @param requiredFeatureList collector for the required features */ private void getFeatureDependencies( IFeatureModel model, IFeatureModel[] allFeatures, ArrayList requiredFeatureList) { IFeature feature = model.getFeature(); IFeatureImport[] featureImports = feature.getImports(); for (int i = 0; i < featureImports.length; i++) { if (featureImports[i].getType() == IFeatureImport.FEATURE) { for (int j = 0; j < allFeatures.length; j++) { if (allFeatures[j].getFeature().getId().equals(featureImports[i].getId())) { requiredFeatureList.add(allFeatures[j]); getFeatureDependencies(allFeatures[j], allFeatures, requiredFeatureList); break; } } } } IFeatureChild[] featureIncludes = feature.getIncludedFeatures(); for (int i = 0; i < featureIncludes.length; i++) { requiredFeatureList.add(featureIncludes[i].getId()); for (int j = 0; j < allFeatures.length; j++) { if (allFeatures[j].getFeature().getId().equals(featureIncludes[i].getId())) { requiredFeatureList.add(allFeatures[j]); getFeatureDependencies(allFeatures[j], allFeatures, requiredFeatureList); break; } } } }
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; }