Copyright (c) 2000, 2015 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, 2015 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.core.internal.resources; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; public class SaveContext implements ISaveContext { protected String pluginId; protected int kind; protected boolean needDelta; protected boolean needSaveNumber; protected SafeFileTable fileTable; protected int previousSaveNumber; protected IProject project; protected SaveContext(String pluginId, int kind, IProject project) throws CoreException { this.kind = kind; this.project = project; this.pluginId = pluginId; needDelta = false; needSaveNumber = false; fileTable = new SafeFileTable(pluginId); previousSaveNumber = getWorkspace().getSaveManager().getSaveNumber(pluginId); } public void commit() throws CoreException { if (needSaveNumber) { IPath oldLocation = getWorkspace().getMetaArea().getSafeTableLocationFor(pluginId); getWorkspace().getSaveManager().setSaveNumber(pluginId, getSaveNumber()); fileTable.setLocation(getWorkspace().getMetaArea().getSafeTableLocationFor(pluginId)); fileTable.save(); oldLocation.toFile().delete(); } }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public IPath[] getFiles() { return getFileTable().getFiles(); } protected SafeFileTable getFileTable() { return fileTable; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public int getKind() { return kind; } public String getPluginId() { return pluginId; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public int getPreviousSaveNumber() { return previousSaveNumber; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public IProject getProject() { return project; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public int getSaveNumber() { int result = getPreviousSaveNumber() + 1; return result > 0 ? result : 1; } protected Workspace getWorkspace() { return (Workspace) ResourcesPlugin.getWorkspace(); } public boolean isDeltaNeeded() { return needDelta; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public IPath lookup(IPath file) { return getFileTable().lookup(file); }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public void map(IPath file, IPath location) { getFileTable().map(file, location); }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public void needDelta() { needDelta = true; }
See Also:
  • ISaveContext
/** * @see ISaveContext */
@Override public void needSaveNumber() { needSaveNumber = true; } }