package fr.imirhil.april.hebdobot.xml; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.SchemaFactory; import org.xml.sax.SAXException; public class UserService { private final Map aliases = new HashMap(); public UserService() { try { final Unmarshaller u = JAXBContext.newInstance(Users.class).createUnmarshaller(); u.setSchema(SchemaFactory .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI) .newSchema( UserService.class .getResource("/fr/imirhil/april/hebdobot/users.xsd"))); for (final User user : u .unmarshal(new StreamSource(new File("users.xml")), Users.class).getValue().getUser()) { final String realName = user.getRealName(); for (final String nick : user.getNick()) { this.aliases.put(nick, realName); } } } catch (final SAXException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (final JAXBException e) { e.printStackTrace(); throw new RuntimeException(e); } } public String getRealName(final String nick) { for (final Entry entry : this.aliases.entrySet()) { if (nick.toLowerCase().contains(entry.getKey().toLowerCase())) { return entry.getValue() + " ( " + nick + " )"; } } return nick; } }