package dictionaries; import dataproviders.PonsDatabase; import dataproviders.PonsNullDatabase; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by IntelliJ IDEA. * User: mateusz * Date: 05.03.12 * Time: 21:19 */ public class PonsDictionary { private static final String ponsURL = "http://pl.pons.eu/dict/search/results/?q=dom&l=depl"; private static final String polishToGerman = "http://pl.pons.eu/polski-niemiecki/"; private static final String germanToPolish = "http://pl.pons.eu/niemiecki-polski/"; private static final String polishToGermanOneDirection = "http://pl.pons.eu/dict/search/results/?q=dom&l=depl&in=pl&lf=pl"; private static final String polishToGermanTwoDirection = "http://pl.pons.eu/dict/search/results/?q=dom&l=depl&in=&lf=pl"; private static final String germanToPolishOneDirection = "http://pl.pons.eu/dict/search/results/?q=dom&l=depl&in=de&lf=de"; private static final String germanToPolishTwoDirection = "http://pl.pons.eu/dict/search/results/?q=dom&l=depl&in=&lf=de"; private static Document doc; private PonsDatabase ponsDatabase = new PonsNullDatabase(); //new PonsInFileDatabase("ponsStorage.txt"); public static List<Map> getPonsEntry(String entry) { loadDocument(); Elements ponsEntryInHtml = extractPonsEntryInHtmlForSpecifiedLanguage("pl"); List<Map> ponsEntry = new ArrayList<Map>(); for (Element ponsSubEntryInHtml : ponsEntryInHtml) { String ponsSubEntryHeader = ponsSubEntryInHtml.getElementsByTag("thead").first().text(); Element ponsSubEntryInTBodyElement = ponsSubEntryInHtml.getElementsByTag("tbody").first(); Map<String, String> ponsSubEntry = extractPonsSubEntryFromTBodyElement(ponsSubEntryInTBodyElement); ponsEntry.add(ponsSubEntry); } return ponsEntry; } private static void loadDocument() { try { doc = Jsoup.connect(ponsURL).timeout(5000).get(); } catch (IOException e) { e.printStackTrace(); } } private static Map<String, String> extractPonsSubEntryFromTBodyElement(Element tbody) { Map<String, String> ponsSubEntry = new HashMap(); Elements rows = tbody.children(); for (Element row : rows) { Element source = row.getElementsByClass("source").first(); Element target = row.getElementsByClass("target").first(); ponsSubEntry.put(source.text(), target.text()); } return ponsSubEntry; } public static Elements extractPonsEntryInHtmlForSpecifiedLanguage(String language) { Element languageDivElement = doc.getElementById(language); //Element results = languageDivElement.getElementsByClass("results").first(); return languageDivElement.select("div.rom.first").first().getElementsByClass("translations"); } }