//This product is provided under the terms of EPL (Eclipse Public License)
//version 1.0.
//
//The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.core;
import org.dtangler.core.analysis.configurableanalyzer.ConfigurableDependencyAnalyzer;
import org.dtangler.core.analysisresult.AnalysisResult;
import org.dtangler.core.configuration.Arguments;
import org.dtangler.core.dependencies.Dependencies;
import org.dtangler.core.dependencies.DependencyGraph;
import org.dtangler.core.dependencyengine.DependencyEngine;
import org.dtangler.core.dependencyengine.DependencyEngineFactory;
import org.dtangler.core.dsmengine.DsmEngine;
import org.dtangler.core.input.ArgumentBuilder;
import org.dtangler.core.textui.DSMWriter;
import org.dtangler.core.textui.ViolationWriter;
import org.dtangler.core.textui.Writer;
public class CommandLineApp {
private final Writer writer;
public CommandLineApp(Writer writer) {
this.writer = writer;
}
public boolean run(String[] args) {
if (args.length == 0)
throw new MissingArgumentsException();
return run(new ArgumentBuilder().build(args));
}
public boolean run(Arguments arguments) {
DependencyEngine engine = new DependencyEngineFactory()
.getDependencyEngine(arguments);
Dependencies dependencies = engine.getDependencies(arguments);
DependencyGraph dependencyGraph = dependencies
.getDependencyGraph();
AnalysisResult analysisResult = getAnalysisResult(arguments,
dependencies);
printDsm(dependencyGraph, analysisResult);
return analysisResult.isValid();
}
private AnalysisResult getAnalysisResult(Arguments arguments,
Dependencies dependencies) {
return new ConfigurableDependencyAnalyzer(arguments)
.analyze(dependencies);
}
private void printDsm(DependencyGraph dependencies,
AnalysisResult analysisResult) {
DSMWriter textUI = new DSMWriter(writer);
textUI
.printDsm(new DsmEngine(dependencies).createDsm(),
analysisResult);
ViolationWriter violationWriter = new ViolationWriter(writer);
violationWriter.printViolations(analysisResult
.getViolations(dependencies.getAllItems()));
}
}