]> gitweb.fperrin.net Git - DictionaryPC.git/blob - src/com/hughes/android/dictionary/engine/CheckDictionariesMain.java
bac23960b4eeaa322005b12cd91ee493f440a074
[DictionaryPC.git] / src / com / hughes / android / dictionary / engine / CheckDictionariesMain.java
1 package com.hughes.android.dictionary.engine;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.PrintWriter;
6 import java.io.RandomAccessFile;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.Collections;
10 import java.util.List;
11
12 import com.hughes.android.dictionary.DictionaryInfo;
13 import com.hughes.android.dictionary.DictionaryInfo.IndexInfo;
14 import com.hughes.util.CollectionUtil;
15
16 public class CheckDictionariesMain {
17
18     static final String BASE_URL = "https://github.com/rdoeffinger/Dictionary/releases/download/v0.3-dictionaries/";
19     static final String VERSION_CODE_OLD = "v006";
20     static final String VERSION_CODE = "v007";
21
22     public static void main(String[] args) throws IOException {
23         final File dictDir = new File(DictionaryBuilderMain.OUTPUTS);
24
25         final PrintWriter dictionaryInfoOut = new PrintWriter(new File("../Dictionary/res/raw/dictionary_info.txt"));
26 //    dictionaryInfoOut.println("# LANG_1\t%LANG_2\tFILENAME\tVERSION_CODE\tFILESIZE\tNUM_MAIN_WORDS_1\tNUM_MAIN_WORDS_2\tNUM_ALL_WORDS_1\tNUM_ALL_WORDS_2");
27
28         final File[] files = dictDir.listFiles();
29         final List<String> dictNames = new ArrayList<String>();
30         Arrays.sort(files);
31         for (final File dictFile : files) {
32             if (!dictFile.getName().endsWith("quickdic")) {
33                 continue;
34             }
35             System.out.println(dictFile.getPath());
36
37
38             final RandomAccessFile raf = new RandomAccessFile(dictFile, "r");
39             final Dictionary dict = new Dictionary(raf.getChannel());
40
41             final DictionaryInfo dictionaryInfo = dict.getDictionaryInfo();
42
43             String version_code = VERSION_CODE;
44             File zipFile = new File(dictFile.getPath() + "." + version_code + ".zip");
45             if (!zipFile.canRead()) {
46                 version_code = VERSION_CODE_OLD;
47                 zipFile = new File(dictFile.getPath() + "." + version_code + ".zip");
48             }
49             dictionaryInfo.uncompressedFilename = dictFile.getName();
50             dictionaryInfo.downloadUrl = BASE_URL + dictFile.getName() + "." + version_code + ".zip";
51             // TODO: zip it right here....
52             dictionaryInfo.uncompressedBytes = dictFile.length();
53             dictionaryInfo.zipBytes = zipFile.canRead() ? zipFile.length() : -1;
54
55             // Print it.
56 //      final PrintWriter textOut = new PrintWriter(new BufferedWriter(new FileWriter(dictFile + ".text")));
57 //      final List<PairEntry> sorted = new ArrayList<PairEntry>(dict.pairEntries);
58 //      Collections.sort(sorted);
59 //      for (final PairEntry pairEntry : sorted) {
60 //        textOut.println(pairEntry.getRawText(false));
61 //      }
62 //      textOut.close();
63
64             // Find the stats.
65             System.out.println("Stats...");
66             final List<String> indexNames = new ArrayList<String>();
67             for (final IndexInfo indexInfo : dictionaryInfo.indexInfos) {
68                 indexNames.add(indexInfo.shortName);
69             }
70             dictNames.add(CollectionUtil.join(indexNames, "-") + "\n");
71             final String row = dictionaryInfo.append(new StringBuilder()).toString();
72             if (!zipFile.canRead()) {
73                 System.err.println("Couldn't read zipfile: " + zipFile);
74             }
75             System.out.println(row + "\n");
76
77
78             dictionaryInfoOut.println(row);
79             dictionaryInfoOut.flush();
80
81             raf.close();
82         }
83
84         Collections.sort(dictNames);
85         System.out.println(dictNames.toString().replace(",", "  *"));
86
87         dictionaryInfoOut.close();
88     }
89
90 }