blob: 55efa0b43418a938807b5155765d55be7b7e13dc [file] [log] [blame]
/*
* Copyright 2000-2013 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.zmlx.hg4idea.repo;
import com.google.common.base.Objects;
import com.intellij.dvcs.repo.Repository;
import com.intellij.vcs.log.Hash;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.zmlx.hg4idea.HgNameWithHashInfo;
import java.util.*;
public class HgRepoInfo {
@NotNull private String myCurrentBranch = HgRepository.DEFAULT_BRANCH;
@Nullable private final String myTipRevision;
@Nullable private final String myCurrentRevision;
@NotNull private final Repository.State myState;
@Nullable private String myCurrentBookmark = null;
@NotNull private Map<String, Set<Hash>> myBranches = Collections.emptyMap();
@NotNull private Set<HgNameWithHashInfo> myBookmarks = Collections.emptySet();
@NotNull private Set<HgNameWithHashInfo> myTags = Collections.emptySet();
@NotNull private Set<HgNameWithHashInfo> myLocalTags = Collections.emptySet();
@NotNull Set<HgNameWithHashInfo> mySubrepos = Collections.emptySet();
public HgRepoInfo(@NotNull String currentBranch,
@Nullable String currentRevision,
@Nullable String currentTipRevision,
@NotNull Repository.State state,
@NotNull Map<String, Set<Hash>> branches,
@NotNull Collection<HgNameWithHashInfo> bookmarks,
@Nullable String currentBookmark,
@NotNull Collection<HgNameWithHashInfo> tags,
@NotNull Collection<HgNameWithHashInfo> localTags, @NotNull Collection<HgNameWithHashInfo> subrepos) {
myCurrentBranch = currentBranch;
myCurrentRevision = currentRevision;
myTipRevision = currentTipRevision;
myState = state;
myBranches = branches;
myBookmarks = new LinkedHashSet<HgNameWithHashInfo>(bookmarks);
myCurrentBookmark = currentBookmark;
myTags = new LinkedHashSet<HgNameWithHashInfo>(tags);
myLocalTags = new LinkedHashSet<HgNameWithHashInfo>(localTags);
mySubrepos = new HashSet<HgNameWithHashInfo>(subrepos);
}
@NotNull
public String getCurrentBranch() {
return myCurrentBranch;
}
@NotNull
public Map<String, Set<Hash>> getBranches() {
return myBranches;
}
@NotNull
public Collection<HgNameWithHashInfo> getBookmarks() {
return myBookmarks;
}
@NotNull
public Collection<HgNameWithHashInfo> getTags() {
return myTags;
}
@NotNull
public Collection<HgNameWithHashInfo> getLocalTags() {
return myLocalTags;
}
@Nullable
public String getTipRevision() {
return myTipRevision;
}
@Nullable
public String getCurrentRevision() {
return myCurrentRevision;
}
@Nullable
public String getCurrentBookmark() {
return myCurrentBookmark;
}
@NotNull
public Repository.State getState() {
return myState;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
HgRepoInfo info = (HgRepoInfo)o;
if (myState != info.myState) return false;
if (myTipRevision != null ? !myTipRevision.equals(info.myTipRevision) : info.myTipRevision != null) return false;
if (myCurrentRevision != null ? !myCurrentRevision.equals(info.myCurrentRevision) : info.myCurrentRevision != null) return false;
if (!myCurrentBranch.equals(info.myCurrentBranch)) return false;
if (myCurrentBookmark != null ? !myCurrentBookmark.equals(info.myCurrentBookmark) : info.myCurrentBookmark != null) return false;
if (!myBranches.equals(info.myBranches)) return false;
if (!myBookmarks.equals(info.myBookmarks)) return false;
if (!myTags.equals(info.myTags)) return false;
if (!myLocalTags.equals(info.myLocalTags)) return false;
if (!mySubrepos.equals(info.mySubrepos)) return false;
return true;
}
@Override
public int hashCode() {
return Objects.hashCode(myCurrentBranch, myCurrentRevision, myTipRevision, myCurrentBookmark, myState, myBranches, myBookmarks, myTags,
myLocalTags, mySubrepos);
}
@Override
@NotNull
public String toString() {
return String.format("HgRepository{myCurrentBranch=%s, myCurrentRevision='%s', myState=%s}",
myCurrentBranch, myCurrentRevision, myState);
}
public boolean hasSubrepos() {
return !mySubrepos.isEmpty();
}
@NotNull
public Collection<HgNameWithHashInfo> getSubrepos() {
return mySubrepos;
}
}