/*
* DictClient.java - a client for Dict servers
* based on JavaClientForDict libraryr (jcfd, author Davor Cengija).
* For more informations on Dict servers please
* check http://www.dict.org and RFC-2229.
*
* Copyright (c) 2005 Andrew Krizhanovsky /aka at mail.iias.spb.su/
* Distributed under GNU Public License.
*/
package rfc2229;
//import net.zuckerfrei.jcfd.Database;
//import net.zuckerfrei.jcfd.DatabaseList;
import net.zuckerfrei.jcfd.Definition;
import net.zuckerfrei.jcfd.DefinitionList;
import net.zuckerfrei.jcfd.Dict;
import net.zuckerfrei.jcfd.DictFactory;
//import net.zuckerfrei.jcfd.Match;
//import net.zuckerfrei.jcfd.MatchList;
//import net.zuckerfrei.jcfd.Strategy;
//import net.zuckerfrei.jcfd.StrategyList;
import java.util.*;
/** Short class description */
public class DictClient {
public DictClient() {
}
/** Get list of synonyms for the word from selected databases of dict.org.
* Examples of database full names are "WordNet (r) 2.0",
* "Moby Thesaurus II by Grady Ward, 1.0". The short name (substring)
* could be used, e.g. "Moby", "WordNet".
*
* @params db_names search only in these databases,
* @params word sought word
*/
public static List<String> getLinkWords (String[] db_names, String word) throws Exception {
int i;
List<String> result = new ArrayList<String>();
DictFactory dictFactory = DictFactory.getInstance();
Dict dict = dictFactory.getDictClient();
DefinitionList defList = dict.define(word);
while (defList.hasNext()) {
Definition def = defList.next();
String db_cur = def.getDatabase().getName();
// whether to search in this database: compare with db_names
for(String db_name: db_names) {
if(db_cur.contains(db_name)) {
if(db_cur.contains("WordNet")) {
result.addAll(WordNetParser.getSynonyms((String) def.getContent()));
} else if(db_cur.contains("Moby")) {
result.addAll(Arrays.asList(MobyParser.getWords((String) def.getContent())));
}
}
}
}
return result;
}
public static void run(String word) throws Exception {
//String word = "linux";
DictFactory dictFactory = DictFactory.getInstance();
Dict dict = dictFactory.getDictClient();
DefinitionList defList = dict.define(word);
System.out.println("Number of definitions is " + defList.count() + " for the word " + word);
Definition def;
while (defList.hasNext()) {
def = defList.next();
// "WordNet (r) 2.0"
// "Moby Thesaurus II by Grady Ward, 1.0"
System.out.println("DEFINITION: \nDB: " + def.getDatabase().getName() + "\n" + def.getContent());
String[] linkovi = def.getLinks();
for (int i = 0; i < linkovi.length; i++) {
System.out.println("Links: " + (i + 1) + ". " + linkovi[i]);
}
}
/*
MatchList matches = dict.match("donld knuth");
System.out.println("Ukupno pronasao " + matches.count());
while (matches.hasNext()) {
Match match = matches.next();
System.out.println("db: " + match.getDatabase() + " word: " + match.getWord());
}
System.out.println();
DatabaseList dbList = dict.listDatabases();
while (dbList.hasNext()) {
Database db = dbList.next();
System.out.println("DB: " + db.getCode() + " " + db.getName());
}
System.out.println();
StrategyList strList = dict.listStrategies();
while (strList.hasNext()) {
Strategy str = strList.next();
System.out.println("STRAT: " + str.getCode() + " " + str.getName());
}
DefinitionList definitionList = dict.define(matches);
while(definitionList.hasNext()) {
System.out.println("DEFINITION: " + definitionList.next().getContent());
}
*/
dict.close();
System.out.println(System.getProperty("java.class.path"));
}
}