All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.wiki.VersionInfo Maven / Gradle / Ivy

There is a newer version: 20240707
Show newest version
// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.wiki;

import java.util.Date;
import java.util.GregorianCalendar;

public class VersionInfo implements Comparable {
  private String name;
  private String author;
  private Date creationTime;

  public VersionInfo(String name, String author, Date creationTime) {
    this.name = name;
    this.author = author;
    this.creationTime = new Date(creationTime.getTime());
  }

  public static VersionInfo makeVersionInfo(String author, Date creationTime) {
    String versionName = WikiImportProperty.getTimeFormat().format(creationTime);
    if (author != null && !"".equals(author)) {
      versionName = author + "-" + versionName;
    }
    return new VersionInfo(versionName, author, creationTime);
  }

  public static VersionInfo makeVersionInfo(final PageData data) {
    return makeVersionInfo(data.getAttribute(PageData.LAST_MODIFYING_USER),
            data.getProperties().getLastModificationTime());
  }

  public String getAuthor() {
    return author;
  }

  public Date getCreationTime() {
    return new Date(creationTime.getTime());
  }

  public String getName() {
    return name;
  }

  public String getAge() {
    Date now = new GregorianCalendar().getTime();
    return howLongAgoString(now, getCreationTime());
  }
  
  public static String howLongAgoString(Date now, Date then) {
    long time = Math.abs(now.getTime() - then.getTime()) / 1000;

    if (time < 60)
      return pluralize(time, "second");
    else if (time < 3600)
      return pluralize(time / 60, "minute");
    else if (time < 86400)
      return pluralize(time / (3600), "hour");
    else if (time < 31536000)
      return pluralize(time / (86400), "day");
    else
      return pluralize(time / (31536000), "year");
  }

  private static String pluralize(long time, String unit) {
    String age = time + " " + unit;
    if (time > 1)
      age = age + "s";

    return age;
  }

  @Override
  public int compareTo(VersionInfo otherVersion) {
      return getCreationTime().compareTo(otherVersion.getCreationTime());
  }

  @Override
  public String toString() {
    return getName();
  }

  @Override
  public boolean equals(Object o) {
    if (o != null && o instanceof VersionInfo) {
      VersionInfo otherVersion = (VersionInfo) o;
      return getName().equals(otherVersion.getName());
    } else
      return false;
  }

  @Override
  public int hashCode() {
    return getName().hashCode();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy