def __init__(self): super().__init__("Identity", "identity", urlparse("http://www.xes-standard.org/identity.xesext")) factory = XFactoryRegistry().current_default() self.ATTR_ID = factory.create_attribute_id("identity:id", XIDFactory.create_id(), self) self.get_log_attributes().add(self.ATTR_ID.clone()) self.get_trace_attributes().add(self.ATTR_ID.clone()) self.get_event_attributes().add(self.ATTR_ID.clone()) self.get_meta_attributes().add(self.ATTR_ID.clone()) XGlobalAttributeNameMap().register_mapping("EN", "identity:id", "Identity") XGlobalAttributeNameMap().register_mapping("DE", "identity:id", "Identität") XGlobalAttributeNameMap().register_mapping("FR", "identity:id", "Identité") XGlobalAttributeNameMap().register_mapping("ES", "identity:id", "Identidad") XGlobalAttributeNameMap().register_mapping("PT", "identity:id", "Identidade")
def __init__(self): super().__init__("Micro", "micro", urlparse("http://www.xes-standard.org/micro.xesext")) factory = XFactoryRegistry().current_default() self.ATTR_LEVEL = factory.create_attribute_discrete( "micro:level", -1, self) self.ATTR_PID = factory.create_attribute_id("micro:parentId", XIDFactory.create_id(), self) self.ATTR_LENGTH = factory.create_attribute_discrete( "micro:length", -1, self) self.get_event_attributes().add(self.ATTR_LEVEL.clone()) self.get_event_attributes().add(self.ATTR_PID.clone()) self.get_event_attributes().add(self.ATTR_LENGTH.clone()) XGlobalAttributeNameMap().register_mapping( "EN", "micro:level", "Micro level of this event") XGlobalAttributeNameMap().register_mapping( "EN", "micro:parentId", "Id of parent event of this event") XGlobalAttributeNameMap().register_mapping( "EN", "micro:length", "Number of child events for this event")
class XExtensionHandler(ContentHandler): """SAX handler class for extension definition files. """ def __init__(self): super().__init__() self.__extension = None self.__currentAttribute = None self.__xAttributes = None self.__factory = XFactoryRegistry().current_default() self.reset() def reset(self): """Resets the handler to initial state. """ self.__extension = None self.__currentAttribute = None self.__xAttributes = None self.__factory = XFactoryRegistry().current_default() def get_extension(self): """Retrieves the parsed extension after parsing. :return: The parsed extension. :rtype: XExtension """ return self.__extension def startElement(self, name, attributes): """ Overrides startElement in class ContentHandler :param name: Contains the raw XML 1.0 name of the element type :type name: str :param attributes: An instance of the Attributes class containing the attributes of the element :type attributes: xml.sax.xmlreader.AttributesImpl """ tag_name = name if tag_name.lower() == "xesextension": mapping = attributes.getValue("name") name = attributes.getValue("prefix") x_uri = parse.urlparse(attributes.getValue("uri")) try: request.urlopen(attributes.getValue("uri")) except error.URLError: return self.__extension = XExtension(mapping, name, x_uri) elif tag_name.lower() == "log": self.__xAttributes = self.__extension.get_log_attributes() elif tag_name.lower() == "trace": self.__xAttributes = self.__extension.get_trace_attributes() elif tag_name.lower() == "event": self.__xAttributes = self.__extension.get_event_attributes() elif tag_name.lower() == "meta": self.__xAttributes = self.__extension.get_meta_attributes() elif tag_name.lower() == "string": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_literal( mapping, "DEFAULT", self.__extension) self.__xAttributes.add(self.__currentAttribute) elif tag_name.lower() == "date": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_timestamp( mapping, 0, self.__extension) self.__xAttributes.add(self.__currentAttribute) elif tag_name.lower() == "int": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_discrete( mapping, 0, self.__extension) self.__xAttributes.add(self.__currentAttribute) elif tag_name.lower() == "float": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_continuous( mapping, 0.0, self.__extension) self.__xAttributes.add(self.__currentAttribute) elif tag_name.lower() == "boolean": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_boolean( mapping, False, self.__extension) self.__xAttributes.add(self.__currentAttribute) elif tag_name.lower() == "id": self.__xAttributes = self.__extension.get_log_attributes() mapping = self.__extension.get_prefix( ) + ':' + attributes.getValue("key") self.__currentAttribute = self.__factory.create_attribute_id( mapping, XIDFactory.create_id(), self.__extension) self.__xAttributes.add(self.__currentAttribute) elif self.__currentAttribute is not None and tag_name.lower( ) == "alias": mapping = attributes.getValue("mapping") name = attributes.getValue("name") XGlobalAttributeNameMap().register_mapping( mapping, self.__currentAttribute.get_key(), name) def endElement(self, local_name): """ Overrides endElement in class ContentHandler :param local_name: The name of the element type, just as with the startElement event :type local_name: str """ tag_name = local_name if tag_name.lower() in [ "string", "date", "int", "float", "boolean", "id" ]: self.__currentAttribute = None