package com.tandbergtv.metadatamanager.model;

import java.util.Date;

public class RootAssetRevision {
	private long id;

	private Group group;
	private int revisionNumber = NextRevision.STARTING_REVISION_NUMBER;
	private String revisionSource;
	private String revisionComment;
	private Date revisionTime = new Date();
	private String externalRevision;
	private boolean draft;
	
	public static String REVISION_FORMAT = "ExternalRevision"
			+ Asset.EXTERNAL_INTERNAL_REVISION_DELIMITER + "InternalRevision";

	public RootAssetRevision() {
	}

	public RootAssetRevision(String revisionSource, String revisionComment, String externalRevision) {
		super();
		this.revisionSource = revisionSource;
		this.revisionComment = revisionComment;
		this.externalRevision = externalRevision;
	}

	// In the format of ExternalRevision.InternalRevision, e.g. 1.5
	public String getVersion() {
		String externalRevision = "";
		if (this.getExternalRevision() != null) {
			externalRevision = this.getExternalRevision();
		}
		return externalRevision
				+ Asset.EXTERNAL_INTERNAL_REVISION_DELIMITER
				+ this.getRevisionNumber();
	}

	public String getExternalRevision() {
		return externalRevision;
	}

	public void setExternalRevision(String externalRevision) {
		this.externalRevision = externalRevision;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Group getGroup() {
		return group;
	}

	public void setGroup(Group group) {
		this.group = group;
	}

	public int getRevisionNumber() {
		return revisionNumber;
	}

	public void setRevisionNumber(int revisionNumber) {
		this.revisionNumber = revisionNumber;
	}

	public String getRevisionSource() {
		return revisionSource;
	}

	public void setRevisionSource(String revisionSource) {
		this.revisionSource = revisionSource;
	}

	public String getRevisionComment() {
		return revisionComment;
	}

	public void setRevisionComment(String revisionComment) {
		this.revisionComment = revisionComment;
	}

	public Date getRevisionTime() {
		return revisionTime;
	}

	public boolean isDraft() {
		return draft;
	}

	public void setDraft(boolean draft) {
		this.draft = draft;
	}

	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append("Revision(" + getRevisionNumber() + "): RevisionSource("
				+ getRevisionSource() + "), RevisionComment("
				+ getRevisionComment() + "), RevisionTime(" + getRevisionTime()
				+ ")");
		return sb.toString();
	}

}
