/*******************************************************************************
 * Copyright (c) 2002, 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 - Initial API and implementation
 *******************************************************************************/
package org.eclipse.core.tools.resources.metadata;

import java.io.DataInputStream;
import java.io.IOException;
import org.eclipse.core.tools.metadata.IStringDumpingStrategy;

/**
 * A strategy for reading .location files.
 */
class LocationStrategy implements IStringDumpingStrategy {

	/**
	 * @see org.eclipse.core.tools.metadata.IStringDumpingStrategy#dumpStringContents(DataInputStream)
	 */
	@Override
	public String dumpStringContents(DataInputStream dataInput) throws IOException {
		StringBuilder contents = new StringBuilder(100);
		String location = dataInput.readUTF();
		contents.append("Location: '"); //$NON-NLS-1$
		contents.append(location);
		contents.append('\'');
		//try to read the dynamic references
		int numRefs = dataInput.readInt();
		if (numRefs < 0)
			return contents.toString();
		contents.append('\n');
		contents.append("Dynamic references ("); //$NON-NLS-1$
		contents.append(numRefs);
		contents.append("): "); //$NON-NLS-1$
		for (int i = 0; i < numRefs; i++) {
			String projectName = dataInput.readUTF();
			contents.append("\n\t"); //$NON-NLS-1$
			contents.append(projectName);
		}
		return contents.toString();
	}

	/**
	 * @see org.eclipse.core.tools.metadata.IStringDumpingStrategy#getFormatDescription()
	 */
	@Override
	public String getFormatDescription() {
		return "Project location file"; //$NON-NLS-1$
	}
}
