package edu.cmu.sv.arinc838.builder;
import edu.cmu.sv.arinc838.dao.FileDefinitionDao;
import edu.cmu.sv.arinc838.dao.IntegrityDefinitionDao;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.dao.SoftwareDescriptionDao;
import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao;
public class BuilderFactory {
@SuppressWarnings("unchecked")
public <DaoType, JaxbType> Builder<DaoType, JaxbType> getBuilder(
Class<DaoType> Dao, Class<JaxbType> JaxB) {
if (Dao == SoftwareDescriptionDao.class) {
return (Builder<DaoType, JaxbType>) new SoftwareDescriptionBuilder();
}
if (Dao == FileDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new FileDefinitionBuilder(this);
}
if (Dao == IntegrityDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new IntegrityDefinitionBuilder();
}
if (Dao == SoftwareDefinitionFileDao.class) {
return (Builder<DaoType, JaxbType>) new SoftwareDefinitionFileBuilder(
this);
}
if (Dao == TargetHardwareDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new TargetHardwareDefinitionBuilder();
}
throw new IllegalArgumentException();
}
}