/**
 * Copyright (c) 2020 RBEI and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v. 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Adhith Gopal - Initial API and Implementation
 *
 */
package org.eclipse.blockchain.ui;

import org.eclipse.blockchain.core.ProjectCreator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.IStartup;

public class ModelStartup implements IStartup {

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void earlyStartup() {
		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
		for (IProject project : projects) {
			ProjectCreator.getInstance().createExistingProject(project.getLocation().toOSString());
		}
	}

}
