/*******************************************************************************
* Copyright (C) 2010, 2013 Dariusz Luksza <dariusz@luksza.org> 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
*******************************************************************************/
package org.eclipse.egit.ui.internal.synchronize.model;
import java.util.List;
import org.eclipse.core.runtime.IPath;
/**
* Representation of Git tree's in Git ChangeSet model
*/
public class GitModelTree extends GitModelObjectContainer {
private final int kind;
/**
* Absolute repository path
*/
protected final IPath path;
private GitModelObject[] children;
/**
* @param parent
* parent object
* @param fullPath
* absolute object path
* @param kind
* type of change
*/
public GitModelTree(GitModelObjectContainer parent, IPath fullPath,
int kind) {
super(parent);
this.kind = kind;
this.path = fullPath;
}
@Override
public String getName() {
return path.lastSegment();
}
@Override
public IPath getLocation() {
return path;
}
@Override
public int getKind() {
return kind;
}
@Override
public int repositoryHashCode() {
return getParent().repositoryHashCode();
}
@Override
public GitModelObject[] getChildren() {
return children;
}
@Override
public void dispose() {
if (children != null) {
for (GitModelObject object : children)
object.dispose();
children = null;
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getParent() == null) ? 0 : getParent().hashCode());
result = prime * result + ((path == null) ? 0 : path.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
GitModelTree other = (GitModelTree) obj;
if (getParent() == null) {
if (other.getParent() != null)
return false;
} else if (!getParent().equals(other.getParent()))
return false;
if (path == null) {
if (other.path != null)
return false;
} else if (!path.equals(other.path))
return false;
return true;
}
@Override
public String toString() {
return "ModelTree[location=" + getLocation() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
}
void setChildren(List<GitModelObject> children) {
this.children = children.toArray(new GitModelObject[children.size()]);
}
}