/**
 ********************************************************************************
 * Copyright (c) 2020 Eclipse APP4MC contributors.
 * 
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 ********************************************************************************
 */

package org.eclipse.app4mc.amalthea._import.atdb;

import java.lang.reflect.InvocationTargetException;

import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.atdb.ATDBConnection;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;

public class RunnableConverter implements IRunnableWithProgress {
	
	private final Amalthea model;
	private final ATDBConnection con;
	private final boolean extractRuntimes;
	private final boolean extractLabelAccesses;

	public RunnableConverter(final Amalthea model, final ATDBConnection con,
			final boolean extractRuntimes, final boolean extractLabelAccesses) {
		this.model = model;
		this.con = con;
		this.extractRuntimes = extractRuntimes;
		this.extractLabelAccesses = extractLabelAccesses;
	}

	@Override
	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
	}

}
