package de.uka.ipd.sdq.beagle.core;

import de.uka.ipd.sdq.beagle.analysis.ResultAnalyser;
import de.uka.ipd.sdq.beagle.judge.FinalJudge;

/**
 * Conducts a complete analysis of elements on a blackboard. Controls the
 * {@link MeasurementController}, {@link ResultAnalyser ResultAnalysers} and the
 * {@link FinalJudge} to measure and analyse parametric dependencies.
 *
 * <h3>The Analysis</h3> During the analysis, the controller will ask participants whether
 * they can contribute (except for the {@linkplain FinalJudge}, which must always be able
 * to judge). The participants may only make these assumptions of the control flow:
 *
 * <ul>
 *
 * <li>There is always only the {@link MeasurementController}, only the {@link FinalJudge}
 * or only one {@link ResultAnalyser} (or none of the previous) running. They may use
 * parallelisation as they wish but are self-responsible for synchronisation.
 *
 * <li>A {@link ResultAnalyser} will only be called if its
 * {@link ResultAnalyser#canContribute(ReadOnlyBlackboardView) canContribute} method
 * returns {@code true}. The {@link MeasurementController} will only be called if its
 * {@link MeasurementController#canMeasure canMeasure} method returns {@code true}.
 *
 * <li>When picking the next participant, the {@link MeasurementController} will be always
 * be called next if its {@link MeasurementController#canMeasure canMeasure} method
 * returns {@code true}.
 *
 * <li>Any {@link ResultAnalyser} whose
 * {@link ResultAnalyser#canContribute(ReadOnlyBlackboardView) canContribute} method
 * returns {@code true} will be called.
 *
 * <li>The {@linkplain FinalJudge} will only be called if no {@link ResultAnalyser} can
 * contribute.
 *
 * </ul>
 *
 * @author Roman Langrehr
 * @author Joshua Gleitze
 *
 * @see MeasurementController
 * @see Blackboard
 */
public class AnalysisController {

	/**
	 * This controller's blackboard, passed to all interacting jobs to communicate. Any
	 * data exchange in any action invoked by this controller must happen exclusively via
	 * this {@link Blackboard} instance.
	 */
	private final Blackboard blackboard = new Blackboard();

	/**
	 * Creates a controller to analyse all elements written on {@code blackboard}.
	 *
	 * @param blackboard A blackboard having everything to be analysed written on it.
	 */
	public AnalysisController(final Blackboard blackboard) {

	}

	/**
	 * Runs the complete analysis, including measurements, result analysis and the final
	 * judging. See the class description for more details on the analysis process.
	 */
	public void performAnalysis() {
	}
}

@@ -2114,23 +2114,11 @@
  = n
-ew Blackboard()
+ull
 ;%0A%0A%09

fix use of old Blackboard constructor.