Skip to content

Commit c90e400

Browse files
committed
FeatureModel::isValid
1 parent ac79915 commit c90e400

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

src/main/java/vevos/util/fide/FeatureModelUtils.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package vevos.util.fide;
22

3+
import de.ovgu.featureide.fm.core.analysis.cnf.CNF;
4+
import de.ovgu.featureide.fm.core.analysis.cnf.analysis.HasSolutionAnalysis;
5+
import de.ovgu.featureide.fm.core.analysis.cnf.formula.FeatureModelFormula;
36
import de.ovgu.featureide.fm.core.base.*;
47
import de.ovgu.featureide.fm.core.base.impl.DefaultFeatureModelFactory;
58
import de.ovgu.featureide.fm.core.base.impl.FMFactoryManager;
69
import de.ovgu.featureide.fm.core.base.impl.Feature;
10+
import de.ovgu.featureide.fm.core.job.monitor.ConsoleTimeMonitor;
711
import net.ssehub.kernel_haven.variability_model.VariabilityModel;
812
import vevos.io.Resources;
913
import vevos.util.Logger;
@@ -180,4 +184,22 @@ private static void amendDimacs(Path pathToFile) throws IOException {
180184
}
181185
Files.write(pathToFile, amendedLines);
182186
}
187+
188+
public static boolean isValid(IFeatureModel fm) {
189+
// final CNF cnf = new FeatureModelCNF(fm);
190+
final FeatureModelFormula featureModelFormula = new FeatureModelFormula(fm);
191+
final CNF cnf = featureModelFormula.getCNF();
192+
return isValid(cnf);
193+
}
194+
195+
public static boolean isValid(CNF cnf) {
196+
final HasSolutionAnalysis hasSolutionAnalysis = new HasSolutionAnalysis(cnf);
197+
hasSolutionAnalysis.setTimeout(HOUR); // hour
198+
try {
199+
return hasSolutionAnalysis.analyze(new ConsoleTimeMonitor<>());
200+
} catch (Exception e) {
201+
Logger.error("Analysis failed", e);
202+
}
203+
return false;
204+
}
183205
}

0 commit comments

Comments
 (0)