/**
 * RuleParameterTest.java
 * Created on May 31, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.job.unitTests;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import com.tandbergtv.watchpoint.pmm.dao.hibernate.HibernateContext;
import com.tandbergtv.watchpoint.pmm.entities.Rule;
import com.tandbergtv.watchpoint.pmm.entities.RuleParameter;
import com.tandbergtv.watchpoint.pmm.entities.RuleType;
import com.tandbergtv.watchpoint.pmm.job.dao.JobRuleHDAO;

import junit.framework.TestCase;

/**
 * @author spuranik
 *
 */
public class RuleParameterTest extends TestCase {

	/* (non-Javadoc)
	 * @see junit.framework.TestCase#setUp()
	 */
	@Override
	protected void setUp() throws Exception {
		try {
			HibernateContext.getContext().initializeContext();
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
		}
		super.setUp();
	}

	/* (non-Javadoc)
	 * @see junit.framework.TestCase#tearDown()
	 */
	@Override
	protected void tearDown() throws Exception {
		try {
			HibernateContext.getContext().closeContext();
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
		}
		super.tearDown();
	}
	
	public void testRuleCreation()
	{
		Rule r = new Rule();
		List<RuleParameter> params = new ArrayList<RuleParameter>();
		RuleParameter rp1 = new RuleParameter();
		rp1.setValue("5");
		rp1.setOrder(1);
		rp1.setRule(r);		
		params.add(rp1);
		RuleParameter rp2 = new RuleParameter();
		rp2.setValue("6");
		rp2.setOrder(2);
		rp2.setRule(r);		
		params.add(rp2);
		
		r.setParams(params);
		long rtId = 1;
		RuleType rt = new RuleType();
		
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		try {
			session.beginTransaction();
			session.load(rt, rtId);		 
			r.setType(rt);
			
			JobRuleHDAO dao = new JobRuleHDAO(session);
			dao.create(r);
			session.getTransaction().commit();
			System.out.println("Done");
		} catch (HibernateException e) {
			System.out.println(e.toString());
		}
		finally
		{
			session.close();
		}
	}
}
