package net.rrm.ehour.backup.service.restore;
import net.rrm.ehour.backup.common.BackupConfig;
import net.rrm.ehour.persistence.config.dao.ConfigurationDao;
import org.springframework.util.Assert;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
/**
* @author thies (thies@te-con.nl)
* Date: 12/6/10 11:59 PM
*/
public class XmlParserBuilder {
private XMLEventReader xmlReader;
private ConfigurationDao configurationDao;
private ConfigurationParserDao configurationParserDao;
private EntityParserDao entityParserDao;
private boolean skipValidation = false;
private BackupConfig backupConfig;
public XmlParser build() throws XMLStreamException {
Assert.notNull(xmlReader);
Assert.notNull(configurationDao);
Assert.notNull(entityParserDao);
Assert.notNull(backupConfig);
PrimaryKeyCache keyCache = new PrimaryKeyCache();
JoinTableParser joinTableParser = new JoinTableParser(xmlReader, backupConfig);
EntityParser parser = new EntityParser(xmlReader, entityParserDao, keyCache, backupConfig);
EntityTableParser entityTableParser = new EntityTableParser(xmlReader, parser);
ConfigurationParser configurationParser = new ConfigurationParser(configurationParserDao);
ParseContext ctx = new ParseContext(configurationDao, parser, configurationParser, joinTableParser, entityTableParser, skipValidation);
return new XmlParser(ctx);
}
public XmlParserBuilder setSkipValidation(boolean skipValidation) {
this.skipValidation = skipValidation;
return this;
}
public XmlParserBuilder setXmlReader(XMLEventReader xmlReader) {
this.xmlReader = xmlReader;
return this;
}
public XmlParserBuilder setConfigurationDao(ConfigurationDao configurationDao) {
this.configurationDao = configurationDao;
return this;
}
public XmlParserBuilder setConfigurationParserDao(ConfigurationParserDao configurationParserDao) {
this.configurationParserDao = configurationParserDao;
return this;
}
public XmlParserBuilder setEntityParserDao(EntityParserDao entityParserDao) {
this.entityParserDao = entityParserDao;
return this;
}
public XmlParserBuilder setBackupConfig(BackupConfig backupConfig) {
this.backupConfig = backupConfig;
return this;
}
}