/*******************************************************************************
 * Copyright (c) 2001, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 * IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.validation.core;


/**
 * <p>
 * Default implementation of the IFileDelta
 * </p>
 * 
 * @see org.eclipse.wst.validation.core.IFileDelta
 */
public class FileDelta implements IFileDelta {
	private int fileDelta = 0;
	private String fileName = null;

	/**
	 * <p>
	 * Creates a default instance of the FileDelta
	 * </p>
	 */
	public FileDelta() {
		super();
	}
	
	/**
	 * <p>
	 * Constructor is used to initialize the fields. 
	 * </p>
	 * 
	 * @param aFileName specifies the file name
	 * @param aFileDelta specifies the 
	 */
	public FileDelta(String aFileName, int aFileDelta) {
		fileName = aFileName;
		fileDelta = aFileDelta;
	}

	/**
	 * @see IFileDelta#getDeltaType()
	 */
	public int getDeltaType() {
		return fileDelta;
	}

	/**
	 * @see IFileDelta#getFileName()
	 */
	public String getFileName() {
		return fileName;
	}

	/**
	 * <p>
	 * Set the flag which indicates the type of change that the file 
	 * has undergone.
	 * </p>
	 */
	public void setDeltaType(int deltaType) {
		fileDelta = deltaType;
	}

	/**
	 * <p>
	 * Set the name of the file which has changed.
	 * </p>
	 */
	public void setFileName(String aFileName) {
		fileName = aFileName;
	}
}