package com.tandbergtv.watchpoint.pmm.core;

import java.util.Collection;

/**
 * Holds mapping information for metadata mapping.
 * 
 * @author Raj Prakash
 */
public class MetadataMapInfo {
	private static final String TITLEID_PREFIX = "titleId:";
	
	public enum Status {
		TITLES_NOT_FOUND,
		TITLES_MERGED
	}
	
	private Status status;
	private StringBuffer mappedTitles = new StringBuffer();
	
	/**
	 * Constructor.
	 * 
	 * @param status	the status to set
	 */
	public MetadataMapInfo(Status status) {
		this.status = status;
	}
	
	/**
	 * @return the status
	 */
	public Status getStatus() {
		return status;
	}
	/**
	 * @param status the status to set
	 */
	public void setStatus(Status status) {
		this.status = status;
	}
	
	public void addMappedTitle(Long titleId, boolean validationSuccess, Collection<String> titleNames) {
		if(mappedTitles.length() > 0)
			mappedTitles.append(", ");
		mappedTitles.append("[")
					.append(TITLEID_PREFIX).append(titleId)
					.append("|")
					.append("Validation ").append(validationSuccess ? "Success" : "Failure")
					.append("|");
		
		boolean firstTime = true;
		if(titleNames != null) {
			for(String titleName : titleNames) {
				if(firstTime)
					firstTime = false;
				else
					mappedTitles.append(", ");
				mappedTitles.append(titleName);
			}
		}
		
		mappedTitles.append("]");
	}
	
	public String getMappedTitles() {
		return mappedTitles.toString();
	}
	
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append("Status: ").append(status).append(" | ");
		sb.append("Mapped Titles: ").append(mappedTitles);
		return sb.toString();
	}
}
