• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.unicode.cldr.rdf;
2 
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.PrintWriter;
6 import java.util.Map;
7 
8 import org.unicode.cldr.draft.FileUtilities;
9 import org.unicode.cldr.util.CLDRConfig;
10 
11 import com.google.common.collect.Multimap;
12 
13 /**
14  * Utility to aid in writing .tsv files
15  */
16 public class TsvWriter {
17     /**
18      * Write a Multimap as a tsv with pairs
19      * @param fn filename
20      * @param map
21      * @param k key column name
22      * @param v value column name
23      * @throws IOException
24      */
writeTsv(String fn, Multimap<String, String> map, String k, String v)25     public static void writeTsv(String fn, Multimap<String, String> map, String k, String v) throws IOException {
26         System.out.println("Writing " + fn);
27         try(PrintWriter w = FileUtilities.openUTF8Writer(getTsvDir(), fn)) {
28             writeRow(w, k, v); // header
29             map.entries().forEach(e -> writeRow(w, e.getKey(), e.getValue()));
30         }
31     }
32 
33     /**
34      * Write a Map as a tsv with pairs
35      * @param fn filename
36      * @param map
37      * @param k key column name
38      * @param v value column name
39      * @throws IOException
40      */
writeTsv(String fn, Map<String, String> map, String k, String v)41     public static void writeTsv(String fn, Map<String, String> map, String k, String v) throws IOException {
42         System.out.println("Writing " + fn);
43         try(PrintWriter w = FileUtilities.openUTF8Writer(getTsvDir(), fn)) {
44             writeRow(w, k, v); // header
45             map.entrySet().forEach(e -> writeRow(w, e.getKey(), e.getValue()));
46         }
47     }
48 
getTsvDir()49     public static File getTsvDir() {
50         File base = CLDRConfig.getInstance().getCldrBaseDirectory();
51         File tsvDir = new File(base, "tools/cldr-rdf/external");
52         tsvDir.mkdirs();
53         return tsvDir;
54     }
55 
56     /**
57      * Write a TSV row
58      * @param w stream to write to
59      * @param elements columns to write
60      */
writeRow(PrintWriter w, CharSequence... elements)61     public static void writeRow(PrintWriter w, CharSequence... elements) {
62         w.println(String.join("\t", elements));
63     }
64 }
65