blob: e29e6e468bd1e25b581d3f7fde74506b35733282 [file] [log] [blame]
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.idea.svn.browse;
import com.intellij.util.ObjectUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.api.BaseNodeDescription;
import org.jetbrains.idea.svn.api.NodeKind;
import org.jetbrains.idea.svn.checkin.CommitInfo;
import org.tmatesoft.svn.core.SVNDirEntry;
import org.tmatesoft.svn.core.SVNURL;
import java.util.Date;
/**
* @author Konstantin Kolosovsky.
*/
public class DirectoryEntry extends BaseNodeDescription implements Comparable<DirectoryEntry> {
private final String myName;
@NotNull private final CommitInfo myCommitInfo;
private final String myPath;
private final SVNURL myUrl;
private final SVNURL myRepositoryRoot;
@NotNull
public static DirectoryEntry create(@NotNull SVNDirEntry entry) {
return new DirectoryEntry(entry.getURL(), entry.getRepositoryRoot(), entry.getName(), NodeKind.from(entry.getKind()),
new CommitInfo.Builder(entry.getRevision(), entry.getDate(), entry.getAuthor()).build(),
entry.getRelativePath());
}
public DirectoryEntry(SVNURL url,
SVNURL repositoryRoot,
String name,
@NotNull NodeKind kind,
@Nullable CommitInfo commitInfo,
String path) {
super(kind);
myUrl = url;
myRepositoryRoot = repositoryRoot;
myName = name;
myCommitInfo = ObjectUtils.notNull(commitInfo, CommitInfo.EMPTY);
myPath = path;
}
public SVNURL getUrl() {
return myUrl;
}
public SVNURL getRepositoryRoot() {
return myRepositoryRoot;
}
public String getName() {
return myName;
}
@NotNull
public NodeKind getKind() {
return myKind;
}
public Date getDate() {
return myCommitInfo.getDate();
}
public long getRevision() {
return myCommitInfo.getRevision();
}
public String getAuthor() {
return myCommitInfo.getAuthor();
}
public String getRelativePath() {
return myPath == null ? myName : myPath;
}
@Override
public int compareTo(@NotNull DirectoryEntry o) {
int result = getKind().compareTo(o.getKind());
return result != 0 ? result : myUrl.toString().compareTo(o.getUrl().toString());
}
}