// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/IParams.java
// public interface IParams extends IObject {
// 	public IComponent getSource();
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/IResult.java
// public interface IResult extends IParams {
// 	public IParams getInputParam();
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/Result.java
// public class Result extends AbstractResult {
// 		
// 	protected IComponent source;
// 	protected IParams inputParam;
// 
// 	public Result() {
// 	}
// 	
// 	public Result(Map<String, Object> params, IParams inputParam, IComponent source) {
// 		// setting the source
// 		this.source = source;
// 		this.inputParam = inputParam;
// 		setProperties(params);
// 	}
// 	
// 	public Result(Map<String, Object> params) {
// 		// setting the source
// 		setProperties(params);
// 	}
// 	
// 	public Result(IParams inputParam, IComponent source) {
// 		// setting the source
// 		this.source = source;
// 		this.inputParam = inputParam;
// 	}
// 
// 	@Override
// 	public IComponent getSource() {
// 		return source;
// 	}
// 
// 	@Override
// 	public IParams getInputParam() {
// 		return inputParam;
// 	}
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/providers/impl/ServiceProvider.java
// public class ServiceProvider extends AbstractPluginProvider<IService, IServiceFactory> {
// 	public ServiceProvider(List<? extends ClassLoader> classLoaders) {
// 		super(IServiceFactory.class, classLoaders, null);
// 	}
// 	
// 	public ServiceProvider() {
// 	}
// }


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.aksw.openqa.Properties;
import org.aksw.openqa.component.answerformulation.AbstractInterpreter;
import org.aksw.openqa.component.context.IContext;
import org.aksw.openqa.component.object.IParams;
import org.aksw.openqa.component.object.IResult;
import org.aksw.openqa.component.object.Result;
import org.aksw.openqa.component.providers.impl.ServiceProvider;
import org.aksw.openqa.examples.HelloWorldParameters;
package org.aksw.openqa.examples.example2;



public class HelloWorldInterpreter extends AbstractInterpreter {
	
	String[][] allwedQuestions= {
			// standard greetings
			{"hi", "hello", "hola", "ola", "howdy"},
			// question greetings
			{"how are you", "how r you", "how r u", "how are u"}
	};
	
	public HelloWorldInterpreter() {
		super(null /* there is no params to be passed */);
	}

	public HelloWorldInterpreter(Map<String, Object> params) {
		super(params);
	}
	
	@Override
	public String getVersion() {
		return "sample2"; // version
	}
	
	@Override
	public String getLabel() {
		return "HelloWorldInterpreter"; // the label
	}
	
	@Override
	public String getId() {
		return getLabel() + " " + getVersion(); // id = label + version
	}
	
	@Override
	public boolean canProcess(IParams param) {
		return param.contains(Properties.Literal.TEXT, String.class);
	}

	@Override
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/IParams.java
// public interface IParams extends IObject {
// 	public IComponent getSource();
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/IResult.java
// public interface IResult extends IParams {
// 	public IParams getInputParam();
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/object/Result.java
// public class Result extends AbstractResult {
// 		
// 	protected IComponent source;
// 	protected IParams inputParam;
// 
// 	public Result() {
// 	}
// 	
// 	public Result(Map<String, Object> params, IParams inputParam, IComponent source) {
// 		// setting the source
// 		this.source = source;
// 		this.inputParam = inputParam;
// 		setProperties(params);
// 	}
// 	
// 	public Result(Map<String, Object> params) {
// 		// setting the source
// 		setProperties(params);
// 	}
// 	
// 	public Result(IParams inputParam, IComponent source) {
// 		// setting the source
// 		this.source = source;
// 		this.inputParam = inputParam;
// 	}
// 
// 	@Override
// 	public IComponent getSource() {
// 		return source;
// 	}
// 
// 	@Override
// 	public IParams getInputParam() {
// 		return inputParam;
// 	}
// }
// 
// Path: openqa.engine/src/main/java/org/aksw/openqa/component/providers/impl/ServiceProvider.java
// public class ServiceProvider extends AbstractPluginProvider<IService, IServiceFactory> {
// 	public ServiceProvider(List<? extends ClassLoader> classLoaders) {
// 		super(IServiceFactory.class, classLoaders, null);
// 	}
// 	
// 	public ServiceProvider() {
// 	}
// }


// Path: openqa.engine.examples/src/main/java/org/aksw/openqa/examples/example2/HelloWorldInterpreter.java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.aksw.openqa.Properties;
import org.aksw.openqa.component.answerformulation.AbstractInterpreter;
import org.aksw.openqa.component.context.IContext;
import org.aksw.openqa.component.object.IParams;
import org.aksw.openqa.component.object.IResult;
import org.aksw.openqa.component.object.Result;
import org.aksw.openqa.component.providers.impl.ServiceProvider;
import org.aksw.openqa.examples.HelloWorldParameters;

package org.aksw.openqa.examples.example2;



public class HelloWorldInterpreter extends AbstractInterpreter {
	
	String[][] allwedQuestions= {
			// standard greetings
			{"hi", "hello", "hola", "ola", "howdy"},
			// question greetings
			{"how are you", "how r you", "how r u", "how are u"}
	};
	
	public HelloWorldInterpreter() {
		super(null /* there is no params to be passed */);
	}

	public HelloWorldInterpreter(Map<String, Object> params) {
		super(params);
	}
	
	@Override
	public String getVersion() {
		return "sample2"; // version
	}
	
	@Override
	public String getLabel() {
		return "HelloWorldInterpreter"; // the label
	}
	
	@Override
	public String getId() {
		return getLabel() + " " + getVersion(); // id = label + version
	}
	
	@Override
	public boolean canProcess(IParams param) {
		return param.contains(Properties.Literal.TEXT, String.class);
	}

	@Override
	public List<? extends IResult> process(IParams param,