package net.rrm.ehour.backup.service.restore;
import net.rrm.ehour.backup.domain.ExportElements;
import net.rrm.ehour.backup.domain.ParserUtil;
import net.rrm.ehour.domain.Configuration;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
/**
* @author thies (Thies Edeling - thies@te-con.nl)
* Created on: 11/28/10 - 1:19 AM
*/
public class ConfigurationParser
{
private ConfigurationParserDao parserDao;
public ConfigurationParser(ConfigurationParserDao parserDao)
{
this.parserDao = parserDao;
}
public void parseConfiguration(XMLEventReader eventReader) throws XMLStreamException
{
while (eventReader.hasNext())
{
XMLEvent event = eventReader.nextTag();
if (event.isStartElement())
{
Configuration configuration = parseConfigElement(eventReader, event);
parserDao.persist(configuration);
} else if (event.isEndElement())
{
return;
}
}
}
private Configuration parseConfigElement(XMLEventReader eventReader, XMLEvent event)
throws XMLStreamException
{
StartElement startElement = event.asStartElement();
String key = startElement.getAttributeByName(new QName(ExportElements.KEY.name())).getValue();
String value = ParserUtil.parseNextEventAsCharacters(eventReader);
return new Configuration(key, value);
}
}