package dataQualityWebSite;

import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.ListIterator;


public class GroupSummary 
{
    
	public GroupSummary(GroupList dqGroupList, Configuration configuration)
	{
		XmlElement xmlElement;
		ListIterator<GroupElement> iterator;
		GroupElement groupElement;
		DashboardFile groupSummaryFile;
		Calendar today;
		DateFormat longDateFormat;
		DecimalFormat integerFormat;
		String overallWorst;
		
		groupSummaryFile = new DashboardFile
		(
			configuration.getHtmlFileLocation() +
//			configuration.getGroupSummaryName() +
			"index.html"
		);
		
    	today = Calendar.getInstance();
    	longDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
        longDateFormat.format(today.getTime());
		integerFormat = new DecimalFormat("###,###,###,###,###");

		groupSummaryFile.PutLine("<!DOCTYPE html>");
		groupSummaryFile.PutLine("<head>");

		groupSummaryFile.PutLine("  <meta charset=\"UTF-8\"/>");
		groupSummaryFile.PutLine("  <meta name=\"description\" content=\"Data Quality Monitor\"/>");
		
		groupSummaryFile.PutLine
	    (
	    	"  <link rel=\"stylesheet\" type=\"text/css\" href=\"" +
	    	configuration.getLinkToStylesheets() +
	    	"style.css\"/>"
	    );
	    
	    xmlElement = new XmlElement(2, "title", "", "Data Quality Status By Subject Area");
	    groupSummaryFile.PutLine(xmlElement.getXmlElement());
		
	    groupSummaryFile.PutLine("</head>");
	    groupSummaryFile.PutLine("  <body>");

	    xmlElement = new XmlElement(4, "h1", "", "Data Quality Status By Subject Area");
	    groupSummaryFile.PutLine(xmlElement.getXmlElement());
	    xmlElement = new XmlElement(4, "h4", "", "Published: " + longDateFormat.format(today.getTime()) + " GMT");
	    groupSummaryFile.PutLine(xmlElement.getXmlElement());
	    
	    overallWorst = new String("green");	

	    for (iterator = dqGroupList.listIterator(); iterator.hasNext();)
		{
			groupElement = (GroupElement) iterator.next();
			
			if (groupElement.getGroupStatus().equals("amber"))
			{
				if (overallWorst.equals("green"))
					overallWorst = new String("amber");
			}
			else if (groupElement.getGroupStatus().equals("red"))
				overallWorst = new String("red");
		}	    

	    groupSummaryFile.PutLine("    <h2>Overall status for all subject areas: &nbsp;");

	    xmlElement = new XmlElement
	    (
	    	6,
	    	"img",
	    	"src=\"" +
	    	configuration.getLinkToKpiImages() + 
	    	overallWorst +
	    	"." +
	    	configuration.getKpiImageType() +
	    	"\" alt=\"" + overallWorst +
	    	"\" style=\"width:15px;height:15px;vertical-align:middle;\"",
	    	""
	    );
	    groupSummaryFile.PutLine(xmlElement.getXmlElement());
	    groupSummaryFile.PutLine("    </h2>");

	    groupSummaryFile.PutLine("    <table>");
	    groupSummaryFile.PutLine("      <tr>");
	    groupSummaryFile.PutLine("        <th> </th>");
	    groupSummaryFile.PutLine("        <th>Overall</th>");
	    groupSummaryFile.PutLine
	    (
	    	"        <th>" +
	        "<img src=\"" +
            configuration.getLinkToKpiImages() + "red.png\"" +
	        " alt=\"red\"" +
	        " style=\"width:10px;height:10px;display:block;margin:auto;\"/>" +
	        "</th>"
	    );
	    groupSummaryFile.PutLine
	    (
	    	"        <th>" +
	        "<img src=\"" +
            configuration.getLinkToKpiImages() + "amber.png\"" +
	        " alt=\"amber\"" +
	        " style=\"width:10px;height:10px;display:block;margin:auto;\"/>" +
	        "</th>"
	    );
	    groupSummaryFile.PutLine
	    (
	    	"        <th>" +
	        "<img src=\"" +
            configuration.getLinkToKpiImages() + "green.png\"" +
	        " alt=\"green\"" +
	        " style=\"width:10px;height:10px;display:block;margin:auto;\"/>" +
	        "</th>"
	    );
	    groupSummaryFile.PutLine
	    (
	    	"        <th>" +
	        "<img src=\"" +
            configuration.getLinkToKpiImages() + "grey.png\"" +
	        " alt=\"grey\"" +
	        " style=\"width:10px;height:10px;display:block;margin:auto;\"/>" +
	        "</th>"
	    );
	    groupSummaryFile.PutLine("      </tr>");
	    
		for (iterator = dqGroupList.listIterator(); iterator.hasNext();)
		{
			groupElement = (GroupElement) iterator.next();
		
		    groupSummaryFile.PutLine("      <tr>");

		    xmlElement = new XmlElement
		    (
		    	6, 
		    	"a", 
		    	"href=\"" +
		    	configuration.getGroupPrefix() +
		    	groupElement.getGroupId() +
		    	".htm\"",
		    	groupElement.getGroupTitle() + ":"
		    );
		    groupSummaryFile.PutLine
		    (
		    	"        <td style=\"text-align:left;\">" +	
		    	xmlElement.getXmlElement() + 
		    	"</td>"
		    );

		    groupSummaryFile.PutLine
		    (
                "        <td><img src=\"" + 
                configuration.getLinkToKpiImages() +  
                groupElement.getGroupStatus() +
                "." +
                configuration.getKpiImageType() +
                "\" alt=\"" + groupElement.getGroupStatus() + "\"" +
                " style=\"width:15px;height:15px;display:block;margin:auto;\"/>" +
              "</td>"
            );

		    groupSummaryFile.PutLine
		    (
                  "        <td style=\"text-align:right;\">" +
                  integerFormat.format(groupElement.getRedCount()) +
                  "</td>"
            );

		    groupSummaryFile.PutLine
		    (
                  "        <td style=\"text-align:right;\">" +
                  integerFormat.format(groupElement.getAmberCount()) +
                  "</td>"
            );

		    groupSummaryFile.PutLine
		    (
                  "        <td style=\"text-align:right;\">" +
                  integerFormat.format(groupElement.getGreenCount()) +
                  "</td>"
            );

		    groupSummaryFile.PutLine
		    (
                  "        <td style=\"text-align:right;\">" +
                  integerFormat.format(groupElement.getGreyCount()) +
                  "</td>"
            );

		    groupSummaryFile.PutLine("      </tr>");
		}	

	    groupSummaryFile.PutLine("    </table>");		    

	    xmlElement = new XmlElement(4, "h4", "", "Published: " + longDateFormat.format(today.getTime()) + " GMT");
	    groupSummaryFile.PutLine(xmlElement.getXmlElement());
	    
	    groupSummaryFile.PutLine("  </body>");
	    groupSummaryFile.PutLine("</html>");
		
	    groupSummaryFile.Close();
	}
}
