package page.example.school;

import java.util.StringTokenizer;

import org.wikiwebserver.handler.http.HTTPException;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;
import page.config.SiteTemplatedPage;

import static org.wikiwebserver.html.HTMLHelper.*;



public class ReportsGenerator extends SiteTemplatedPage implements HTTPResponder {
	
    public void generate() throws HTTPException {
        
        setTitle("Reports Generator - WikiWebServer.org");
        
        append(h(1, "Reports Generator"));
        
        String data = null;
        String reports = "";
        int generatorIdx = 0;
        String[] generatorNames = { "Basic", "Post exam" };  
        ReportGenerator[] generators = { new Generator1(), new Generator2() };
        String[] examples = {
            "Name\tCourse\tModule\tGrade\tSocial\tBook\tHome\tPractical\tEffort\n" +
            "Amy\tPhysics\t\tA\tB\tC\tA\tB\tC\n",
            "Name\tCourse\tModule\tGrade\tMock Grade\tTarget Grade\tSocial\tBook\tHome\tPractical\tEffort\n" +
            "Amy\tPhysics\t\tA\tA\tA\tB\tC\tA\tB\tC\n",            
        };
        String generator = generatorNames[0];
        
        if (getFormData() != null) {
            generator = getFormData().getFirst("generator");
            for (int i=0; i<generators.length; i++) {
                if (generator.equals(generatorNames[i])) {
                    generatorIdx = i;
                    break;
                }
            }
            String action = getFormData().getFirst("action");
            if (action != null && action.equals("Generate")) {
                data = getFormData().getFirst("data");
            }
        }
        if (data == null) {
            data = examples[generatorIdx];
        }
        
        
        append(form("Generator " + 
                    select("generator", generatorNames, generator, "onchange='form.submit();'") + br() +
                    textarea("data", data, "style='font-size: 1em;width: 100%' rows='20'") +
                    submitbutton("action", "Generate")));

        reports = getReports(generators[generatorIdx], data);          
        append(textarea("reports", reports, "style='font-size: 1em;width: 100%' rows='20'"));
       
    } 
    
    
    public static String getReports(ReportGenerator gen, String data) {
        
        data = data.replace("\r", "");
        
        StringTokenizer tokenizer = new StringTokenizer(data, "\n");
        
        StringBuilder reports = new StringBuilder();
        
        while (tokenizer.hasMoreTokens()) {
            String row = tokenizer.nextToken();
            if (row.startsWith("Name")) continue;
            reports.append(gen.getReport(row) + "\r\n\r\n");
        }
        
        return reports.toString();
    }       
}
