// Path: src/org/github/irengrig/fossil4idea/repository/FossilContentRevision.java
// public class FossilContentRevision implements ContentRevision {
//   private final Project myProject;
//   private final FilePath myFilePath;
//   private final FossilRevisionNumber myNumber;
// 
//   public FossilContentRevision(final Project project, final FilePath filePath, final FossilRevisionNumber number) {
//     myProject = project;
//     myFilePath = filePath;
//     myNumber = number;
//   }
// 
//   @Nullable
//   @Override
//   public String getContent() throws VcsException {
//     try {
//       return ContentRevisionCache.getOrLoadAsString(myProject, myFilePath, myNumber, FossilVcs.getVcsKey(),
//           ContentRevisionCache.UniqueType.REPOSITORY_CONTENT, new Throwable2Computable<byte[], VcsException, IOException>() {
//         @Override
//         public byte[] compute() throws VcsException, IOException {
//           return new CatWorker(myProject).cat(myFilePath.getIOFile(), myNumber.getHash()).getBytes();
//         }
//       });
//     } catch (IOException e) {
//       throw new FossilException(e);
//     }
//   }
// 
//   @NotNull
//   @Override
//   public FilePath getFile() {
//     return myFilePath;
//   }
// 
//   @NotNull
//   @Override
//   public FossilRevisionNumber getRevisionNumber() {
//     return myNumber;
//   }
// 
//   public Project getProject() {
//     return myProject;
//   }
// }
// 
// Path: src/org/github/irengrig/fossil4idea/repository/FossilRevisionNumber.java
// public class FossilRevisionNumber implements VcsRevisionNumber {
//   public final static FossilRevisionNumber UNKNOWN = new FossilRevisionNumber("0", null);
// 
//   // todo special HEAD revision??
//   @NotNull
//   private final String myHash;
//   private final Date myDate;
// 
//   public FossilRevisionNumber(final String hash, @Nullable final Date date) {
//     myHash = hash;
//     myDate = date;
//   }
// 
//   @Override
//   public String asString() {
//     return myHash;
//   }
// 
//   @Override
//   public int compareTo(final VcsRevisionNumber o) {
//     if (o instanceof FossilRevisionNumber) {
//       if (myDate != null && ((FossilRevisionNumber) o).myDate != null) {
//         return myDate.compareTo(((FossilRevisionNumber) o).myDate);
//       }
//     }
//     return 0;
//   }
// 
//   @NotNull
//   public String getHash() {
//     return myHash;
//   }
// 
//   public Date getDate() {
//     return myDate;
//   }
// 
//   @Override
//   public boolean equals(final Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
// 
//     final FossilRevisionNumber that = (FossilRevisionNumber) o;
// 
//     if (!myHash.equals(that.myHash)) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode() {
//     return myHash.hashCode();
//   }
// }


import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.openapi.vcs.RepositoryLocation;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.history.VcsFileRevision;
import com.intellij.openapi.vcs.history.VcsRevisionNumber;
import org.github.irengrig.fossil4idea.repository.FossilContentRevision;
import org.jetbrains.annotations.Nullable;
import org.github.irengrig.fossil4idea.repository.FossilRevisionNumber;
import java.io.IOException;
import java.util.Date;
package org.github.irengrig.fossil4idea.log;



/**
 * Created with IntelliJ IDEA.
 * User: Irina.Chernushina
 * Date: 2/24/13
 * Time: 8:13 PM
 */
public class FossilFileRevision implements VcsFileRevision {
  private final String myAuthor;
  private final String myComment;
  private final FossilContentRevision myContentRevision;

// Path: src/org/github/irengrig/fossil4idea/repository/FossilContentRevision.java
// public class FossilContentRevision implements ContentRevision {
//   private final Project myProject;
//   private final FilePath myFilePath;
//   private final FossilRevisionNumber myNumber;
// 
//   public FossilContentRevision(final Project project, final FilePath filePath, final FossilRevisionNumber number) {
//     myProject = project;
//     myFilePath = filePath;
//     myNumber = number;
//   }
// 
//   @Nullable
//   @Override
//   public String getContent() throws VcsException {
//     try {
//       return ContentRevisionCache.getOrLoadAsString(myProject, myFilePath, myNumber, FossilVcs.getVcsKey(),
//           ContentRevisionCache.UniqueType.REPOSITORY_CONTENT, new Throwable2Computable<byte[], VcsException, IOException>() {
//         @Override
//         public byte[] compute() throws VcsException, IOException {
//           return new CatWorker(myProject).cat(myFilePath.getIOFile(), myNumber.getHash()).getBytes();
//         }
//       });
//     } catch (IOException e) {
//       throw new FossilException(e);
//     }
//   }
// 
//   @NotNull
//   @Override
//   public FilePath getFile() {
//     return myFilePath;
//   }
// 
//   @NotNull
//   @Override
//   public FossilRevisionNumber getRevisionNumber() {
//     return myNumber;
//   }
// 
//   public Project getProject() {
//     return myProject;
//   }
// }
// 
// Path: src/org/github/irengrig/fossil4idea/repository/FossilRevisionNumber.java
// public class FossilRevisionNumber implements VcsRevisionNumber {
//   public final static FossilRevisionNumber UNKNOWN = new FossilRevisionNumber("0", null);
// 
//   // todo special HEAD revision??
//   @NotNull
//   private final String myHash;
//   private final Date myDate;
// 
//   public FossilRevisionNumber(final String hash, @Nullable final Date date) {
//     myHash = hash;
//     myDate = date;
//   }
// 
//   @Override
//   public String asString() {
//     return myHash;
//   }
// 
//   @Override
//   public int compareTo(final VcsRevisionNumber o) {
//     if (o instanceof FossilRevisionNumber) {
//       if (myDate != null && ((FossilRevisionNumber) o).myDate != null) {
//         return myDate.compareTo(((FossilRevisionNumber) o).myDate);
//       }
//     }
//     return 0;
//   }
// 
//   @NotNull
//   public String getHash() {
//     return myHash;
//   }
// 
//   public Date getDate() {
//     return myDate;
//   }
// 
//   @Override
//   public boolean equals(final Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
// 
//     final FossilRevisionNumber that = (FossilRevisionNumber) o;
// 
//     if (!myHash.equals(that.myHash)) return false;
// 
//     return true;
//   }
// 
//   @Override
//   public int hashCode() {
//     return myHash.hashCode();
//   }
// }


// Path: src/org/github/irengrig/fossil4idea/log/FossilFileRevision.java
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.openapi.vcs.RepositoryLocation;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.history.VcsFileRevision;
import com.intellij.openapi.vcs.history.VcsRevisionNumber;
import org.github.irengrig.fossil4idea.repository.FossilContentRevision;
import org.jetbrains.annotations.Nullable;
import org.github.irengrig.fossil4idea.repository.FossilRevisionNumber;
import java.io.IOException;
import java.util.Date;

package org.github.irengrig.fossil4idea.log;



/**
 * Created with IntelliJ IDEA.
 * User: Irina.Chernushina
 * Date: 2/24/13
 * Time: 8:13 PM
 */
public class FossilFileRevision implements VcsFileRevision {
  private final String myAuthor;
  private final String myComment;
  private final FossilContentRevision myContentRevision;

  public FossilFileRevision(final Project project, final FilePath filePath, final FossilRevisionNumber revisionNumber,