org.w3c.css/cssvalidator-removed-src/index/TranslationTableGenerator.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Wed, 19 May 2010 17:17:31 -0700
changeset 337 afe6a53c0ed4
parent 191 61c04b3eb3e7
permissions -rw-r--r--
Work-in-progress commit for orientation preview. API is emulated and basic work on previewer is implemented. Some display issues are remaining
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
191
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     1
/**
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     2
 * This class is used to generates the index pages
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     3
 * of the CSS validator in all the availables languages
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     4
 * it'll create the outputs validator.en.html, validator.fr.html, ...
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     5
 * according to the template file validator.vm
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     6
 */
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     7
package org.w3c.css.index;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     9
import java.io.File;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    10
import java.io.FileOutputStream;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
import java.io.IOException;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
import java.io.OutputStreamWriter;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
import java.net.URI;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
import java.net.URISyntaxException;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
import java.text.SimpleDateFormat;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
import java.util.Date;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
import org.apache.velocity.Template;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
import org.apache.velocity.VelocityContext;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
import org.apache.velocity.app.Velocity;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import org.apache.velocity.exception.MethodInvocationException;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
import org.apache.velocity.exception.ParseErrorException;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import org.apache.velocity.exception.ResourceNotFoundException;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import org.apache.commons.lang.StringEscapeUtils;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import java.util.ArrayList;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
import java.util.HashMap;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
import java.util.Iterator;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
import java.util.Vector;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
import java.util.Collections;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
import java.util.Comparator;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
import java.util.Set;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
import java.lang.Integer;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
import org.w3c.css.util.ApplContext;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
import org.w3c.css.util.Messages;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
import org.w3c.css.util.Utf8Properties;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
/**
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
 * @author olivier Thereaux <ot@w3.org> for W3C
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
 * 
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
 * 
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
 */
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
class AlphaComparator implements Comparator<String> {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
    public int compare(String s1, String s2) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
	return s1.compareToIgnoreCase(s2);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
}
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
public class TranslationTableGenerator {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
    // the velocity context used to generate the index
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    52
    // (NB: the same context is used for each index page, changing every thing
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
    // inside)
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
    public static VelocityContext vc = new VelocityContext();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
    private static String html_files_path = "../../../../";
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    56
    private static boolean done = false;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
    private static String template_name = "translations.vm";
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    58
    
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    59
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
    /**
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    61
     * @param args
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
     */
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    63
    public static void main(String[] args) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    64
	TranslationTableGenerator.generateTable();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
    /**
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    68
     * This method generates the index in every possible language we have the translation
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
     * @see org.w3c.css.util.Messages
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    70
     */
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
    public static synchronized void generateTable() {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
		
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
	String default_lang = "en";
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
	String name, path;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
	StringBuilder table_head = new StringBuilder();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
	StringBuilder translations_table = new StringBuilder();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
	File out_file;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
	path = TranslationTableGenerator.class.getResource("").getPath();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    79
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    80
        try {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    81
	    path = new URI(path).getPath();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    82
	    Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    83
	    Velocity.addProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "../css/");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
	    Velocity.setProperty(Velocity.RUNTIME_LOG,
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
				 "velocity-" + new SimpleDateFormat("yyyy-MM-dd_HHmm").format(new Date()) + ".log");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
	    
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
	    Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.AvalonLogChute");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    88
	    Velocity.init();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
		
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
	    Template tpl = Velocity.getTemplate(template_name, "UTF-8");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
	    out_file = new File(path + html_files_path + "translations.html");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
		
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
            ApplContext ac_default= new ApplContext(default_lang);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
	    // Getting the differents languages informations (for the lang choice)
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    95
	    ArrayList<HashMap<String,String>> languages;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
	    languages = new ArrayList<HashMap<String,String>>(Messages.languages_name.size());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
	    HashMap<String,ApplContext> translations = new HashMap<String,ApplContext>();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
	    HashMap<String,Integer> translation_completeness = new HashMap<String,Integer>();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    99
	    table_head.append("<tr><th scope='col'>Property</th>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
	    for (int i = 0; i < Messages.languages_name.size(); ++i) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
		name = String.valueOf(Messages.languages_name.get(i));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
		HashMap<String,String> l = new HashMap<String,String>();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
		l.put("name", name);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
		l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
		languages.add(i, l);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
		ApplContext ac_translated = new ApplContext(name);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   107
		if (!name.equals(default_lang)) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
		    table_head.append("<th>").append(l.get("real")).append("</th>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
                }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
		translations.put(name,ac_translated);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   111
		translation_completeness.put(name, 0);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
		        
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
	    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
	    table_head.append("</tr>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   115
	    Vector<String> sorted_properties_keys;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   116
	    Set properties_keyset = ac_default.getMsg().properties.keySet();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   117
	    sorted_properties_keys = new Vector<String>(properties_keyset);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
	    Collections.sort(sorted_properties_keys, new AlphaComparator());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   119
            Iterator properties_iterator = sorted_properties_keys.iterator();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   120
	    translations_table.append("<tbody>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   121
	    int num_properties = 0;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   122
	    while (properties_iterator.hasNext()) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   123
		++num_properties;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   124
		String property_name = String.valueOf(properties_iterator.next());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   125
		translations_table.append("<tr><th scope=\"row\" class=\"property_name\">").append(property_name);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   126
		translations_table.append("<p>").append(StringEscapeUtils.escapeHtml(ac_default.getMsg().getString(property_name)));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   127
		translations_table.append("</p></th>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   128
		for (int i = 0; i < Messages.languages_name.size(); ++i) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   129
		    HashMap<String,String> language = languages.get(i);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   130
		    ApplContext translation = (ApplContext) translations.get(language.get("name"));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   131
		    String property_translated = translation.getMsg().getString(property_name);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   132
		    if (language.get("name").equals(default_lang)) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   133
			vc.put(property_name, property_translated);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   134
		    } else {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   135
			URI mail_translation = new URI("mailto", "w3c-translators@w3.org?Subject=["+property_name+"] CSS Validator Translation&body=Property:\n  "+property_name+"\n\nText in English:\n  "+ac_default.getMsg().getString(property_name)+"\n\nLanguage:\n  "+language.get("name")+"\n\nTranslation:\n\n\n-- Help translate the CSS Validator:\nhttp://qa-dev.w3.org:8001/css-validator/translations.html", "");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   136
			if (property_translated == null) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   137
			    translations_table.append("<td class=\"table_translation_missing\"><a title=\"submit a missing translation\" href=\"").append(StringEscapeUtils.escapeHtml(mail_translation.toASCIIString())).append("\">✘</a></td>\n");    			        
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   138
			} else if ( property_translated.matches(".*translation unavailable.*")) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   139
			    translations_table.append("<td class=\"table_translation_missing\"><a title=\"submit a missing translation\" href=\"").append(StringEscapeUtils.escapeHtml(mail_translation.toASCIIString())).append("\">✘</a></td>\n");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   140
			} else {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   141
			    translations_table.append("<td class=\"table_translation_ok\"><span title=\"").append(StringEscapeUtils.escapeHtml(property_translated)).append("\">✔</span></td>\n");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   142
			    int completed = Integer.parseInt(translation_completeness.get(language.get("name")).toString());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   143
			    completed++;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   144
			    translation_completeness.put(language.get("name"), completed);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   145
			    //System.out.println(language.get("name")+": "+completed);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   146
			}
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   147
		    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   148
                }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   149
                translations_table.append("</tr>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   150
                if ( num_properties % 12 == 0) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   151
                    translations_table.append("</tbody><tbody>").append(table_head);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   152
                }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   153
            }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   154
            translations_table.append("</tbody></table>");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   155
            for (int i = 0; i < Messages.languages_name.size(); i++) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   156
		name = String.valueOf(Messages.languages_name.get(i));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   157
		HashMap<String,String> l = languages.get(i);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   158
		int completeness_percent = 100*Integer.parseInt(translation_completeness.get(l.get("name")).toString());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   159
		completeness_percent = completeness_percent /ac_default.getMsg().properties.size();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   160
		l.put("completeness", Integer.toString(completeness_percent));
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   161
		// FIXME not needed // languages[i] = l;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   162
	    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   163
	    vc.put("languages", languages);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   164
	    vc.put("num_languages", Messages.languages_name.size());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   165
	    vc.put("total_properties", ac_default.getMsg().properties.size());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   166
    	    vc.put("translations_table", translations_table.toString());
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   167
    	    vc.put("lang", "en");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   168
	    OutputStreamWriter aFileWriter = new OutputStreamWriter(new FileOutputStream(out_file), "UTF-8");
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   169
	    tpl.merge(vc, aFileWriter);
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   170
	    aFileWriter.close();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   171
    	} catch (URISyntaxException e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   172
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   173
    	} catch (ResourceNotFoundException e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   174
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   175
	} catch (ParseErrorException e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   176
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   177
	} catch (MethodInvocationException e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   178
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   179
	} catch (IOException e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   180
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   181
	} catch (Exception e) {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   182
	    e.printStackTrace();
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   183
	} finally {
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   184
	    done = true;
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   185
	}
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   186
    }
61c04b3eb3e7 Bug 2001 - css validator to separate plug-in
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   187
}