History.java

package org.ferris.riviera.console.history;

import java.sql.Timestamp;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

/**
 *
 * @author Michael Remijan mjremijan@yahoo.com @mjremijan
 */
public class History {
    final private String releaseVersion;
    final private String releaseTitle;
    final private Integer major;
    final private Integer feature;
    final private Integer bug;
    final private Integer build;
    final private String fileName;
    final private String fileDescription;
    final private Timestamp appliedOn;

    public History(
        String releaseVersion,
        String releaseTitle,
        Integer major,
        Integer feature,
        Integer bug,
        Integer build,
        String fileName,
        String fileDescription,
        Timestamp appliedOn
    ) {
        this.releaseVersion = releaseVersion;
        this.releaseTitle = releaseTitle;
        this.major = major;
        this.feature = feature;
        this.bug = bug;
        this.build = build;
        this.fileName = fileName;
        this.fileDescription = fileDescription;
        this.appliedOn = appliedOn;
    }

    public String toVersionString() {
        return String.format("%d.%d.%d.%d",
            major,
            feature,
            bug,
            build
        );
    }

    @Override
    public String toString() {
        return this.fileName;
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder()
            .append(major)
            .append(feature)
            .append(bug)
            .append(build)
            .toHashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (obj.getClass() != getClass()) {
            return false;
        }
        History rhs = (History) obj;
        return new EqualsBuilder()
            .append(major, rhs.major)
            .append(feature, rhs.feature)
            .append(bug, rhs.bug)
            .append(build, rhs.build)
            .isEquals();
    }

    public String getReleaseVersion() {
        return releaseVersion;
    }

    public String getReleaseTitle() {
        return releaseTitle;
    }

    public Integer getMajor() {
        return major;
    }

    public Integer getFeature() {
        return feature;
    }

    public Integer getBug() {
        return bug;
    }

    public Integer getBuild() {
        return build;
    }

    public String getFileName() {
        return fileName;
    }

    public String getFileDescription() {
        return fileDescription;
    }

    public Timestamp getAppliedOn() {
        return appliedOn;
    }
}