- 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 { public class DataObjectDefinition {
private String name; private String name;
private String type; private String type;
private boolean trans = false; /* transient attribute value */
private int count = 0; private int count = 0;
public DataObjectDefinition(Node dataObjectNode) throws SclParserException { public DataObjectDefinition(Node dataObjectNode) throws SclParserException {
this.name = ParserUtils.parseAttribute(dataObjectNode, "name"); this.name = ParserUtils.parseAttribute(dataObjectNode, "name");
this.type = ParserUtils.parseAttribute(dataObjectNode, "type"); 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)) if ((this.type == null) || (this.name == null))
throw new SclParserException(dataObjectNode, "DO misses required attribute."); throw new SclParserException(dataObjectNode, "DO misses required attribute.");
@ -53,5 +60,9 @@ public class DataObjectDefinition {
public int getCount() { public int getCount() {
return count; return count;
} }
public boolean isTransient() {
return trans;
}
} }

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

@ -132,7 +132,7 @@ public class DynamicModelGenerator {
for (DataObject dataObject : logicalNode.getDataObjects()) { for (DataObject dataObject : logicalNode.getDataObjects()) {
output.print("DO(" + dataObject.getName() + " " + dataObject.getCount() + "){\n"); output.print("DO(" + dataObject.getName() + " " + dataObject.getCount() + "){\n");
exportDataObject(output, dataObject); exportDataObject(output, dataObject, false);
output.println("}"); output.println("}");
} }
@ -369,27 +369,37 @@ public class DynamicModelGenerator {
output.println("}"); 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()) { for (DataObject subDataObject : dataObject.getSubDataObjects()) {
output.print("DO(" + subDataObject.getName() + " " + subDataObject.getCount() + "){\n"); output.print("DO(" + subDataObject.getName() + " " + subDataObject.getCount() + "){\n");
exportDataObject(output, subDataObject); exportDataObject(output, subDataObject, isTransient);
output.println("}"); output.println("}");
} }
for (DataAttribute dataAttribute : dataObject.getDataAttributes()) { 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("DA(" + dataAttribute.getName() + " ");
output.print(dataAttribute.getCount() + " "); output.print(dataAttribute.getCount() + " ");
output.print(dataAttribute.getType().getIntValue() + " "); output.print(dataAttribute.getType().getIntValue() + " ");
output.print(dataAttribute.getFc().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; Long sAddr = null;
@ -471,7 +481,7 @@ public class DynamicModelGenerator {
output.println("{"); output.println("{");
for (DataAttribute subDataAttribute : dataAttribute.getSubDataAttributes()) { for (DataAttribute subDataAttribute : dataAttribute.getSubDataAttributes()) {
exportDataAttribute(output, subDataAttribute); exportDataAttribute(output, subDataAttribute, isTransient);
} }
output.println("}"); output.println("}");

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

Loading…
Cancel
Save