/*
* Copyright (c) 2012 Chris Ellison, Mike Deats, Liron Yahdav, Ryan Neal,
* Brandon Sutherlin, Scott Griffin
*
* This software is released under the MIT license
* (http://www.opensource.org/licenses/mit-license.php)
*
* Created on Apr 3, 2012
*/
package edu.cmu.sv.arinc838.reader;
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import com.arinc.arinc838.SdfFile;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.validation.DataValidator;
import edu.cmu.sv.arinc838.validation.SoftwareDefinitionFileValidator;
public class XdfReader implements SdfReader {
private SoftwareDefinitionFileValidator validator;
public XdfReader() {
validator = new SoftwareDefinitionFileValidator(new DataValidator());
}
@Override
public SoftwareDefinitionFileDao read(String filename,
List<Exception> errorList) {
File file = new File(filename);
SoftwareDefinitionFileDao sdfDao = null;
try {
JAXBContext jaxbContext = JAXBContext.newInstance(SdfFile.class);
Unmarshaller jaxbMarshaller = jaxbContext.createUnmarshaller();
SdfFile jaxbFile = (SdfFile) jaxbMarshaller.unmarshal(file);
sdfDao = new SoftwareDefinitionFileDao(jaxbFile, file
.getParentFile().getAbsolutePath());
if (errorList != null) {
errorList.addAll(validator.validateXmlFileHeader(file));
errorList.addAll(validator.validateSdfFile(sdfDao, file.getName(), null));
}
} catch (Exception e) {
if (errorList != null) {
errorList.add(e);
}
}
return sdfDao;
}
}