11package 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 ;
36import de .ovgu .featureide .fm .core .base .*;
47import de .ovgu .featureide .fm .core .base .impl .DefaultFeatureModelFactory ;
58import de .ovgu .featureide .fm .core .base .impl .FMFactoryManager ;
69import de .ovgu .featureide .fm .core .base .impl .Feature ;
10+ import de .ovgu .featureide .fm .core .job .monitor .ConsoleTimeMonitor ;
711import net .ssehub .kernel_haven .variability_model .VariabilityModel ;
812import vevos .io .Resources ;
913import 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