// Path: org.spotter.core/src/org/spotter/core/detection/AbstractDetectionExtension.java
// public abstract class AbstractDetectionExtension implements IDetectionExtension {
// 
// 	public static final String REUSE_EXPERIMENTS_FROM_PARENT = "reuseExperimentsFromParent";
// 
// 	private final Set<ConfigParameterDescription> configParameters;
// 
// 	/**
// 	 * Constructor.
// 	 */
// 	public AbstractDetectionExtension() {
// 
// 		configParameters = new HashSet<ConfigParameterDescription>();
// 		configParameters.add(createIsDetectableParameter());
// 		if (this.createExtensionArtifact() instanceof IExperimentReuser) {
// 			configParameters.add(createReuseExperimentsParameter());
// 		}
// 		initializeConfigurationParameters();
// 	}
// 
// 	/**
// 	 * This method is called to initialize heuristic specific configuration
// 	 * parameters.
// 	 */
// 	protected abstract void initializeConfigurationParameters();
// 
// 	/**
// 	 * Adds a configuration parameter to the extension.
// 	 * 
// 	 * @param parameter
// 	 *            parameter to add to this extension
// 	 */
// 	protected void addConfigParameter(ConfigParameterDescription parameter) {
// 		configParameters.add(parameter);
// 	}
// 
// 	@Override
// 	public final Set<ConfigParameterDescription> getConfigParameters() {
// 		return configParameters;
// 	}
// 
// 	private ConfigParameterDescription createReuseExperimentsParameter() {
// 		ConfigParameterDescription reuseExperimentsParameter = new ConfigParameterDescription(
// 				REUSE_EXPERIMENTS_FROM_PARENT, LpeSupportedTypes.Boolean);
// 		reuseExperimentsParameter.setDescription("Indicates whether the experiments from "
// 				+ "the parent heuristic should be used for this heuristic.");
// 		reuseExperimentsParameter.setDefaultValue(String.valueOf(false));
// 		return reuseExperimentsParameter;
// 	}
// 
// 	private ConfigParameterDescription createIsDetectableParameter() {
// 		ConfigParameterDescription nameParameter = new ConfigParameterDescription(ConfigKeys.DETECTABLE_KEY,
// 				LpeSupportedTypes.Boolean);
// 		nameParameter.setMandatory(true);
// 		nameParameter.setASet(false);
// 		nameParameter.setDefaultValue("true");
// 		nameParameter.setDescription("Specifies if this problem node is detectable!");
// 
// 		return nameParameter;
// 	}
// }
// 
// Path: org.spotter.core/src/org/spotter/core/detection/IDetectionController.java
// public interface IDetectionController extends IExtensionArtifact {
// 	/**
// 	 * Analyzes the problem under investigation.
// 	 * 
// 	 * @return a {@link SpotterResult} instance indicating whether the problem
// 	 *         has been detected or not.
// 	 * @throws InstrumentationException
// 	 *             if code instrumentation failed
// 	 * @throws MeasurementException
// 	 *             if measurement failed
// 	 * @throws WorkloadException
// 	 *             if workload cannot be generated
// 	 */
// 	SpotterResult analyzeProblem() throws InstrumentationException, MeasurementException, WorkloadException;
// 
// 	/**
// 	 * Sets the configuration for the problem detection.
// 	 * 
// 	 * @param problemDetectionConfiguration
// 	 *            configuration properties
// 	 */
// 	void setProblemDetectionConfiguration(Properties problemDetectionConfiguration);
// 
// 	/**
// 	 * @return the problem detection configuration
// 	 */
// 	Properties getProblemDetectionConfiguration();
// 
// 	/**
// 	 * 
// 	 * @param reuser
// 	 *            a detection heuristic which should reuser the experiments of
// 	 *            this heuristic
// 	 */
// 	void addExperimentReuser(IExperimentReuser reuser);
// 
// 	/**
// 	 * Loads properties from hierarchy description.
// 	 */
// 	void loadProperties();
// 
// 	/**
// 	 * Returns the result manager for this detection controller.
// 	 * 
// 	 * @return result manager
// 	 */
// 	DetectionResultManager getResultManager();
// 
// 	/**
// 	 * @return the problemId
// 	 */
// 	String getProblemId();
// 
// 	/**
// 	 * @param problemId
// 	 *            the problemId to set
// 	 */
// 	void setProblemId(String problemId);
// 
// 	/**
// 	 * Returns the estimated duration of the experiment series conducted for the
// 	 * corresponding performance problem. unit: [seconds]
// 	 * 
// 	 * @return duration of experiments
// 	 */
// 	long getExperimentSeriesDuration();
// 
// 	/**
// 	 * Triggers heuristic specific experiment execution.
// 	 * 
// 	 * @throws InstrumentationException
// 	 *             if instrumentation fails
// 	 * @throws MeasurementException
// 	 *             if measurement data cannot be collected
// 	 * @throws WorkloadException
// 	 *             if load cannot be generated properly
// 	 */
// 	void executeExperiments() throws InstrumentationException, MeasurementException, WorkloadException;
// }


import org.spotter.core.detection.AbstractDetectionExtension;
import org.spotter.core.detection.IDetectionController;
/**
 * Copyright 2014 SAP AG
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.spotter.core.test.dummies.detection;


public class DetectionCExtension extends AbstractDetectionExtension{

	@Override
	public IDetectionController createExtensionArtifact() {
		return new DetectionC(this);
	}

// Path: org.spotter.core/src/org/spotter/core/detection/AbstractDetectionExtension.java
// public abstract class AbstractDetectionExtension implements IDetectionExtension {
// 
// 	public static final String REUSE_EXPERIMENTS_FROM_PARENT = "reuseExperimentsFromParent";
// 
// 	private final Set<ConfigParameterDescription> configParameters;
// 
// 	/**
// 	 * Constructor.
// 	 */
// 	public AbstractDetectionExtension() {
// 
// 		configParameters = new HashSet<ConfigParameterDescription>();
// 		configParameters.add(createIsDetectableParameter());
// 		if (this.createExtensionArtifact() instanceof IExperimentReuser) {
// 			configParameters.add(createReuseExperimentsParameter());
// 		}
// 		initializeConfigurationParameters();
// 	}
// 
// 	/**
// 	 * This method is called to initialize heuristic specific configuration
// 	 * parameters.
// 	 */
// 	protected abstract void initializeConfigurationParameters();
// 
// 	/**
// 	 * Adds a configuration parameter to the extension.
// 	 * 
// 	 * @param parameter
// 	 *            parameter to add to this extension
// 	 */
// 	protected void addConfigParameter(ConfigParameterDescription parameter) {
// 		configParameters.add(parameter);
// 	}
// 
// 	@Override
// 	public final Set<ConfigParameterDescription> getConfigParameters() {
// 		return configParameters;
// 	}
// 
// 	private ConfigParameterDescription createReuseExperimentsParameter() {
// 		ConfigParameterDescription reuseExperimentsParameter = new ConfigParameterDescription(
// 				REUSE_EXPERIMENTS_FROM_PARENT, LpeSupportedTypes.Boolean);
// 		reuseExperimentsParameter.setDescription("Indicates whether the experiments from "
// 				+ "the parent heuristic should be used for this heuristic.");
// 		reuseExperimentsParameter.setDefaultValue(String.valueOf(false));
// 		return reuseExperimentsParameter;
// 	}
// 
// 	private ConfigParameterDescription createIsDetectableParameter() {
// 		ConfigParameterDescription nameParameter = new ConfigParameterDescription(ConfigKeys.DETECTABLE_KEY,
// 				LpeSupportedTypes.Boolean);
// 		nameParameter.setMandatory(true);
// 		nameParameter.setASet(false);
// 		nameParameter.setDefaultValue("true");
// 		nameParameter.setDescription("Specifies if this problem node is detectable!");
// 
// 		return nameParameter;
// 	}
// }
// 
// Path: org.spotter.core/src/org/spotter/core/detection/IDetectionController.java
// public interface IDetectionController extends IExtensionArtifact {
// 	/**
// 	 * Analyzes the problem under investigation.
// 	 * 
// 	 * @return a {@link SpotterResult} instance indicating whether the problem
// 	 *         has been detected or not.
// 	 * @throws InstrumentationException
// 	 *             if code instrumentation failed
// 	 * @throws MeasurementException
// 	 *             if measurement failed
// 	 * @throws WorkloadException
// 	 *             if workload cannot be generated
// 	 */
// 	SpotterResult analyzeProblem() throws InstrumentationException, MeasurementException, WorkloadException;
// 
// 	/**
// 	 * Sets the configuration for the problem detection.
// 	 * 
// 	 * @param problemDetectionConfiguration
// 	 *            configuration properties
// 	 */
// 	void setProblemDetectionConfiguration(Properties problemDetectionConfiguration);
// 
// 	/**
// 	 * @return the problem detection configuration
// 	 */
// 	Properties getProblemDetectionConfiguration();
// 
// 	/**
// 	 * 
// 	 * @param reuser
// 	 *            a detection heuristic which should reuser the experiments of
// 	 *            this heuristic
// 	 */
// 	void addExperimentReuser(IExperimentReuser reuser);
// 
// 	/**
// 	 * Loads properties from hierarchy description.
// 	 */
// 	void loadProperties();
// 
// 	/**
// 	 * Returns the result manager for this detection controller.
// 	 * 
// 	 * @return result manager
// 	 */
// 	DetectionResultManager getResultManager();
// 
// 	/**
// 	 * @return the problemId
// 	 */
// 	String getProblemId();
// 
// 	/**
// 	 * @param problemId
// 	 *            the problemId to set
// 	 */
// 	void setProblemId(String problemId);
// 
// 	/**
// 	 * Returns the estimated duration of the experiment series conducted for the
// 	 * corresponding performance problem. unit: [seconds]
// 	 * 
// 	 * @return duration of experiments
// 	 */
// 	long getExperimentSeriesDuration();
// 
// 	/**
// 	 * Triggers heuristic specific experiment execution.
// 	 * 
// 	 * @throws InstrumentationException
// 	 *             if instrumentation fails
// 	 * @throws MeasurementException
// 	 *             if measurement data cannot be collected
// 	 * @throws WorkloadException
// 	 *             if load cannot be generated properly
// 	 */
// 	void executeExperiments() throws InstrumentationException, MeasurementException, WorkloadException;
// }


// Path: org.spotter.core/test/org/spotter/core/test/dummies/detection/DetectionCExtension.java
import org.spotter.core.detection.AbstractDetectionExtension;
import org.spotter.core.detection.IDetectionController;

/**
 * Copyright 2014 SAP AG
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.spotter.core.test.dummies.detection;


public class DetectionCExtension extends AbstractDetectionExtension{

	@Override
	public IDetectionController createExtensionArtifact() {
		return new DetectionC(this);
	}

	@Override