Skip to content

Commit

Permalink
Refactored the UI code to move the XDF and BDF reading functions to t…
Browse files Browse the repository at this point in the history
…heir own package. [27334143]
  • Loading branch information
SQUIDwarrior committed Apr 4, 2012
1 parent 0d253f3 commit f19d229
Show file tree
Hide file tree
Showing 14 changed files with 350 additions and 14 deletions.
16 changes: 16 additions & 0 deletions src/main/java/edu/cmu/sv/arinc838/builder/BuilderFactoryImpl.java
@@ -1,6 +1,9 @@
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.SoftwareDescriptionDao;
import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao;


public class BuilderFactoryImpl implements BuilderFactory {
Expand All @@ -14,6 +17,19 @@ public <DaoType, JaxbType> Builder<DaoType, JaxbType> getBuilder(
return (Builder<DaoType, JaxbType>) new SoftwareDescriptionBuilder();
}

if(Dao == TargetHardwareDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new TargetHardwareDefinitionBuilder();
}

if(Dao == FileDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new FileDefinitionBuilder();
}

if(Dao == IntegrityDefinitionDao.class) {
return (Builder<DaoType, JaxbType>) new IntegrityDefinitionBuilder();
}


return null;
}

Expand Down
Expand Up @@ -61,6 +61,22 @@ public void initialize(SdfFile swDefFile) {
lspIntegrityDefinition = new IntegrityDefinitionDao(swDefFile.getLspIntegrityDefinition());
sdfIntegrityDefinition = new IntegrityDefinitionDao(swDefFile.getSdfIntegrityDefinition());
}

public void initialize(SoftwareDefinitionFileDao sdfFile) {
fileDefinitions.clear();
for (FileDefinitionDao fileDef : sdfFile.getFileDefinitions()) {
fileDefinitions.add(fileDef);
}

thwDefinitions.clear();
for (TargetHardwareDefinitionDao thwDef : sdfFile.getTargetHardwareDefinitions()) {
thwDefinitions.add(thwDef);
}

softwareDescription = sdfFile.getSoftwareDescription();
lspIntegrityDefinition = sdfFile.getLspIntegrityDefinition();
sdfIntegrityDefinition = sdfFile.getSdfIntegrityDefinition();
}

public void initialize(BdfFile file) throws IOException {

Expand Down Expand Up @@ -167,4 +183,6 @@ public int hashCode() {
}
return 0;
}


}
28 changes: 28 additions & 0 deletions src/main/java/edu/cmu/sv/arinc838/reader/BdfReader.java
@@ -0,0 +1,28 @@
/*
* 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 edu.cmu.sv.arinc838.binary.BdfFile;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;

public class BdfReader implements SdfReader {

@Override
public SoftwareDefinitionFileDao read(String sdfFile) throws Exception {
BdfFile bdf = new BdfFile(new File(sdfFile));

SoftwareDefinitionFileDao sdfDao = new SoftwareDefinitionFileDao(bdf);

return sdfDao;
}

}
18 changes: 18 additions & 0 deletions src/main/java/edu/cmu/sv/arinc838/reader/SdfReader.java
@@ -0,0 +1,18 @@
/*
* 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 edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;

public interface SdfReader {

public abstract SoftwareDefinitionFileDao read(String sdfFile) throws Exception;

}
38 changes: 38 additions & 0 deletions src/main/java/edu/cmu/sv/arinc838/reader/XdfReader.java
@@ -0,0 +1,38 @@
/*
* 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 javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;

import com.arinc.arinc838.SdfFile;

import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;

public class XdfReader implements SdfReader {

@Override
public SoftwareDefinitionFileDao read(String filename) throws Exception {
File file = new File(filename);

JAXBContext jaxbContext = JAXBContext.newInstance(SdfFile.class);
Unmarshaller jaxbMarshaller = jaxbContext.createUnmarshaller();

SdfFile jaxbFile = (SdfFile) jaxbMarshaller.unmarshal(file);

SoftwareDefinitionFileDao sdfDao = new SoftwareDefinitionFileDao(jaxbFile);


return sdfDao;
}

}
14 changes: 5 additions & 9 deletions src/main/java/edu/cmu/sv/arinc838/ui/item/XmlReadItem.java
Expand Up @@ -17,6 +17,7 @@
import com.arinc.arinc838.SdfFile;

import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.reader.XdfReader;

public class XmlReadItem extends AbstractMenuItem {
public XmlReadItem(String prompt) {
Expand All @@ -27,16 +28,11 @@ public XmlReadItem(String prompt) {
public MenuItem[] execute(SoftwareDefinitionFileDao sdfDao) throws Exception {
String filename = promptForResponse("Which file?");

File file = new File(filename);

JAXBContext jaxbContext = JAXBContext.newInstance(SdfFile.class);
Unmarshaller jaxbMarshaller = jaxbContext.createUnmarshaller();

SdfFile jaxbFile = (SdfFile) jaxbMarshaller.unmarshal(file);

sdfDao.initialize(jaxbFile);
XdfReader reader = new XdfReader();
SoftwareDefinitionFileDao read = reader.read(filename);
sdfDao.initialize(read);

System.out.println ("Successfully read in " + file);
System.out.println ("Successfully read in " + filename);

return super.getEmptyItems();
}
Expand Down
12 changes: 10 additions & 2 deletions src/main/java/edu/cmu/sv/arinc838/util/Converter.java
Expand Up @@ -3,7 +3,15 @@
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

public class Converter {
/**
* Converts the hexadecimal input string into the binary, byte-array
* equivalent. The input string should not include the common "0x" prefix.
*
* @param hexString
* The hex string to be converted.
* @return The binary, byte-array representation.
*/
public static byte[] hexToBytes(String hexString) {
return new HexBinaryAdapter().unmarshal(hexString);
}
return new HexBinaryAdapter().unmarshal(hexString);
}
}
3 changes: 2 additions & 1 deletion src/main/java/edu/cmu/sv/arinc838/writer/BdfWriter.java
Expand Up @@ -12,6 +12,7 @@
import java.io.File;

import edu.cmu.sv.arinc838.binary.BdfFile;
import edu.cmu.sv.arinc838.builder.BuilderFactoryImpl;
import edu.cmu.sv.arinc838.builder.SoftwareDefinitionFileBuilder;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;

Expand All @@ -21,7 +22,7 @@ public void write(String path, SoftwareDefinitionFileDao sdfDao) throws Exceptio
File fileOnDisk = new File(path + sdfDao.getBinaryFileName());
BdfFile file = new BdfFile(fileOnDisk);

SoftwareDefinitionFileBuilder builder = new SoftwareDefinitionFileBuilder();
SoftwareDefinitionFileBuilder builder = new SoftwareDefinitionFileBuilder(new BuilderFactoryImpl());
write (file, builder, sdfDao);

}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/edu/cmu/sv/arinc838/writer/XdfWriter.java
Expand Up @@ -17,14 +17,15 @@
import com.arinc.arinc838.SdfFile;
import com.sun.xml.bind.marshaller.NamespacePrefixMapper;

import edu.cmu.sv.arinc838.builder.BuilderFactoryImpl;
import edu.cmu.sv.arinc838.builder.SoftwareDefinitionFileBuilder;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;

public class XdfWriter implements SdfWriter {
@Override
public void write(String path, SoftwareDefinitionFileDao sdfDao) throws Exception {
File file = new File(path + sdfDao.getXmlFileName());
SoftwareDefinitionFileBuilder builder = new SoftwareDefinitionFileBuilder();
SoftwareDefinitionFileBuilder builder = new SoftwareDefinitionFileBuilder(new BuilderFactoryImpl());

SdfFile sdfFile = builder.buildXml(sdfDao);
write(file, sdfFile);
Expand Down
74 changes: 74 additions & 0 deletions src/test/java/edu/cmu/sv/arinc838/reader/BdfReaderTest.java
@@ -0,0 +1,74 @@
package edu.cmu.sv.arinc838.reader;

import static org.testng.Assert.assertEquals;

import org.testng.annotations.Test;

import edu.cmu.sv.arinc838.dao.FileDefinitionDao;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao;
import edu.cmu.sv.arinc838.validation.ReferenceData;

public class BdfReaderTest {

@Test
public void testRead() throws Exception {
BdfReader reader = new BdfReader();
SoftwareDefinitionFileDao sdfDao = reader.read("src/test/resources/ACM4712345678.BDF");

assertEquals(sdfDao.getFileFormatVersion(),
ReferenceData.SDF_TEST_FILE.getFileFormatVersion());
assertEquals(sdfDao.getSoftwareDescription().getSoftwarePartnumber(),
ReferenceData.SDF_TEST_FILE.getSoftwareDescription()
.getSoftwarePartnumber());
assertEquals(sdfDao.getSoftwareDescription()
.getSoftwareTypeDescription(), ReferenceData.SDF_TEST_FILE
.getSoftwareDescription().getSoftwareTypeDescription());
assertEquals(sdfDao.getSoftwareDescription().getSoftwareTypeId(),
ReferenceData.SDF_TEST_FILE.getSoftwareDescription()
.getSoftwareTypeId());

for (int i = 0; i < ReferenceData.SDF_TEST_FILE
.getTargetHardwareDefinitions().size(); i++) {
TargetHardwareDefinitionDao actual = sdfDao
.getTargetHardwareDefinitions().get(i);
TargetHardwareDefinitionDao expected = ReferenceData.SDF_TEST_FILE
.getTargetHardwareDefinitions().get(i);
assertEquals(actual.getThwId(), expected.getThwId());
for (int j = 0; j < expected.getPositions().size(); j++) {
String actPos = actual.getPositions().get(j);
String expPos = expected.getPositions().get(j);
assertEquals(actPos, expPos);
}
}

for (int i = 0; i < ReferenceData.SDF_TEST_FILE.getFileDefinitions()
.size(); i++) {
FileDefinitionDao actual = sdfDao.getFileDefinitions().get(i);
FileDefinitionDao expected = ReferenceData.SDF_TEST_FILE
.getFileDefinitions().get(i);
assertEquals(actual.getFileName(), expected.getFileName());
assertEquals(actual.getFileSize(), expected.getFileSize());
assertEquals(
actual.getFileIntegrityDefinition().getIntegrityType(),
expected.getFileIntegrityDefinition().getIntegrityType());
assertEquals(actual.getFileIntegrityDefinition()
.getIntegrityValue(), expected.getFileIntegrityDefinition()
.getIntegrityValue());
}

assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityType(),
ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition()
.getIntegrityType());
assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityValue(),
ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition()
.getIntegrityValue());

assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityType(),
ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition()
.getIntegrityType());
assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityValue(),
ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition()
.getIntegrityValue());
}
}
77 changes: 77 additions & 0 deletions src/test/java/edu/cmu/sv/arinc838/reader/XdfReaderTest.java
@@ -0,0 +1,77 @@
package edu.cmu.sv.arinc838.reader;

import static org.testng.Assert.*;
import java.io.File;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import edu.cmu.sv.arinc838.dao.FileDefinitionDao;
import edu.cmu.sv.arinc838.dao.SoftwareDefinitionFileDao;
import edu.cmu.sv.arinc838.dao.TargetHardwareDefinitionDao;
import edu.cmu.sv.arinc838.validation.ReferenceData;

public class XdfReaderTest {

@Test
public void testRead() throws Exception {
XdfReader reader = new XdfReader();
SoftwareDefinitionFileDao sdfDao = reader.read("src/test/resources/ACM4712345678.XDF");

assertEquals(sdfDao.getFileFormatVersion(),
ReferenceData.SDF_TEST_FILE.getFileFormatVersion());
assertEquals(sdfDao.getSoftwareDescription().getSoftwarePartnumber(),
ReferenceData.SDF_TEST_FILE.getSoftwareDescription()
.getSoftwarePartnumber());
assertEquals(sdfDao.getSoftwareDescription()
.getSoftwareTypeDescription(), ReferenceData.SDF_TEST_FILE
.getSoftwareDescription().getSoftwareTypeDescription());
assertEquals(sdfDao.getSoftwareDescription().getSoftwareTypeId(),
ReferenceData.SDF_TEST_FILE.getSoftwareDescription()
.getSoftwareTypeId());

for (int i = 0; i < ReferenceData.SDF_TEST_FILE
.getTargetHardwareDefinitions().size(); i++) {
TargetHardwareDefinitionDao actual = sdfDao
.getTargetHardwareDefinitions().get(i);
TargetHardwareDefinitionDao expected = ReferenceData.SDF_TEST_FILE
.getTargetHardwareDefinitions().get(i);
assertEquals(actual.getThwId(), expected.getThwId());
for (int j = 0; j < expected.getPositions().size(); j++) {
String actPos = actual.getPositions().get(j);
String expPos = expected.getPositions().get(j);
assertEquals(actPos, expPos);
}
}

for (int i = 0; i < ReferenceData.SDF_TEST_FILE.getFileDefinitions()
.size(); i++) {
FileDefinitionDao actual = sdfDao.getFileDefinitions().get(i);
FileDefinitionDao expected = ReferenceData.SDF_TEST_FILE
.getFileDefinitions().get(i);
assertEquals(actual.getFileName(), expected.getFileName());
assertEquals(actual.getFileSize(), expected.getFileSize());
assertEquals(
actual.getFileIntegrityDefinition().getIntegrityType(),
expected.getFileIntegrityDefinition().getIntegrityType());
assertEquals(actual.getFileIntegrityDefinition()
.getIntegrityValue(), expected.getFileIntegrityDefinition()
.getIntegrityValue());
}

assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityType(),
ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition()
.getIntegrityType());
assertEquals(sdfDao.getSdfIntegrityDefinition().getIntegrityValue(),
ReferenceData.SDF_TEST_FILE.getSdfIntegrityDefinition()
.getIntegrityValue());

assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityType(),
ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition()
.getIntegrityType());
assertEquals(sdfDao.getLspIntegrityDefinition().getIntegrityValue(),
ReferenceData.SDF_TEST_FILE.getLspIntegrityDefinition()
.getIntegrityValue());
}
}

0 comments on commit f19d229

Please sign in to comment.