summaryrefslogtreecommitdiff
path: root/plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java')
-rw-r--r--plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java313
1 files changed, 313 insertions, 0 deletions
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java
new file mode 100644
index 000000000000..7fc81510076f
--- /dev/null
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/status/Status.java
@@ -0,0 +1,313 @@
+/*
+ * 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.status;
+
+import com.intellij.openapi.util.Condition;
+import com.intellij.util.containers.ContainerUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.idea.svn.api.NodeKind;
+import org.jetbrains.idea.svn.conflict.TreeConflictDescription;
+import org.jetbrains.idea.svn.lock.Lock;
+import org.tmatesoft.svn.core.SVNURL;
+import org.tmatesoft.svn.core.wc.SVNRevision;
+import org.tmatesoft.svn.core.wc.SVNStatus;
+
+import java.io.File;
+
+/**
+ * TODO: Could also inherit BaseNodeDescription when myKind becomes final.
+ *
+ * @author Konstantin Kolosovsky.
+ */
+public class Status {
+ private SVNURL myURL;
+ private File myFile;
+ private @NotNull NodeKind myKind;
+ private SVNRevision myRevision;
+ private SVNRevision myCommittedRevision;
+ private StatusType myContentsStatus;
+ private StatusType myPropertiesStatus;
+ private StatusType myRemoteContentsStatus;
+ private StatusType myRemoteNodeStatus;
+ private StatusType myRemotePropertiesStatus;
+ private boolean myIsLocked;
+ private boolean myIsCopied;
+ private boolean myIsSwitched;
+ private String myCopyFromURL;
+ @Nullable private Lock myRemoteLock;
+ @Nullable private Lock myLocalLock;
+ private SVNRevision myRemoteRevision;
+ private String myChangelistName;
+ @Nullable private TreeConflictDescription myTreeConflict;
+ private boolean myIsConflicted;
+
+ private StatusType myNodeStatus;
+ private SVNURL myRepositoryRootURL;
+
+ @Nullable
+ public static Status create(@Nullable SVNStatus status) {
+ Status result = null;
+
+ if (status != null) {
+ result =
+ new Status(status.getURL(), status.getFile(), NodeKind.from(status.getKind()), status.getRevision(), status.getCommittedRevision(),
+ StatusType.from(status.getContentsStatus()), StatusType.from(status.getPropertiesStatus()),
+ StatusType.from(status.getRemoteContentsStatus()), StatusType.from(status.getRemotePropertiesStatus()),
+ status.isLocked(), status.isCopied(), status.isSwitched(), status.getCopyFromURL(), Lock.create(status.getRemoteLock()),
+ Lock.create(status.getLocalLock()), status.getChangelistName(),
+ TreeConflictDescription.create(status.getTreeConflict()));
+ result.setIsConflicted(status.isConflicted());
+ result.setNodeStatus(StatusType.from(status.getNodeStatus()));
+ result.setRemoteNodeStatus(StatusType.from(status.getRemoteNodeStatus()));
+ result.setRemoteRevision(status.getRemoteRevision());
+ result.setRepositoryRootURL(status.getRepositoryRootURL());
+ }
+
+ return result;
+ }
+
+ public Status(SVNURL url,
+ File file,
+ @NotNull NodeKind kind,
+ SVNRevision revision,
+ SVNRevision committedRevision,
+ StatusType contentsStatus,
+ StatusType propertiesStatus,
+ StatusType remoteContentsStatus,
+ StatusType remotePropertiesStatus,
+ boolean isLocked,
+ boolean isCopied,
+ boolean isSwitched,
+ String copyFromURL,
+ @Nullable Lock remoteLock,
+ @Nullable Lock localLock,
+ String changelistName,
+ @Nullable TreeConflictDescription treeConflict) {
+ myURL = url;
+ myFile = file;
+ myKind = kind;
+ myRevision = revision == null ? SVNRevision.UNDEFINED : revision;
+ myCommittedRevision = committedRevision == null ? SVNRevision.UNDEFINED : committedRevision;
+ myContentsStatus = contentsStatus == null ? StatusType.STATUS_NONE : contentsStatus;
+ myPropertiesStatus = propertiesStatus == null ? StatusType.STATUS_NONE : propertiesStatus;
+ myRemoteContentsStatus = remoteContentsStatus == null ? StatusType.STATUS_NONE : remoteContentsStatus;
+ myRemotePropertiesStatus = remotePropertiesStatus == null ? StatusType.STATUS_NONE : remotePropertiesStatus;
+ myRemoteNodeStatus = StatusType.STATUS_NONE;
+ myIsLocked = isLocked;
+ myIsCopied = isCopied;
+ myIsSwitched = isSwitched;
+ myCopyFromURL = copyFromURL;
+ myRemoteLock = remoteLock;
+ myLocalLock = localLock;
+ myChangelistName = changelistName;
+ myTreeConflict = treeConflict;
+ myRemoteRevision = SVNRevision.UNDEFINED;
+ }
+
+ public Status() {
+ setRevision(SVNRevision.UNDEFINED);
+ myRemoteRevision = SVNRevision.UNDEFINED;
+ }
+
+ public SVNURL getURL() {
+ return myURL;
+ }
+
+ public File getFile() {
+ return myFile;
+ }
+
+ @NotNull
+ public NodeKind getKind() {
+ return myKind;
+ }
+
+ public SVNRevision getRevision() {
+ return myRevision;
+ }
+
+ public SVNRevision getCommittedRevision() {
+ return myCommittedRevision;
+ }
+
+ public StatusType getContentsStatus() {
+ return myContentsStatus;
+ }
+
+ public StatusType getPropertiesStatus() {
+ return myPropertiesStatus;
+ }
+
+ public StatusType getRemoteContentsStatus() {
+ return myRemoteContentsStatus;
+ }
+
+ public StatusType getRemotePropertiesStatus() {
+ return myRemotePropertiesStatus;
+ }
+
+ public boolean is(@NotNull StatusType type) {
+ return type.equals(getNodeStatus()) || type.equals(getContentsStatus());
+ }
+
+ public boolean is(@NotNull StatusType... types) {
+ return ContainerUtil.or(types, new Condition<StatusType>() {
+ @Override
+ public boolean value(StatusType type) {
+ return is(type);
+ }
+ });
+ }
+
+ public boolean isLocked() {
+ return myIsLocked;
+ }
+
+ public boolean isCopied() {
+ return myIsCopied;
+ }
+
+ public boolean isSwitched() {
+ return myIsSwitched;
+ }
+
+ public String getCopyFromURL() {
+ return myCopyFromURL;
+ }
+
+ @Nullable
+ public Lock getRemoteLock() {
+ return myRemoteLock;
+ }
+
+ @Nullable
+ public Lock getLocalLock() {
+ return myLocalLock;
+ }
+
+ public SVNRevision getRemoteRevision() {
+ return myRemoteRevision;
+ }
+
+ public String getChangelistName() {
+ return myChangelistName;
+ }
+
+ @Nullable
+ public TreeConflictDescription getTreeConflict() {
+ return myTreeConflict;
+ }
+
+ public boolean isConflicted() {
+ return myIsConflicted;
+ }
+
+ public StatusType getRemoteNodeStatus() {
+ return myRemoteNodeStatus;
+ }
+
+ public StatusType getNodeStatus() {
+ if (myNodeStatus == null) {
+ return myContentsStatus;
+ }
+ return myNodeStatus;
+ }
+
+ public SVNURL getRepositoryRootURL() {
+ return myRepositoryRootURL;
+ }
+
+ public void setURL(SVNURL uRL) {
+ myURL = uRL;
+ }
+
+ public void setFile(File file) {
+ myFile = file;
+ }
+
+ public void setKind(@NotNull NodeKind kind) {
+ myKind = kind;
+ }
+
+ public void setRevision(SVNRevision revision) {
+ myRevision = revision;
+ }
+
+ public void setCommittedRevision(SVNRevision committedRevision) {
+ myCommittedRevision = committedRevision;
+ }
+
+ public void setContentsStatus(StatusType statusType) {
+ myContentsStatus = statusType;
+ }
+
+ public void setPropertiesStatus(StatusType propertiesStatus) {
+ myPropertiesStatus = propertiesStatus;
+ }
+
+ public void setRemoteContentsStatus(StatusType remoteContentsStatus) {
+ myRemoteContentsStatus = remoteContentsStatus;
+ }
+
+ public void setRemotePropertiesStatus(StatusType remotePropertiesStatus) {
+ myRemotePropertiesStatus = remotePropertiesStatus;
+ }
+
+ public void setIsLocked(boolean isLocked) {
+ myIsLocked = isLocked;
+ }
+
+ public void setIsCopied(boolean isCopied) {
+ myIsCopied = isCopied;
+ }
+
+ public void setIsSwitched(boolean isSwitched) {
+ myIsSwitched = isSwitched;
+ }
+
+ public void setRemoteLock(@Nullable Lock remoteLock) {
+ myRemoteLock = remoteLock;
+ }
+
+ public void setLocalLock(@Nullable Lock localLock) {
+ myLocalLock = localLock;
+ }
+
+ public void setChangelistName(String changelistName) {
+ myChangelistName = changelistName;
+ }
+
+ public void setIsConflicted(boolean isConflicted) {
+ myIsConflicted = isConflicted;
+ }
+
+ public void setRemoteNodeStatus(StatusType remoteNodeStatus) {
+ myRemoteNodeStatus = remoteNodeStatus;
+ }
+
+ public void setNodeStatus(StatusType nodeStatus) {
+ myNodeStatus = nodeStatus;
+ }
+
+ public void setRepositoryRootURL(SVNURL repositoryRootURL) {
+ myRepositoryRootURL = repositoryRootURL;
+ }
+
+ public void setRemoteRevision(SVNRevision remoteRevision) {
+ myRemoteRevision = remoteRevision;
+ }
+}