- added tool support for transient data objects (genmodel/genconfig)

pull/331/head
Michael Zillgith 4 years ago
parent 7540b6a8d7
commit 5aec4c94b1

@ -28,11 +28,18 @@ import org.w3c.dom.Node;
public class DataObjectDefinition {
private String name;
private String type;
private boolean trans = false; /* transient attribute value */
private int count = 0;
public DataObjectDefinition(Node dataObjectNode) throws SclParserException {
this.name = ParserUtils.parseAttribute(dataObjectNode, "name");
this.type = ParserUtils.parseAttribute(dataObjectNode, "type");
Boolean isTransient = ParserUtils.parseBooleanAttribute(dataObjectNode, "transient");
if (isTransient != null)
this.trans = isTransient;
if ((this.type == null) || (this.name == null))
throw new SclParserException(dataObjectNode, "DO misses required attribute.");
@ -53,5 +60,9 @@ public class DataObjectDefinition {
public int getCount() {
return count;
}
public boolean isTransient() {
return trans;
}
}

@ -42,11 +42,13 @@ public class DataObject implements DataModelNode {
private List<DataObject> subDataObjects = null;
private SclType sclType;
private DataModelNode parent;
private boolean trans = false;
public DataObject(DataObjectDefinition doDefinition, TypeDeclarations typeDeclarations, DataModelNode parent) throws SclParserException {
this.name = doDefinition.getName();
this.count = doDefinition.getCount();
this.parent = parent;
this.trans = doDefinition.isTransient();
this.dataAttributes = new LinkedList<DataAttribute>();
this.subDataObjects = new LinkedList<DataObject>();
@ -109,6 +111,10 @@ public class DataObject implements DataModelNode {
public int getCount() {
return count;
}
public boolean isTransient() {
return trans;
}
@Override
public DataModelNode getChildByName(String childName) {

@ -132,7 +132,7 @@ public class DynamicModelGenerator {
for (DataObject dataObject : logicalNode.getDataObjects()) {
output.print("DO(" + dataObject.getName() + " " + dataObject.getCount() + "){\n");
exportDataObject(output, dataObject);
exportDataObject(output, dataObject, false);
output.println("}");
}
@ -369,27 +369,37 @@ public class DynamicModelGenerator {
output.println("}");
}
private void exportDataObject(PrintStream output, DataObject dataObject) {
private void exportDataObject(PrintStream output, DataObject dataObject, boolean isTransient) {
if (dataObject.isTransient())
isTransient = true;
for (DataObject subDataObject : dataObject.getSubDataObjects()) {
output.print("DO(" + subDataObject.getName() + " " + subDataObject.getCount() + "){\n");
exportDataObject(output, subDataObject);
exportDataObject(output, subDataObject, isTransient);
output.println("}");
}
for (DataAttribute dataAttribute : dataObject.getDataAttributes()) {
exportDataAttribute(output, dataAttribute);
exportDataAttribute(output, dataAttribute, isTransient);
}
}
private void exportDataAttribute(PrintStream output, DataAttribute dataAttribute) {
private void exportDataAttribute(PrintStream output, DataAttribute dataAttribute, boolean isTransient) {
output.print("DA(" + dataAttribute.getName() + " ");
output.print(dataAttribute.getCount() + " ");
output.print(dataAttribute.getType().getIntValue() + " ");
output.print(dataAttribute.getFc().getIntValue() + " ");
output.print(dataAttribute.getTriggerOptions().getIntValue() + " ");
int trgOpsVal = dataAttribute.getTriggerOptions().getIntValue();
if (isTransient)
trgOpsVal += 128;
output.print(trgOpsVal + " ");
Long sAddr = null;
@ -471,7 +481,7 @@ public class DynamicModelGenerator {
output.println("{");
for (DataAttribute subDataAttribute : dataAttribute.getSubDataAttributes()) {
exportDataAttribute(output, subDataAttribute);
exportDataAttribute(output, subDataAttribute, isTransient);
}
output.println("}");

@ -588,7 +588,7 @@ public class StaticModelGenerator {
cOut.println("};\n");
printDataObjectDefinitions(lnName, logicalNode.getDataObjects(), null);
printDataObjectDefinitions(lnName, logicalNode.getDataObjects(), null, false);
printReportControlBlocks(lnName, logicalNode);
@ -604,7 +604,7 @@ public class StaticModelGenerator {
}
}
private void printDataObjectDefinitions(String lnName, List<DataObject> dataObjects, String dataAttributeSibling) {
private void printDataObjectDefinitions(String lnName, List<DataObject> dataObjects, String dataAttributeSibling, boolean isTransient) {
for (int i = 0; i < dataObjects.size(); i++) {
DataObject dataObject = dataObjects.get(i);
@ -644,17 +644,26 @@ public class StaticModelGenerator {
cOut.println(" " + dataObject.getCount());
cOut.println("};\n");
boolean isDoTransient = false;
if (isTransient)
isDoTransient = true;
else {
if (dataObject.isTransient())
isDoTransient = true;
}
if (dataObject.getSubDataObjects() != null)
printDataObjectDefinitions(doName, dataObject.getSubDataObjects(), firstDataAttributeName);
printDataObjectDefinitions(doName, dataObject.getSubDataObjects(), firstDataAttributeName, isDoTransient);
if (dataObject.getDataAttributes() != null)
printDataAttributeDefinitions(doName, dataObject.getDataAttributes());
printDataAttributeDefinitions(doName, dataObject.getDataAttributes(), isDoTransient);
}
}
private void printDataAttributeDefinitions(String doName, List<DataAttribute> dataAttributes) {
private void printDataAttributeDefinitions(String doName, List<DataAttribute> dataAttributes, boolean isTransient) {
for (int i = 0; i < dataAttributes.size(); i++) {
DataAttribute dataAttribute = dataAttributes.get(i);
@ -709,6 +718,9 @@ public class StaticModelGenerator {
if (trgOps.isQchg())
cOut.print(" + TRG_OPT_QUALITY_CHANGED");
if (isTransient)
cOut.print(" + TRG_OPT_TRANSIENT");
cOut.println(",");
@ -731,7 +743,7 @@ public class StaticModelGenerator {
cOut.println("};\n");
if (dataAttribute.getSubDataAttributes() != null)
printDataAttributeDefinitions(daName, dataAttribute.getSubDataAttributes());
printDataAttributeDefinitions(daName, dataAttribute.getSubDataAttributes(), isTransient);
DataModelValue value = dataAttribute.getValue();

Loading…
Cancel
Save