tikhomirov@347: /*
tikhomirov@396:  * Copyright (c) 2011-2012 TMate Software Ltd
tikhomirov@347:  *  
tikhomirov@347:  * This program is free software; you can redistribute it and/or modify
tikhomirov@347:  * it under the terms of the GNU General Public License as published by
tikhomirov@347:  * the Free Software Foundation; version 2 of the License.
tikhomirov@347:  *
tikhomirov@347:  * This program is distributed in the hope that it will be useful,
tikhomirov@347:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
tikhomirov@347:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
tikhomirov@347:  * GNU General Public License for more details.
tikhomirov@347:  *
tikhomirov@347:  * For information on how to redistribute this software under
tikhomirov@347:  * the terms of a license other than GNU General Public License
tikhomirov@347:  * contact TMate Software at support@hg4j.com
tikhomirov@347:  */
tikhomirov@423: package org.tmatesoft.hg.repo;
tikhomirov@347: 
tikhomirov@423: import org.tmatesoft.hg.core.Nodeid;
tikhomirov@347: 
tikhomirov@347: /**
tikhomirov@368:  * Use of revision or revision local index that is not valid for a given revlog.
tikhomirov@347:  *  
tikhomirov@347:  * @author Artem Tikhomirov
tikhomirov@347:  * @author TMate Software Ltd.
tikhomirov@347:  */
tikhomirov@347: @SuppressWarnings("serial")
tikhomirov@423: public class HgInvalidRevisionException extends HgRuntimeException {
tikhomirov@347: 
tikhomirov@347: 	/**
tikhomirov@347: 	 * 
tikhomirov@423: 	 * This exception is not expected to be initialized with another exception, although those who need to, 
tikhomirov@347: 	 * may still use {@link #initCause(Throwable)}
tikhomirov@423: 	 * 
tikhomirov@347: 	 * @param message optional description of the issue
tikhomirov@347: 	 * @param revision invalid revision, may be  null if revisionIndex is used
tikhomirov@347: 	 * @param revisionIndex invalid revision index, may be null if not known and revision is supplied 
tikhomirov@347: 	 */
tikhomirov@347: 	public HgInvalidRevisionException(String message, Nodeid revision, Integer revisionIndex) {
tikhomirov@423: 		super(message, null);
tikhomirov@423: 		assert revision != null || revisionIndex != null;
tikhomirov@423: 		if (revision != null) {
tikhomirov@423: 			setRevision(revision);
tikhomirov@423: 		}
tikhomirov@423: 		if (revisionIndex != null) {
tikhomirov@423: 			setRevisionIndex(revisionIndex);
tikhomirov@423: 		}
tikhomirov@347: 	}
tikhomirov@347: 
tikhomirov@347: 	public HgInvalidRevisionException(Nodeid revision) {
tikhomirov@347: 		this(null, revision, null);
tikhomirov@347: 	}
tikhomirov@347: 	
tikhomirov@347: 	public HgInvalidRevisionException(int revisionIndex) {
tikhomirov@347: 		this(null, null, revisionIndex);
tikhomirov@347: 	}
tikhomirov@347: 
tikhomirov@347: 	public HgInvalidRevisionException setRevisionIndex(int revisionIndex, int rangeLeft, int rangeRight) {
tikhomirov@423: 		details.setRevisionIndexBoundary(revisionIndex, rangeLeft, rangeRight);
tikhomirov@347: 		return this;
tikhomirov@347: 	}
tikhomirov@347: }