| /* |
| * 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()); |
| } |
| } |