code: package de.hub.mse.ttc2020.solution;
  
  import org.eclipse.emf.ecore.EPackage;
  
  import de.hub.mse.ttc2020.benchmark.AbstractTask;
  import de.hub.mse.ttc2020.benchmark.AbstractTaskFactory;
  import de.hub.mse.ttc2020.benchmark.TaskInfo;
  
  public class JavaTaskFactory extends AbstractTaskFactory {
  
  	public JavaTaskFactory() {
  		super();
  	}
  	
  	@Override
  	public AbstractTask createTask(TaskInfo info, EPackage model1, EPackage model2) {
  		switch (info) {
  		case TASK_1_M1_M2_M1:
  			return new Task_1_M1_M2_M1(model1, model2);
  		case TASK_1_M2_M1_M2:
  			return new Task_1_M2_M1_M2(model1, model2);
  		case TASK_2_M1_M2_M1:
  			return new Task_2_M1_M2_M1(model1, model2);
  		case TASK_2_M2_M1_M2:
  			return new Task_2_M2_M1_M2(model1, model2);
  		case TASK_3_M1_M2_M1:
  			return new Task_3_M1_M2_M1(model1, model2);
  		case TASK_3_M2_M1_M2:
  			return new Task_3_M2_M1_M2(model1, model2);
  		case TASK_4_M1_M2_M1:
  			return new Task_4_M1_M2_M1(model1, model2);
  		case TASK_4_M2_M1_M2:
  			return new Task_4_M2_M1_M2(model1, model2);	
  				
  		default:
  			return null;
  		}
  	}
  
  }
  