org.eclipse.team.core/src/org/eclipse/team/core/variants/IResourceVariant.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (download) (annotate)
Wed Mar 29 17:15:43 2006 UTC (3 years, 7 months ago) by mvalenta
Branch: MAIN
CVS Tags: I20060510, I200607032320, I20080819, I20091013-0800, I200605031640, I20091028-0800, I200609251710, I20070409, R3_2, I20070402, I200604040100, r33x_20070724, I20071015, I20080528, I200610021645, I20080722, I20071120, I20070709, I20071127, I20090211, I20080526, I20080923, I200603291800, I20080428, I20080425, I20080422, I20070202, I20091020-0800, I20071204, I20061208, I20080513, I20080514, I20080515, I20070528, I20070529, I20070522, I20070523, r34x_20080902, I20070524, I20070525, I20090128-0800, I20070115, r34x_20081015, I20090430-0408, I20080604, I20080605, I20070801, I200608211720, I20070808, r33x_20071024, I20080826, R3_3_1_1, I20091006-0800, I20090427-0800, I20060917, I20060911, I20090721-0750, I20090803-1300, I20090224-0800, r34x_20080115, I20080803, I20080804, I20080415, I20090126-0800, I200702071200, R3_4, R3_5, I200606191715, R3_3, I20080529, R3_4_1, I20080521, I20090714-0800, r34x_20080808, I20090521-1750, I20070416, I20090922-0800, I20090428, pre_R3_3, I20070924, I200603301205, I20071001, I20090421, r34x_20080723, I20080322, I20080207-0700, I20080514-2000a, I20070326, I20070730, I20091124-0800, I20080514-2000, I20081125, I20060714, I20070316, I20080930, I20070212, I20070219, I20070607, I20070605, I20070604, I20090120, I200605181830, I200606051140, I20061218, I20080115, v20090210-0615, I200604111815, I20070516, I20070515, I20070514, I20070511, I20070101, I200702081200, I20090306-1030, I200702051300, I20070430, I20090630-2000, I200606121730, I200703211300, r33x_20080128, I20070312, I20081014, r34x_20080107, I20060330, I20090514-0808, I20070220, I20070226, I200703191600, I20090522-1010, I20070507, I20090113, I20090309-1300, I20080122, I20070426, I20070129, I200702081800, r33x_20070709, I20090429-0800, I20070130, I20081202, I20090210-0800, I20071023, M20060711, I20090309-1800, I20090527-0620, I20090217-0800, r33x_20070807, I20070723, I200610161750, r33x_20071129, I20081118, r35x_20090930-0800, I20090511-2000, I20080909, I20070910, I20070914, I20091026-1300, R3_4_2, I200604120001, I20071210, I20090323-1100, M20061114, I20070501, I20070502, I20080415-1358, I20090311-0800, I20060605-1430, R3_2_1, R3_2_2, I20090407-0800, I200610232323, r34x_20080827, r33x_20070730, I20090331-0800, I20090929-0800, I20090303-0800, r34x_20090115, I20090825-0800, I20080204-0800, I20080304, I20080715, I20070305, I20070303, I20070716, I20081029, I20081021, I20080820, I20070423, I20090916-0800, I20090106, R3_5_1, I200604261810, I20070531, I20091117-0800, I20071026, I20070122, I20081216, I20070510, I20081210, I20090508-2000, I200607101745, I20080226, I20080326, R3_3_1, R3_3_2, I20071113, I200604121155, v20070212, I20080915, I20080917, I20090317-1800, HEAD
Branch point for: R3_3_maintenance, R3_4_maintenance, R3_5_maintenance, R3_2_maintenance
Changes since 1.6: +2 -2 lines
Updated copyrights
/*******************************************************************************
 * Copyright (c) 2000, 2006 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.team.core.variants;

import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.team.core.TeamException;

/**
 * This interface is used by <code>SyncInfo</code> instances
 * to provide access to the base and remote resources that correspond to 
 * a local resource.
 * 
 * @see org.eclipse.team.core.synchronize.SyncInfo
 * @since 3.0
 */
public interface IResourceVariant {
	
	/**
	 * Answers the name of the remote resource. The name may be
	 * displayed to the user.
	 * 
	 * @return name of the resource variant.
	 */
	public String getName();
	
	/**
	 * Answers if the remote resource may have children.
	 * 
	 * @return <code>true</code> if the remote resource may have children and 
	 * <code>false</code> otherwise.
	 */
	public boolean isContainer();
	
	/**
	 * Return an instance of IStorage or <code>null</code> if the remote resource
	 * does not have contents (i.e. is a folder). Since the <code>ISorage#getContents()</code>
	 * method does not accept an <code>IProgressMonitor</code>, this method must ensure that the contents
	 * access by the resulting <code>IStorage</code> is cached locally (hence the <code>IProgressMonitor</code> 
	 * argument to this method). Implementations of this method should
	 * ensure that the resulting <code>IStorage</code> is accessing locally cached contents and is not
	 * contacting the server.
	 * <p>
	 * The returned storage object may be an instance of (@link org.eclipse.core.resources.IEncodedStorage}
	 * in which case clients can determine the character encoding of the contents.
	 * @param monitor a progress monitor
	 * 
	 * @return an <code>IStorage</code> that provides access to the contents of 
	 * the remote resource or <code>null</code> if the remote resource is a container.
	 * @throws TeamException 
	 */
	public IStorage getStorage(IProgressMonitor monitor) throws TeamException;
	
	/**
	 * Return a content identifier that is used to differentiate versions
	 * or revisions of the same resource.
	 * 
	 * @return a String that identifies the version of the subscriber resource
	 */
	public String getContentIdentifier();
	
	/**
	 * Return an array of bytes that can be used to uniquely identify this
	 * resource variant when compared to other resource variants and could
	 * also potentially be used to recreate a resource variant handle.
	 * @return the bytes that uniquely identify this resource variant
	 */
	public byte[] asBytes();
	
	/**
	 * Returns whether the remote resource is equal to the provided object.
	 * @param object the object to be compared
	 * @return whether the object is equal to the remote resource
	 */
	public boolean equals(Object object);

}