diff -r d78b74a2abe9 -r 93208f791318 java/dictionary-generator/src/cz/frantovo/telco/dictionary/Functions.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/dictionary-generator/src/cz/frantovo/telco/dictionary/Functions.java Tue Jul 09 18:59:07 2013 +0200 @@ -0,0 +1,92 @@ +/** + * Free Telco Dictionary + * Copyright © 2013 František Kučera (frantovo.cz) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package cz.frantovo.telco.dictionary; + +import java.io.Closeable; +import java.io.IOException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * + * @author Ing. František Kučera (frantovo.cz) + */ +public class Functions { + + private static final Logger log = Logger.getLogger(Functions.class.getName()); + + public static Iterable nodeIterable(final NodeList list) { + return new Iterable() { + @Override + public Iterator iterator() { + return new Iterator() { + int position; + + @Override + public boolean hasNext() { + return position < list.getLength(); + } + + @Override + public Node next() { + return list.item(position++); + } + + @Override + public void remove() { + throw new UnsupportedOperationException("remove not supported"); + } + }; + } + }; + } + + public static void close(Closeable c) { + try { + c.close(); + } catch (Exception e) { + log.log(Level.WARNING, "closing of " + c + " has failed", e); + } + } + + public static boolean equalz(Object a, Object b) { + return a == null ? b == null : a.equals(b); + } + + public static Set getKeysForValue(Map map, V value) { + Set keysFound = new HashSet<>(); + + for (Entry entry : map.entrySet()) { + if (equalz(value, entry.getValue())) { + keysFound.add(entry.getKey()); + } + } + + return keysFound; + } + + private Functions() { + } +}