use of org.omg.space.xtce.DescriptionType.AncillaryDataSet in project CCDD by nasa.
the class CcddXTCEHandler method convertTablesToXTCE.
/**
********************************************************************************************
* Convert the project database contents to XTCE XML format
*
* @param tableNames
* array of table names to convert
*
* @param replaceMacros
* true to replace any embedded macros with their corresponding values
*
* @param includeReservedMsgIDs
* true to include the contents of the reserved message ID table in the export file
*
* @param includeVariablePaths
* true to include the variable path for each variable in a structure table, both in
* application format and using the user-defined separator characters
*
* @param variableHandler
* variable handler class reference; null if includeVariablePaths is false
*
* @param separators
* string array containing the variable path separator character(s), show/hide data
* types flag ('true' or 'false'), and data type/variable name separator
* character(s); null if includeVariablePaths is false
*
* @param endianess
* EndianType.BIG_ENDIAN for big endian, EndianType.LITTLE_ENDIAN for little endian
*
* @param version
* version attribute
*
* @param validationStatus
* validation status attribute
*
* @param classification1
* first level classification attribute
*
* @param classification2
* second level classification attribute
*
* @param classification3
* third level classification attribute
********************************************************************************************
*/
private void convertTablesToXTCE(String[] tableNames, CcddVariableSizeAndConversionHandler variableHandler, String[] separators, EndianType endianess, String version, String validationStatus, String classification1, String classification2, String classification3) {
this.endianess = endianess;
// Store the attributes
versionAttr = version;
validationStatusAttr = validationStatus;
classification1Attr = classification1;
classification2Attr = classification2;
classification3Attr = classification3;
// Create the root space system
SpaceSystemType rootSystem = addSpaceSystem(null, dbControl.getProjectName(), dbControl.getDatabaseDescription(dbControl.getDatabaseName()), classification1Attr, validationStatusAttr, versionAttr);
// Set the project's build information
AuthorSet author = factory.createHeaderTypeAuthorSet();
author.getAuthor().add(dbControl.getUser());
rootSystem.getHeader().setAuthorSet(author);
NoteSet note = factory.createHeaderTypeNoteSet();
note.getNote().add("Generated by CCDD " + ccddMain.getCCDDVersionInformation());
note.getNote().add("Date: " + new Date().toString());
note.getNote().add("Project: " + dbControl.getProjectName());
note.getNote().add("Host: " + dbControl.getServer());
note.getNote().add("Endianess: " + (endianess == EndianType.BIG_ENDIAN ? "big" : "little"));
rootSystem.getHeader().setNoteSet(note);
// Get the names of the tables representing the CCSDS telemetry and command headers
tlmHeaderTable = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_TLM_HDR);
cmdHeaderTable = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_CMD_HDR);
// Get the telemetry and command header argument column names for the application ID and
// the command function code. These are stored as project-level data fields
ccsdsAppID = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_APP_ID);
ccsdsFuncCode = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_FUNC_CODE);
// Check if the application ID argument column name isn't set in the project
if (ccsdsAppID == null) {
// Use the default application ID argument column name
ccsdsAppID = ArgumentColumnName.APP_ID.getDefaultArgColName();
}
// Check if the command function code argument column name isn't set in the project
if (ccsdsFuncCode == null) {
// Use the default command function code argument column name
ccsdsFuncCode = ArgumentColumnName.FUNC_CODE.getDefaultArgColName();
}
// The application ID or command function code argument column names are stored as
// ancillary data which is used if the export file is imported into CCDD
AncillaryDataSet ancillarySet = factory.createDescriptionTypeAncillaryDataSet();
AncillaryData appID = factory.createDescriptionTypeAncillaryDataSetAncillaryData();
appID.setName(ArgumentColumnName.APP_ID.getAncillaryName());
appID.setValue(ccsdsAppID);
ancillarySet.getAncillaryData().add(appID);
project.getValue().setAncillaryDataSet(ancillarySet);
AncillaryData funcCode = factory.createDescriptionTypeAncillaryDataSetAncillaryData();
funcCode.setName(ArgumentColumnName.FUNC_CODE.getAncillaryName());
funcCode.setValue(ccsdsFuncCode);
ancillarySet.getAncillaryData().add(funcCode);
project.getValue().setAncillaryDataSet(ancillarySet);
// Add the project's space systems, parameters, and commands
buildSpaceSystems(tableNames, variableHandler, separators);
}
use of org.omg.space.xtce.DescriptionType.AncillaryDataSet in project CCDD by nasa.
the class CcddXTCEHandler method importFromFile.
/**
********************************************************************************************
* Import the the table definitions from an XTCE XML formatted file
*
* @param importFile
* reference to the user-specified XML input file
*
* @param importType
* ImportType.IMPORT_ALL to import the table type, data type, and macro definitions,
* and the data from all the table definitions; ImportType.FIRST_DATA_ONLY to load
* only the data for the first table defined
*
* @throws CCDDException
* If a data is missing, extraneous, or in error in the import file
*
* @throws IOException
* If an import file I/O error occurs
*
* @throws Exception
* For any unanticipated errors
********************************************************************************************
*/
@Override
public void importFromFile(FileEnvVar importFile, ImportType importType) throws CCDDException, IOException, Exception {
try {
// Import the XML from the specified file
JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(importFile);
// Get the top-level space system
SpaceSystemType rootSystem = (SpaceSystemType) jaxbElement.getValue();
tableDefinitions = new ArrayList<TableDefinition>();
structureTypeDefn = null;
commandTypeDefn = null;
// Get the telemetry and command header argument column names for the application ID
// and the command function code. These are stored as project-level data fields
ccsdsAppID = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_APP_ID);
ccsdsFuncCode = fieldHandler.getFieldValue(CcddFieldHandler.getFieldProjectName(), InputDataType.XML_FUNC_CODE);
AncillaryDataSet ancillarySet = rootSystem.getAncillaryDataSet();
// Check if the root system contains ancillary data
if (ancillarySet != null) {
// Step through each ancillary data item
for (AncillaryData data : ancillarySet.getAncillaryData()) {
// name indicator
if (data.getName().equals(ArgumentColumnName.APP_ID.getAncillaryName())) {
// Store the item value as the application ID argument column name. Note
// that this overrides the value extracted from the project data field
ccsdsAppID = data.getValue();
} else // column name indicator
if (data.getName().equals(ArgumentColumnName.FUNC_CODE.getAncillaryName())) {
// Store the item value as the command function code argument column name.
// Note that this overrides the value extracted from the project data field
ccsdsFuncCode = data.getValue();
}
}
}
// import file
if (ccsdsAppID == null) {
// Use the default application ID argument column name
ccsdsAppID = ArgumentColumnName.APP_ID.getDefaultArgColName();
}
// the import file
if (ccsdsFuncCode == null) {
// Use the default command function code argument column name
ccsdsFuncCode = ArgumentColumnName.FUNC_CODE.getDefaultArgColName();
}
// Create the table type definitions for any new structure and command tables
createTableTypeDefinitions(rootSystem, importType);
// Check if at least one structure or command table needs to be built
if (structureTypeDefn != null || commandTypeDefn != null) {
// Step through each space system
for (SpaceSystemType system : rootSystem.getSpaceSystem()) {
// Recursively step through the XTCE-formatted data and extract the telemetry
// and command information
unbuildSpaceSystems(system, rootSystem.getName(), importType);
// Check if only the data from the first table is to be read
if (importType == ImportType.FIRST_DATA_ONLY) {
// Stop reading table definitions
break;
}
}
}
} catch (JAXBException je) {
// Inform the user that the database import failed
new CcddDialogHandler().showMessageDialog(parent, "<html><b>Cannot import XTCE XML from file<br>'</b>" + importFile.getAbsolutePath() + "<b>'; cause '" + je.getMessage() + "'", "File Error", JOptionPane.ERROR_MESSAGE, DialogOption.OK_OPTION);
}
}
Aggregations