summaryrefslogtreecommitdiff
path: root/plugins/svn4idea/src/org/jetbrains/idea/svn/history/LogEntryPath.java
diff options
context:
space:
mode:
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.java132
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);
+ }
+ }
+}