/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.internal.io.fs;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.internal.util.SVNPathUtil;
/**
* @version 1.3
* @author TMate Software Ltd.
*/
public class FSParentPath {
private FSRevisionNode myRevNode;
private String myEntryName;
private FSParentPath myParent;
private FSCopyInheritance myCopyInheritance;
public FSParentPath(FSParentPath newParentPath) {
myRevNode = newParentPath.myRevNode;
myEntryName = newParentPath.myEntryName;
myParent = newParentPath.myParent;
myCopyInheritance = newParentPath.myCopyInheritance;
}
public FSParentPath(FSRevisionNode newRevNode, String newEntry, FSParentPath newParentPath) {
myRevNode = newRevNode;
myEntryName = newEntry;
myParent = newParentPath;
if (newRevNode != null) {
myCopyInheritance = new FSCopyInheritance(FSCopyInheritance.COPY_ID_INHERIT_UNKNOWN, newRevNode.getCopyFromPath());
} else {
myCopyInheritance = new FSCopyInheritance(FSCopyInheritance.COPY_ID_INHERIT_UNKNOWN, null);
}
}
public FSRevisionNode getRevNode() {
return myRevNode;
}
public void setRevNode(FSRevisionNode newRevNode) {
myRevNode = newRevNode;
}
public String getEntryName() {
return myEntryName;
}
public FSParentPath getParent() {
return myParent;
}
public int getCopyStyle() {
return myCopyInheritance.getStyle();
}
public void setCopyStyle(int newCopyStyle) {
myCopyInheritance.setStyle(newCopyStyle);
}
public String getCopySourcePath() {
return myCopyInheritance.getCopySourcePath();
}
public void setCopySourcePath(String newCopyPath) {
myCopyInheritance.setCopySourcePath(newCopyPath);
}
public void setParentPath(FSRevisionNode newRevNode, String newEntry, FSParentPath newParentPath) {
myRevNode = newRevNode;
myEntryName = newEntry;
myParent = newParentPath;
myCopyInheritance = new FSCopyInheritance(FSCopyInheritance.COPY_ID_INHERIT_UNKNOWN, null);
}
public String getAbsPath() throws SVNException {
String pathSoFar = "/";
if (myParent != null) {
pathSoFar = myParent.getAbsPath();
}
return SVNPathUtil.getAbsolutePath(SVNPathUtil.append(pathSoFar, getEntryName()));
}
public String getRelativePath(FSParentPath ancestor) {
String pathSoFar = "";
FSParentPath thisNode = this;
while (thisNode != ancestor) {
pathSoFar = SVNPathUtil.append(thisNode.getEntryName(), pathSoFar);
thisNode = thisNode.getParent();
}
return pathSoFar;
}
}