public XExtension GetByUri(Uri uri) { if (!this.extensionMap.ContainsKey(uri)) { XLogging.Log(String.Format("Extension with uri '{0}' not regiesterd. Attempting download...", uri), XLogging.Importance.INFO); this.Register(XExtensionParser.Instance.Parse(uri)); } XExtension extension = this.extensionMap[uri]; return(extension); }
protected void LoadExtensionCache() { long minModified = DateTime.Now.Ticks - 2592000000L; DirectoryInfo extFolder = Directory.CreateDirectory(XRuntimeUtils.GetExtensionCacheFolder()); FileInfo[] extFiles = extFolder.GetFiles(); if (extFiles == null) { XLogging.Log("Extension caching disabled (Could not access cache directory)!", XLogging.Importance.WARNING); return; } foreach (FileInfo extFile in extFiles) { if (!(extFile.FullName.ToLower().EndsWith(".xesext", StringComparison.Ordinal))) { continue; } if (extFile.LastWriteTime.Ticks < minModified) { extFile.Delete(); } else { try { XExtension extension = XExtensionParser.Instance.Parse(extFile); if (!(this.extensionMap.ContainsKey(extension.Uri))) { this.extensionMap.Add(extension.Uri, extension); this.extensionList.Add(extension); XLogging.Log("Loaded XES extension '" + extension.Uri + "' from cache", XLogging.Importance.DEBUG); } else { XLogging.Log("Skipping cached XES extension '" + extension.Uri + "' (already defined)", XLogging.Importance.DEBUG); } } catch (Exception e) { XLogging.Log(e.Message, XLogging.Importance.ERROR); throw e; } } } }
public void Register(XExtension extension) { this.extensionMap.Add(extension.Uri, extension); int i = this.extensionList.IndexOf(extension); if (i < 0) { this.extensionList.Add(extension); } else { this.extensionList.Remove(extension); this.extensionList.Insert(i, extension); } }
protected XExtension Parse(XmlReader reader) { XExtension extension = null; XAttribute currentAttribute = null; Dictionary <string, XAttribute> xAttributes = null; IXFactory factory = XFactoryRegistry.Instance.CurrentDefault; while (reader.Read()) { // When a start tag is found if (reader.IsStartElement()) { string tagName = reader.LocalName; if (tagName.Equals("", StringComparison.CurrentCultureIgnoreCase)) { tagName = reader.Name; } if (tagName.Equals("xesextension", StringComparison.CurrentCultureIgnoreCase)) { string xName = reader.GetAttribute("name"); string xPrefix = reader.GetAttribute("prefix"); Uri xUri = null; try { xUri = new Uri(reader.GetAttribute("uri")); } catch (UriFormatException e) { XLogging.Log(e.Message, XLogging.Importance.ERROR); throw e; } extension = new XExtension(xName, xPrefix, xUri); } else if (tagName.Equals("log", StringComparison.CurrentCultureIgnoreCase)) { xAttributes = extension.LogAttributes; } else if (tagName.Equals("trace", StringComparison.CurrentCultureIgnoreCase)) { xAttributes = extension.TraceAttributes; } else if (tagName.Equals("event", StringComparison.CurrentCultureIgnoreCase)) { xAttributes = extension.EventAttributes; } else if (tagName.Equals("meta", StringComparison.CurrentCultureIgnoreCase)) { xAttributes = extension.MetaAttributes; } else if (tagName.Equals("string", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeLiteral(key, "DEFAULT", extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("date", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeTimestamp(key, 0L, extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("int", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeDiscrete(key, 0L, extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("float", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeContinuous(key, 0.0D, extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("boolean", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeBoolean(key, false, extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("id", StringComparison.CurrentCultureIgnoreCase)) { string key = reader.GetAttribute("key"); currentAttribute = factory.CreateAttributeID(key, XIDFactory.Instance.CreateId(), extension); xAttributes.Add(key, currentAttribute); } else if (tagName.Equals("alias", StringComparison.CurrentCultureIgnoreCase) && currentAttribute != null) { string mapping = reader.GetAttribute("mapping"); string name = reader.GetAttribute("name"); XGlobalAttributeNameMap.Instance.RegisterMapping(mapping, currentAttribute.Key, name); } else { // non supported tag XLogging.Log(String.Format("Non-supported tag '{0}' found. Ignoring it.", tagName), XLogging.Importance.TRACE); } } // When a close tag is found (including empty elements) if (reader.IsEmptyElement || !reader.IsStartElement()) { string tagName = reader.LocalName; if (tagName.Equals("", StringComparison.InvariantCultureIgnoreCase)) { tagName = reader.Name; } if (ATTRIBUTE_TYPES.Contains(tagName.Trim().ToLower())) { currentAttribute = null; } } } return(extension); }
public int GetIndex(XExtension extension) { return(this.extensionList.IndexOf(extension)); }