Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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 com.intellij.openapi.vcs.changes;
 
 import  com.intellij.openapi.project.Project;
 import  com.intellij.openapi.util.Comparing;
 import  com.intellij.openapi.util.SystemInfo;
 import  com.intellij.openapi.vcs.FileStatus;
 import  com.intellij.openapi.vcs.VcsBundle;
 import  com.intellij.openapi.vfs.VirtualFile;
 import  org.jetbrains.annotations.NonNls;
 import  org.jetbrains.annotations.Nullable;
 
 import javax.swing.*;
 import java.io.File;
 import java.util.Map;

Author(s):
max
 
 public class Change {
   private int myHash;
 
   public enum Type {
     MODIFICATION,
     NEW,
     DELETED,
     MOVED
   }
 
   private final ContentRevision myBeforeRevision;
   private final ContentRevision myAfterRevision;
   private final FileStatus myFileStatus;
   protected String myMoveRelativePath;
   protected boolean myRenamed;
   protected boolean myMoved;
   protected boolean myRenameOrMoveCached = false;
   private boolean myIsReplaced;
   private Type myType;
   private final Map<StringChangemyOtherLayers;
 
   public Change(@Nullable final ContentRevision beforeRevision, @Nullable final ContentRevision afterRevision) {
     this(beforeRevisionafterRevisionconvertStatus(beforeRevisionafterRevision));
   }
 
   public Change(@Nullable final ContentRevision beforeRevision, @Nullable final ContentRevision afterRevision, @Nullable FileStatus fileStatus) {
     assert beforeRevision != null || afterRevision != null;
      = beforeRevision;
      = afterRevision;
      = fileStatus == null ? convertStatus(beforeRevisionafterRevision) : fileStatus;
      = -1;
      = new HashMap<StringChange>(0);
   }
 
   private static FileStatus convertStatus(@Nullable ContentRevision beforeRevision, @Nullable ContentRevision afterRevision) {
     if (beforeRevision == nullreturn FileStatus.ADDED;
     if (afterRevision == nullreturn FileStatus.DELETED;
     return FileStatus.MODIFIED;
   }
 
   public void addAdditionalLayerElement(final String namefinal Change change) {
     .put(namechange);
   }
 
   public Map<StringChangegetOtherLayers() {
     return ;
   }
 
   public boolean isTreeConflict() {
     return false;
   }
 
   public boolean isPhantom() {
     return false;
   }
 
   public boolean hasOtherLayers() {
     return ! .isEmpty();
   }
 
   public Type getType() {
    if ( == null) {
      if ( == null) {
         = .;
        return ;
      }
      if ( == null) {
         = .;
        return ;
      }
      if ((! Comparing.equal(.getFile(), .getFile())) ||
          ((! SystemInfo.isFileSystemCaseSensitive) && VcsFilePathUtil
         = .;
        return ;
      }
       = .;
    }
    return ;
  }
  @Nullable
    return ;
  }
  @Nullable
    return ;
  }
  public FileStatus getFileStatus() {
    return ;
  }
  @Nullable
  public VirtualFile getVirtualFile() {
    return  == null ? null : .getFile().getVirtualFile();
  }
  public boolean equals(final Object o) {
    if (this == oreturn true;
    if (o == null || (! (o instanceof Change))) return false;
    final Change otherChange = ((Change)o);
    final ContentRevision br1 = getBeforeRevision();
    final ContentRevision br2 = otherChange.getBeforeRevision();
    final ContentRevision ar1 = getAfterRevision();
    final ContentRevision ar2 = otherChange.getAfterRevision();
    FilePath fbr1 = br1 != null ? br1.getFile() : null;
    FilePath fbr2 = br2 != null ? br2.getFile() : null;
    FilePath far1 = ar1 != null ? ar1.getFile() : null;
    FilePath far2 = ar2 != null ? ar2.getFile() : null;
    return Comparing.equal(fbr1fbr2) && Comparing.equal(far1far2);
  }
  public int hashCode() {
    if ( == -1) {
       = calculateHash();
    }
    return ;
  }
  private int calculateHash() {
  }
  private static int revisionHashCode(ContentRevision rev) {
    if (rev == nullreturn 0;
    return rev.getFile().getIOFile().getPath().hashCode();
  }
  public boolean affectsFile(File ioFile) {
    if ( != null && .getFile().getIOFile().equals(ioFile)) return true;
    if ( != null && .getFile().getIOFile().equals(ioFile)) return true;
    return false;
  }
  public boolean isRenamed() {
    cacheRenameOrMove(null);
    return ;
  }
  public boolean isMoved() {
    cacheRenameOrMove(null);
    return ;
  }
  public String getMoveRelativePath(Project project) {
    cacheRenameOrMove(project);
    return ;
  }
  private void cacheRenameOrMove(final Project project) {
    if ( != null &&  != null && (! revisionPathsSame())) {
      if (!) {
         = true;
        if (Comparing.equal(.getFile().getParentPath(), .getFile().getParentPath())) {
           = true;
        }
        else {
           = true;
        }
      }
      if ( &&  == null && project != null) {
         = VcsPathPresenter.getInstance(project).getPresentableRelativePath();
      }
    }
  }
  private boolean revisionPathsSame() {
    final String path2 = .getFile().getIOFile().getAbsolutePath();
    return path1.equals(path2);
  }
  @NonNls
  public String toString() {
    final Type type = getType();
    //noinspection EnumSwitchStatementWhichMissesCases
    switch (type) {
      case return "A: " + ;
      case return "D: " + ;
      case return "M: " +  + " -> " + ;
      defaultreturn "M: " + ;
    }
  }
  @Nullable
  public String getOriginText(final Project project) {
    cacheRenameOrMove(project);
    if (isMoved()) {
      return getMovedText(project);
    } else if (isRenamed()) {
      return getRenamedText();
    }
    return  ? VcsBundle.message("change.file.replaced.text") : null;
  }
  @Nullable
  protected String getRenamedText() {
    return VcsBundle.message("change.file.renamed.from.text".getFile().getName());
  }
  @Nullable
  protected String getMovedText(final Project project) {
    return VcsBundle.message("change.file.moved.from.text"getMoveRelativePath(project));
  }
  public boolean isIsReplaced() {
    return ;
  }
  public void setIsReplaced(final boolean isReplaced) {
     = isReplaced;
  }
  @Nullable
  public Icon getAdditionalIcon() {
    return null;
  }
  @Nullable
  public String getDescription() {
    return null;
  }
New to GrepCode? Check out our FAQ X