blob: 41215f71f76ee6480b1e87c2c8133d530d7d6904 [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.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);
}
}
}