package com.arbonaut.jts.buffer;

import java.net.URL;
import java.util.List;

import net.refractions.udig.catalog.IGeoResource;
import net.refractions.udig.catalog.IService;
import net.refractions.udig.catalog.IServiceFactory;
import net.refractions.udig.catalog.internal.ServiceFactoryImpl;
import net.refractions.udig.project.internal.Layer;
import net.refractions.udig.project.internal.Map;
import net.refractions.udig.project.internal.Project;
import net.refractions.udig.project.internal.ProjectPlugin;
import net.refractions.udig.project.internal.commands.CreateMapCommand;
import net.refractions.udig.project.ui.commands.OpenMapCommand;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.geotools.data.shapefile.ShapefileDataStore;

public class AdrianTest2 {

	public AdrianTest2() {
		super();
	}

	
	public void openShapefile() throws Exception{
		
		Map sourceMap = null;
		Layer sourceLayer = null;
		
		URL sourceShpURL = new URL("path/to/shapefile.shp");
		
		if(sourceShpURL == null)
			throw new RuntimeException("Data was not loaded");
		
		
		IServiceFactory serviceFactory = new ServiceFactoryImpl();
		List<IService> servicesList = serviceFactory.acquire(sourceShpURL);

		
		IService shpService = servicesList.get(0);
		
		ShapefileDataStore datastore =  shpService.resolve(ShapefileDataStore.class, new NullProgressMonitor());

		
		List<IGeoResource> geoResources = (List<IGeoResource>)shpService.members(new NullProgressMonitor());
		
		Project project=ProjectPlugin.getPlugin().getProjectRegistry().getCurrentProject();
//		ArrayList resources = new ArrayList();
//		resources.add(shpGeoResource);
		
		CreateMapCommand cmCommand = new CreateMapCommand(null, geoResources, project);
		project.sendSync(cmCommand);
		
		sourceMap = (Map)cmCommand.getCreatedMap();
		sourceLayer = sourceMap.getLayersInternal().get(0);
		
		
		OpenMapCommand omCommand = new OpenMapCommand(sourceMap);
        project.sendASync(omCommand);
		
	}
}
