Skip to content

Instantly share code, notes, and snippets.

@manuelleduc
Last active November 28, 2017 16:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manuelleduc/14227dfa89094b6b09301595ffd7324f to your computer and use it in GitHub Desktop.
Save manuelleduc/14227dfa89094b6b09301595ffd7324f to your computer and use it in GitHub Desktop.
Simple feature model instantiation and configuration with featureIDE libraries
package fr.inria.diverse.melange;
import org.sat4j.specs.TimeoutException;
import de.ovgu.featureide.fm.core.base.IFeatureModel;
import de.ovgu.featureide.fm.core.base.impl.DefaultFeatureModelFactory;
import de.ovgu.featureide.fm.core.base.impl.FMFactoryManager;
import de.ovgu.featureide.fm.core.base.impl.Feature;
import de.ovgu.featureide.fm.core.configuration.Configuration;
public class SimpleFeatureModel {
public static void main(final String[] args) throws TimeoutException {
final IFeatureModel fm = FMFactoryManager.getEmptyFeatureModel();
final DefaultFeatureModelFactory i = DefaultFeatureModelFactory.getInstance();
final Feature fexp = i.createFeature(fm, "Expression");
final Feature fas = i.createFeature(fm, "AS");
final Feature fadd = i.createFeature(fm, "Add");
fm.addFeature(fexp);
fm.addFeature(fas);
fm.addFeature(fadd);
fm.getStructure().setRoot(fexp.getStructure());
fexp.getStructure().setMandatory(true);
fas.getStructure().setParent(fexp.getStructure());
fas.getStructure().setMandatory(false);
fexp.getStructure().getChildren().add(fas.getStructure());
fadd.getStructure().setMandatory(false);
fadd.getStructure().setParent(fexp.getStructure());
fexp.getStructure().getChildren().add(fadd.getStructure());
final Configuration conf = new Configuration(fm);
System.out.println("Can be valid: " + conf.canBeValid());
System.out.println("Solutions: " + conf.number());
System.out.println(conf.getSolutions(Long.valueOf(conf.number()).intValue()));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment