/** Creates the location definitions */ private void createLocations() { ArrayList<DictionaryFileRef> files = new ArrayList<DictionaryFileRef>(); LocationStore.startLocations(); for (TraceGroup group : dictionaryFile.getOwner().getModel()) { for (Trace trace : group) { writeLocation(files, trace); } } // Build XML and assign ID's to refs Collections.sort(files, new FileRefComparator()); String lastpath = null; for (DictionaryFileRef ref : files) { if (!ref.path.equals(lastpath)) { if (lastpath != null) { LocationStore.endPath(); } LocationStore.startPath(ref.path); lastpath = ref.path; } LocationStore.writeFile(++fileref, ref.file); ref.refid = fileref; } if (lastpath != null) { LocationStore.endPath(); } LocationStore.endLocations(); }
/** * Writes the data type definitions * * @param typeList the list of data types */ private void writeTypeDefinitions(ArrayList<String> typeList) { for (String type : typeList) { DataType dt = mapTypeToDataType(type); if (dt != null) { // Normal parameters int size = mapParameterTypeToSize(type); String formatChar = SourceUtils.mapNormalTypeToFormat(type); if (formatChar != null && formatChar.length() > 1 && formatChar.charAt(0) == '%') { formatChar = formatChar.substring(1); TypeDefStore.writeTypeDef(type, size, formatChar, dt); // Write alternative format characters writeAlternativeFormatChars(formatChar, type, size, dt); } else { TypeDefStore.writeTypeDef(type, size, null, dt); } } else { // Enum parameters TraceModel model = dictionaryFile.getOwner().getModel(); TraceConstantTable table = model.findConstantTableByName(type); if (table != null) { TypeDefStore.startTypeDef( table.getName(), mapParameterTypeToSize(table.getType()), null, DataType.ENUM); for (TraceConstantTableEntry entry : table) { TypeDef.writeTypeMember(entry.getID(), entry.getName(), null); } TypeDefStore.endTypeDef(); } } } }
/** Creates the trace definitions */ private void createDefs() { // This should check for duplicates TraceDataStore.startDataStore(); TraceModel model = dictionaryFile.getOwner().getModel(); TraceProjectAPI api = model.getExtension(TraceProjectAPI.class); for (TraceGroup group : model) { for (Trace trace : group) { trace.addExtension(new DictionaryDefRef(++defref)); TraceFormatFlags flags = new TraceFormatFlags(); flags.isFormattingSupported = true; String data = api.formatTraceForExport(trace, flags); data = replaceUnescapeQuotes(data); TraceDataStore.writeData(defref, DataType.STRING, data); } } TraceDataStore.endDataStore(); }
/** * Builds the list of parameter types * * @return the list of types found from the model */ private ArrayList<String> buildTypeList() { TraceModel model = dictionaryFile.getOwner().getModel(); ArrayList<String> typeList = new ArrayList<String>(); for (TraceGroup group : model) { for (Trace trace : group) { for (TraceParameter parameter : trace) { if ((parameter.getExtension(HiddenTraceObjectRule.class) == null) || (parameter.getExtension(FillerParameterRule.class) != null)) { String type = parameter.getType(); if (!typeList.contains(type)) { typeList.add(type); } } } } } return typeList; }
/** Creates the component definition */ private void createComponent() { TraceModel model = dictionaryFile.getOwner().getModel(); int compid = model.getID(); // Component prefix and suffix are in property file. // If not there, the default values are used String prefix = TraceObjectUtils.findProperty(model, PropertyNames.PREFIX); if (prefix == null || prefix.length() == 0) { prefix = FormattingUtils.getDefaultComponentPrefix(model); } String suffix = TraceObjectUtils.findProperty(model, PropertyNames.SUFFIX); if (suffix == null || suffix.length() == 0) { suffix = FormattingUtils.getDefaultComponentSuffix(model); } Dictionary.startComponent(compid, dictionaryFile.getProjectName(), prefix, suffix); for (TraceGroup group : model) { createGroup(group); } Dictionary.endComponent(); }