package rtt.ui.utils; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.command.BasicCommandStack; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; import regression.test.provider.TestItemProviderAdapterFactory; import rtt.core.archive.configuration.Configuration; import rtt.core.exceptions.RTTException; import rtt.core.exceptions.RTTException.Type; import rtt.core.manager.Manager; public class RttPluginUtil { public static Manager getArchiveManager(IFile file, Configuration config) throws RTTException { if (file != null && file.exists()) { File archiveFile = file.getLocation().toFile(); Manager manager = new Manager(archiveFile, true); if (config != null) { manager.loadArchive(archiveFile, config.getName()); } else { manager.loadArchive(archiveFile); } return manager; } return null; } public static IPath getArchivePath(IProject project) { String archivePath = RttPreferenceStore.get(project, RttPreferenceStore.PREF_ARCHIVE_PATH, ""); if (archivePath != null && !archivePath.equals("")) { IPath path = Path.fromPortableString(archivePath); return path; } return null; } public static final void loadResource(ResourceSet resourceSet, URI uri, InputStream inputStream) throws RTTException { Resource resource = resourceSet.createResource(uri); if (resource == null) { throw new RTTException(Type.OPERATION_FAILED, "Could not create new resource."); } try { resource.load(inputStream, Collections.EMPTY_MAP); inputStream.close(); } catch (IOException e) { throw new RTTException(Type.OPERATION_FAILED, e); } } public static final ComposedAdapterFactory createFactory() { ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory( ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory( new TestItemProviderAdapterFactory()); adapterFactory.addAdapterFactory( new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory( new EcoreItemProviderAdapterFactory()); adapterFactory.addAdapterFactory( new ReflectiveItemProviderAdapterFactory()); return adapterFactory; } public static final AdapterFactoryEditingDomain createEditingDomain(AdapterFactory factory) { return new AdapterFactoryEditingDomain(factory, new BasicCommandStack()); } public static final AdapterFactoryEditingDomain createEditingDomain(AdapterFactory factory, ResourceSet resourceSet) { return new AdapterFactoryEditingDomain(factory, new BasicCommandStack(), resourceSet); } }