diff options
Diffstat (limited to 'plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java')
-rw-r--r-- | plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java new file mode 100644 index 000000000000..41215f71f76e --- /dev/null +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java @@ -0,0 +1,132 @@ +/* + * 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.history; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.idea.svn.api.BaseNodeDescription; +import org.jetbrains.idea.svn.api.NodeKind; +import org.jetbrains.idea.svn.commandLine.CommandUtil; +import org.tmatesoft.svn.core.SVNLogEntryPath; + +import javax.xml.bind.annotation.*; + +/** + * @author Konstantin Kolosovsky. + */ +public class LogEntryPath extends BaseNodeDescription { + + private final String myPath; + private final char myType; + private final String myCopyPath; + private final long myCopyRevision; + + @NotNull + public static LogEntryPath.Builder create(@NotNull SVNLogEntryPath path) { + return new LogEntryPath.Builder().setPath(path.getPath()).setType(path.getType()).setCopyFromPath( + path.getCopyPath()).setCopyFromRevision(path.getCopyRevision()).setKind(NodeKind.from(path.getKind())); + } + + public LogEntryPath(@NotNull LogEntryPath.Builder builder) { + super(builder.kind); + myPath = builder.path; + myType = CommandUtil.getStatusChar(builder.action); + myCopyPath = builder.copyFromPath; + myCopyRevision = builder.copyFromRevision; + } + + public String getCopyPath() { + return myCopyPath; + } + + public long getCopyRevision() { + return myCopyRevision; + } + + public String getPath() { + return myPath; + } + + public char getType() { + return myType; + } + + @NotNull + public NodeKind getKind() { + return myKind; + } + + @XmlAccessorType(XmlAccessType.NONE) + // type explicitly specified not to conflict with LogEntry.Builder + @XmlType(name = "logentrypath") + public static class Builder { + + // empty string could be here if repository was < 1.6 when committing (see comments in schema for svn client xml output , in + // svn source code repository) - this will result in kind = NodeKind.UNKNOWN + @XmlAttribute(name = "kind", required = true) + private NodeKind kind; + + @XmlAttribute(name = "action") + private String action; + + @XmlAttribute(name = "copyfrom-path") + private String copyFromPath; + + @XmlAttribute(name = "copyfrom-rev") + private long copyFromRevision; + + @XmlValue + private String path; + + public String getPath() { + return path; + } + + @NotNull + public Builder setKind(@NotNull NodeKind kind) { + this.kind = kind; + return this; + } + + @NotNull + public Builder setType(char type) { + this.action = String.valueOf(type); + return this; + } + + @NotNull + public Builder setCopyFromPath(String copyFromPath) { + this.copyFromPath = copyFromPath; + return this; + } + + @NotNull + public Builder setCopyFromRevision(long copyFromRevision) { + this.copyFromRevision = copyFromRevision; + return this; + } + + @NotNull + public Builder setPath(String path) { + this.path = path; + return this; + } + + @NotNull + public LogEntryPath build() { + return new LogEntryPath(this); + } + } +} |