Copyright (c) 2000, 2014 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 Francis Lynch (Wind River) - [305718] Allow reading snapshot into renamed project
/******************************************************************************* * Copyright (c) 2000, 2014 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 * Francis Lynch (Wind River) - [305718] Allow reading snapshot into renamed project *******************************************************************************/
package org.eclipse.core.internal.watson; import java.io.DataInput; import java.io.IOException; import org.eclipse.core.internal.dtree.DeltaDataTree;
ElementTreeReader_1 is an implementation of the ElementTreeReader for format version 1.

Instances of this reader read only format 1 of a saved element tree (they do not deal with compatibility issues).

See Also:
  • ElementTreeReader
/** <code>ElementTreeReader_1</code> is an implementation * of the <code>ElementTreeReader</code> for format version 1. * * <p>Instances of this reader read only format 1 * of a saved element tree (they do not deal with * compatibility issues). * * @see ElementTreeReader */
/* package */class ElementTreeReaderImpl_1 extends ElementTreeReader {
Constructs a new element tree reader that works for the given element info factory.
/** * Constructs a new element tree reader that works for * the given element info factory. */
ElementTreeReaderImpl_1(IElementInfoFlattener factory) { super(factory); }
Reads an element tree delta from the input stream, and reconstructs it as a delta on the given tree.
/** * Reads an element tree delta from the input stream, and * reconstructs it as a delta on the given tree. */
@Override public ElementTree readDelta(ElementTree parentTree, DataInput input) throws IOException { DeltaDataTree complete = parentTree.getDataTree(); DeltaDataTree delta = dataTreeReader.readTree(complete, input, ""); //$NON-NLS-1$ //if the delta is empty, just return the parent if (delta.isEmptyDelta()) return parentTree; ElementTree tree = new ElementTree(delta); //copy the user data forward IElementTreeData data = parentTree.getTreeData(); if (data != null) { tree.setTreeData((IElementTreeData) data.clone()); } //make the underlying data tree immutable //can't call immutable() on the ElementTree because //this would attempt to reroot. delta.immutable(); return tree; } @Override public ElementTree[] readDeltaChain(DataInput input, String newProjectName) throws IOException { /* read the number of trees */ int treeCount = readNumber(input); ElementTree[] results = new ElementTree[treeCount]; if (treeCount <= 0) { return results; } /* read the sort order */ int[] order = new int[treeCount]; for (int i = 0; i < treeCount; i++) { order[i] = readNumber(input); } /* read the complete tree */ results[order[0]] = super.readTree(input, newProjectName); /* reconstitute each of the remaining trees from their written deltas */ for (int i = 1; i < treeCount; i++) { results[order[i]] = super.readDelta(results[order[i - 1]], input); } return results; } @Override public ElementTree readTree(DataInput input, String newProjectName) throws IOException { /* The format version number has already been consumed * by ElementTreeReader#readFrom. */ ElementTree result = new ElementTree(dataTreeReader.readTree(null, input, newProjectName)); return result; } }