hebdobot/src/main/java/fr/imirhil/april/hebdobot/xml/UserService.java
2011-09-03 16:29:09 +02:00

56 lines
1.5 KiB
Java

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<String, String> aliases = new HashMap<String, String>();
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<String, String> entry : this.aliases.entrySet()) {
if (nick.toLowerCase().contains(entry.getKey().toLowerCase())) {
return entry.getValue() + " ( " + nick + " )";
}
}
return nick;
}
}