diff options
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.java | 313 |
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; + } +} |