Copyright (c) 2000, 2009 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 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: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 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: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.debug.internal.core; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Path;
The ResourceFactory is used to save and recreate an IResource object. As such, it implements the IPersistableElement interface for storage and the IElementFactory interface for recreation.
/** * The ResourceFactory is used to save and recreate an IResource object. * As such, it implements the IPersistableElement interface for storage * and the IElementFactory interface for recreation. */
public class ResourceFactory { // These persistence constants are stored in XML. Do not // change them. public static final String TAG_PATH = "path";//$NON-NLS-1$ public static final String TAG_TYPE = "type";//$NON-NLS-1$
Creates and returns an element based on the given memento
Params:
  • memento – element memento
Returns:associated element
/** * Creates and returns an element based on the given memento * * @param memento element memento * @return associated element */
public static IAdaptable createElement(XMLMemento memento) { // Get the file name. String fileName = memento.getString(TAG_PATH); if (fileName == null) { return null; } IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); String type = memento.getString(TAG_TYPE); IResource res = null; if (type == null) { // Old format memento. Create an IResource using findMember. // Will return null for resources in closed projects. res = root.findMember(new Path(fileName)); } else { int resourceType = Integer.parseInt(type); if (resourceType == IResource.ROOT) { res = root; } else if (resourceType == IResource.PROJECT) { res = root.getProject(fileName); } else if (resourceType == IResource.FOLDER) { res = root.getFolder(new Path(fileName)); } else if (resourceType == IResource.FILE) { res = root.getFile(new Path(fileName)); } } return res; } public static void saveState(XMLMemento memento, IResource res) { memento.putString(TAG_PATH, res.getFullPath().toString()); memento.putString(TAG_TYPE, Integer.toString(res.getType())); } }