/**
 * MenuGroupTest.java
 * Created on May 27, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.job;

import java.util.ArrayList;
import java.util.List;

import com.tandbergtv.watchpoint.pmm.entities.EntityType;
import com.tandbergtv.watchpoint.pmm.job.conf.ParameterReferenceFileParser;
import com.tandbergtv.watchpoint.pmm.job.conf.ParameterReferenceGroup;
import com.tandbergtv.watchpoint.pmm.web.formbeans.job.OptionItemForm;
import com.tandbergtv.watchpoint.pmm.web.formbeans.job.OptionsGroupForm;
import com.tandbergtv.watchpoint.pmm.web.util.JobFormPopulator;
import  com.tandbergtv.watchpoint.pmm.job.util.ParameterReferenceHelper;

import junit.framework.TestCase;

/**
 * @author spuranik
 *
 */
public class MenuGroupTest extends TestCase {

	public void _testBuildingGroup()
	{
		try {
			EntityType type = EntityType.toType("PARTNER");
			ParameterReferenceFileParser parser = ParameterReferenceFileParser.getInstance();
			List<ParameterReferenceGroup> ruleGroups = parser.getRules(type);		
			
			List<OptionsGroupForm> parameterForms = JobFormPopulator.prepareOptionForms(ruleGroups);
			
			List<String> allGroups = new ArrayList<String>();
			for(OptionsGroupForm group : parameterForms){
				allGroups.add(buildGroupString(group));
			}
			
			for(String g : allGroups)
				System.out.println(g);
		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}
	
	private String buildGroupString(OptionsGroupForm group) {
		StringBuilder options = new StringBuilder();
		options.append("<optgroup label='" + group.getName() + "'>");

		List<OptionItemForm> items = group.getItems();
		if (items != null) {
			// at this point all items are simple items and not groups
			// as the action class has separated out the group items into different
			// groups prefixed with parent group name.
			for (OptionItemForm item : items) {
				String refPropertyValue = ParameterReferenceHelper.buildParameterReferenceProperty(
						group.getName(), item.getName());
				options.append("<option value=" + refPropertyValue + ">" + item.getName()
						+ "</option>");
			}
			options.append("</optgroup>");
		}
		return options.toString();
	}	 
}
