package gw.systables.verifier uses gw.api.locale.DisplayKey uses gw.xml.parser2.PLXMLNode uses java.util.Map uses javax.xml.namespace.QName uses java.util.List @ReadOnly class RequiredFieldsVerifierHelper { private var _verifier : VerifierBase private var _fieldsToVerify : String[] private var _elementsToVerify : String[] private var _requiredFKFields : List construct(verifier : VerifierBase, fieldsToVerify : String[]) { this(verifier,fieldsToVerify,null) } construct(verifier : VerifierBase, fieldsToVerify : String[], elementsToVerify : String[]) { this(verifier,null,fieldsToVerify,elementsToVerify) } construct(verifier : VerifierBase, requiredFKFields : List, fieldsToVerify : String[], elementsToVerify : String[]) { _verifier = verifier _fieldsToVerify = fieldsToVerify _elementsToVerify = elementsToVerify _requiredFKFields = requiredFKFields } function verify(importNode : PLXMLNode, results : Map>) { var entities = importNode.getChildren() if(_elementsToVerify != null) entities = entities.where(\ element -> _elementsToVerify.contains(element.ElementName)) entities.each(\entity -> { verifyRequiredField(entity, results) verifyRequiredFKFields(entity, results) }) } function getRequiredFields() : String[] { return _fieldsToVerify } private function verifyRequiredField(entity : PLXMLNode, results : Map>) { for(var field in getRequiredFields()) { var fieldValue = entity.getChildElement(QName.valueOf(field)).Text if (fieldValue == null || fieldValue.length == 0) { _verifier.addErrorToResults(DisplayKey.get("Java.ValidationError.SystemTables.NullOrEmptyField", field), entity, results) } } } private function verifyRequiredFKFields(entity : PLXMLNode, results : Map>) { if (_requiredFKFields==null) { return } _requiredFKFields.each(\field -> { var node = entity.getChildElement(QName.valueOf(field)) var attr = node.Attributes.get("public-id") if (attr == null) { _verifier.addErrorToResults("Required foreign key " + field + " is missing.", entity, results) } }) } }