package com.eassessment.controller;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.hibernate.Session;

import com.eassessment.model.AdminDao;
import com.eassessment.model.CoordinateDao;
import com.eassessment.pojo.*;
import com.eassessment.util.Constants;
import com.eassessment.util.HibernateUtil;


class Pojo implements Comparable<Pojo> {
	int rno;
	String name;
	String address;

	public Pojo(int rno, String name, String address) {
		this.rno = rno;
		this.name = name;
		this.address = address;
	}

	public int getRno() {
		return rno;
	}

	public void setRno(int rno) {
		this.rno = rno;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Pojo [rno=" + rno + ", name=" + name + ", address=" + address
				+ "]";
	}

	@Override
	public int compareTo(Pojo arg0) {

		return this.getAddress().compareTo(arg0.getAddress());
	}

}

public class TestClass {

	public static void main4(String[] args) {
		List<AnswerMemo> ansmemo = AdminDao.getInstance().getAnswerMemo("1",
				Constants.TEST_REAL);
		
	
		HashMap<Integer, FinalReport> map = new HashMap<Integer, FinalReport>();
		List<String> output_for_assessment_test = new ArrayList<String>();
		List<String> personality_traits = new ArrayList<String>();
		List<String> user_input = new ArrayList<String>();
		List<String> strengths = new ArrayList<String>();
		List<String> explore_initiate = new ArrayList<String>();
		List<String> need_coaching_guidance = new ArrayList<String>();
		List<String> self_improvement_opportunities = new ArrayList<String>();
		List<String> advantages_you_have_got = new ArrayList<String>();

		double self_organized = 0;
		double self_motivated = 0;
		double proper_coaching = 0;
		double guidance = 0;
		double enviornment = 0;
		double encouragement = 0;
		double hard_work = 0;
		
		Set<Integer> set= new HashSet<Integer>();

		for(AnswerMemo memo:ansmemo){
			set.add(memo.getTopic_id().getTopic_id());
		}

		Iterator<Integer> it=set.iterator();
		while(it.hasNext()){
		 
			int topic_id=it.next();
			FinalReport report = new FinalReport();			
			
			output_for_assessment_test = new ArrayList<String>();
			personality_traits = new ArrayList<String>();
			// user_input = new ArrayList<String>();
			strengths = new ArrayList<String>();
			explore_initiate = new ArrayList<String>();
			need_coaching_guidance = new ArrayList<String>();
			self_improvement_opportunities = new ArrayList<String>();
			advantages_you_have_got = new ArrayList<String>();

			self_organized = 0;
			self_motivated = 0;
			proper_coaching = 0;
			guidance = 0;
			enviornment = 0;
			encouragement = 0;
			hard_work = 0;
			System.out.println(topic_id+"="+strengths.size());
			for (AnswerMemo memo : ansmemo) {
				if(memo.getTopic_id().getTopic_id()!=topic_id){
					continue;
				}
				
				Options option=AdminDao.getInstance().getOption(String.valueOf(memo.getOpt_id().getOptionId()));
				output_for_assessment_test.add(option
						.getOutput_for_assessment_test());
				personality_traits
						.add(option.getPersonality_traits());
				user_input.add(option.getUser_input());
				strengths.add(option.getStrengths());
				explore_initiate.add(option.getExplore_initiate());
				need_coaching_guidance.add(option
						.getNeed_coaching_guidance());
				self_improvement_opportunities.add(option
						.getSelf_improvement_opportunities());
				advantages_you_have_got.add(option
						.getAdvantages_you_have_got());

				self_organized += option.getSelf_organized();
				self_motivated += option.getSelf_motivated();
				proper_coaching += option.getProper_coaching();
				guidance += option.getGuidance();
				enviornment += option.getEnviornment();
				encouragement += option.getEncouragement();
				hard_work += option.getHard_work();
				
			}
			System.out.println(topic_id+"..="+strengths.size());
			report.setTopic_id(topic_id);
			report.setOutput_for_assessment_test(output_for_assessment_test);
			report.setPersonality_traits(personality_traits);
			report.setUser_input(user_input);
			report.setStrengths(strengths);
			report.setExplore_initiate(explore_initiate);
			report.setNeed_coaching_guidance(need_coaching_guidance);
			report.setSelf_improvement_opportunities(self_improvement_opportunities);
			report.setAdvantages_you_have_got(advantages_you_have_got);
			report.setSelf_organized(self_organized);
			report.setSelf_motivated(self_motivated);
			report.setProper_coaching(proper_coaching);
			report.setGuidance(guidance);
			report.setEnviornment(enviornment);
			report.setEncouragement(encouragement);
			report.setHard_work(hard_work);
			
			map.put(topic_id, report);
			
		}
		
		Iterator<Entry<Integer, FinalReport>> itx=map.entrySet().iterator();
		while(itx.hasNext()){
			FinalReport fr=(FinalReport) itx.next().getValue();
			System.out.println(fr.getStrengths());
		}
		
	}

	public static void main3(String[] args) {
		class GenereRno implements Comparator<Pojo> {

			@Override
			public int compare(Pojo a, Pojo b) {
				return a.getRno() > b.getRno() ? 1 : 0;
			}

		}
		
		class GenereAddress implements Comparator<Pojo> {

			@Override
			public int compare(Pojo a, Pojo b) {
				return a.getAddress().compareTo(b.getAddress());
			}

		}
		
		class GenereName implements Comparator<Pojo> {

			@Override
			public int compare(Pojo a, Pojo b) {
				return a.getName().compareTo(b.getName());
			}

		}

		Pojo p1 = new Pojo(5, "sachin", "pune");
		Pojo p2 = new Pojo(2, "saatosh", "sol");
		Pojo p3 = new Pojo(3, "ajit", "kop");
		List<Pojo> list = new ArrayList<Pojo>();
		list.add(p1);
		list.add(p2);
		list.add(p3);
		Collections.sort(list, new GenereRno());
		for (Pojo pojo : list) {
			System.out.println(pojo);
		}

	}

	public static void main1(String[] args) {
		Map<Integer, String> map = new HashMap<Integer, String>();
		// map.put(1, "A");
		// map.put(2, "A");
		// map.put(3, "A");
		// map.put(4, "A");
		// map.put(5, "A");
		for (int i = 65; i <= 90; i++) {
			map.put(i, "" + (char) i);
		}

		Iterator<Integer> it = map.keySet().iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
		List<String> list = null;

		System.out.println("=" + map.size());

		// for (int i = 0; i < 10; i++) {
		// System.out.println(Math.random());
		// }
	}

	/**
	 * @param args
	 */
	public static void main2(String[] args) {
		try {
			Session session = HibernateUtil.getSessionFactory()
					.getCurrentSession();

			Topics topic = new Topics();
			topic.setTopic_name("Topic New new");

			Questions q1 = new Questions();
			q1.setQuestion_name("What is your namename?");
			q1.setTopic(topic);

			Questions q2 = new Questions();
			q2.setQuestion_name("How are youyou?");
			q2.setTopic(topic);

			// Options o1=new Options();
			// o1.setOption_name("ab11");
			// o1.setQuestion(q1);
			//
			// Options o2=new Options();
			// o2.setOption_name("ab22");
			// o2.setQuestion(q1);
			//
			// Options o3=new Options();
			// o3.setOption_name("cd13");
			// o3.setQuestion(q2);
			//
			// session.beginTransaction();
			// session.save(topic);
			// session.save(q1);
			// session.save(q2);
			// session.save(o1);
			// // session.save(o2);
			// session.save(o3);
			session.getTransaction().commit();
			System.out.println("=====End of Program======");
		} catch (Exception e) {
			System.err.println("Error:" + e.getMessage());
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
		Set<Integer> set =new HashSet<Integer>();
		set.add(2);
		set.add(4);set.add(22);
		set.add(43);set.add(21);
		set.add(42);set.add(221);
		set.add(431);set.add(20);
		set.add(40);set.add(220);
		set.add(430);set.add(201);
		set.add(420);set.add(2201);
		set.add(4301);
		 
		 
		
	}
}
