package com.tandbergtv.metadatamanager.model;

import java.util.ArrayList;
import java.util.List;

import com.tandbergtv.metadatamanager.exception.MetadataException;

/**
 * This class represents a Group which is a root or an internal node in an Asset tree, and may also
 * be an &quot;incomplete&quot; leaf
 * 
 * @author ??
 */
public class Group extends Asset {
	private GroupType groupType;
	
	private List<RootAssetRevision> revisions;

	public void addRevision(RootAssetRevision revision){
		revision.setGroup(this);
		if(this.revisions == null){
			this.revisions = new ArrayList<RootAssetRevision>();
		}
		revisions.add(revision);
	}
	
	public List<RootAssetRevision> getRevisions() {
		return revisions;
	}


	public void addRootAssetRevision(RootAssetRevision newRevision)
			throws MetadataException {
		newRevision.setRevisionNumber(this.getLatestRevisionNumber());
		this.addRevision(newRevision);
	}
	
	
	public void setRevisions(List<RootAssetRevision> revisions) {
		this.revisions = revisions;
	}

	public Group(long id) {
		super();
		this.setId(id);
	}

	public Group() {
		super();
	}

	public String getType() {
		return groupType.name();
	}

	public void setType(String groupType) {
		this.groupType = GroupType.valueOf(groupType);
	}

	public void setType(GroupType groupType) {
		this.groupType = groupType;
	}

	public enum GroupType {
		GROUP,
		PACKAGE,
		CHAPTERLIST
	}
	
	public RootAssetRevision getRevision(int revisionNumber) {
		for(RootAssetRevision r : this.revisions) {
			if(r.getRevisionNumber() == revisionNumber) {
				return r;
			}
		}
		return null;
	}
}
