/**
 * MonthDataProvider.java
 * Created on Sep 15, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.web.schedule.search;

import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.Map;

import com.tandbergtv.workflow.web.page.ISearchFieldDataProvider;

/**
 * This class returns a month map ([2 digit formatted int]->[MMM])    
 * 
 * @author spuranik
 * 
 */
public class MonthDataProvider implements ISearchFieldDataProvider {

	private static String MONTH_NAME_FORMAT = "MMM"; 
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.tandbergtv.workflow.web.page.ISearchFieldDataProvider#getData()
	 */
	public Map<String, String> getData() {

		Map<String, String> months = new LinkedHashMap<String, String>();

		// add an empty entry, so the user always has to select something
		months.put("", "");
		
		// formatter for the month number in the key
		NumberFormat formatter = NumberFormat.getInstance();
		formatter.setMaximumIntegerDigits(2);
		formatter.setMinimumIntegerDigits(2);
		
		// month name formatter.
		SimpleDateFormat dateFormatter = new SimpleDateFormat(MONTH_NAME_FORMAT);
		
		// Add each month (formatted string) and its key in the map.  
		for (int i = Calendar.JANUARY; i <= Calendar.DECEMBER; i++) {
			Calendar c = Calendar.getInstance();
			c.set(Calendar.MONTH, i);
			months.put(formatter.format((long) i + 1), dateFormatter.format(c.getTime()));
		}

		return months;
	}
}
