package gw.systables.verifier uses gw.api.locale.DisplayKey uses gw.xml.parser2.PLXMLNode uses java.util.Map uses java.util.Set uses java.util.List @ReadOnly class PublicIdVerifier extends VerifierBase { static final var PUBLIC_ID_ATTR_NAME = "public-id" /** * For each entity to be imported, verifies its public ID is defined and not used by * any other entity being imported. */ override function verify(importNode : PLXMLNode) : Map> { var results : Map> = {} verifyPublicIds(importNode.Children, results) return results } private function verifyPublicIds(entityNodes : List, results : Map>) { var visitedIds : Set = {} for (var node in entityNodes) { var publicId = node.getAttributeValue(PUBLIC_ID_ATTR_NAME) if (publicId == null or publicId.Empty) { addErrorToResults( DisplayKey.get("Java.ValidationError.SystemTables.NoPublicId"), node, results) } else if (visitedIds.contains(publicId)) { addErrorToResults( DisplayKey.get("Java.ValidationError.SystemTables.DuplicatePublicId", publicId), node, results) } else { visitedIds.add(publicId) } } } }