/// <summary> /// Initializes a new instance of the <see cref="ReportUtilities"/> class. /// </summary> /// <param name="user">AdWords user to be used along with this /// utilities object.</param> /// <param name="reportDefinition">The report definition.</param> /// <param name="reportVersion">The report version.</param> public ReportUtilities(AdWordsUser user, string reportVersion, IReportDefinition reportDefinition) : base(user) { this.reportVersion = reportVersion; this.reportDefinition = reportDefinition; this.usesQuery = false; }
public void Contextualize(IReportDefinition definition) { this.report = definition; this.repos = this.repos ?? InversionExtensions.get<IWikiRepository>((IInversionContainer) myapp.ioc) ?? new WikiRepository(); this.render_ = this.render_ ?? InversionExtensions.get<IWikiRenderService>((IInversionContainer) myapp.ioc) ?? new WikiRender(); this.wrender = this.wrender ?? this.render_.Start(); }
public string GetCacheString(IReportDefinition definition){ var list = new List<string>(); list.Add(definition.Code); foreach (KeyValuePair<string, object> pair in definition.Parameters){ list.Add(pair.Key+"--"+pair.Value.toStr()); } var result = list.concat("---"); return result.toMD5(); }
/// <summary> /// Converts the report definition to XML format. /// </summary> /// <param name="definition">The report definition.</param> /// <returns>The report definition serialized as an XML string.</returns> private string ConvertDefinitionToXml(IReportDefinition definition) { string xml = SerializationUtilities.SerializeAsXmlText(definition).Replace( "ReportDefinition", "reportDefinition"); XmlDocument doc = XmlUtilities.CreateDocument(xml); XmlNodeList xmlNodes = doc.SelectNodes("descendant::*"); foreach (XmlElement node in xmlNodes) { node.RemoveAllAttributes(); } return(doc.OuterXml); }
protected virtual string embedPropertiesAndParameters(string result, IReportDefinition definition){ return result.replace(@"\#\#(\w+)", m=>{ var name = m.Groups[1].Value; var prop = definition.GetType().resolveProperty(name); if(null!=prop){ return prop.GetValue(definition,null).toStr(); } var param = definition.TemplateParameters.FirstOrDefault(x => x.Code == name); if(param!=null){ return param.Value.toStr(); } return ""; } ); }
public string Get(IReportDefinition definition){ var filename = keyprovider.GetCacheString(definition).toSystemName(); var fname = fs.Resolve("~/tmp/reports/" + filename,false); //если нет кэшированной версии, возвращаем null if(!File.Exists(fname)){ return null; } var time = File.GetLastWriteTime(fname); //проверяем лицензию foreach (IReportCacheLeaseChecker checker in checkers){ //если хоть один провайдер лицензий дает отклик false - вернуть Null if(!checker.IsValid(definition,time)){ return null; } } return File.ReadAllText(fname); }
public void Process(IReportDefinition definition){ var dynamic = definition as IReportDefinitionDynamicView; if (null == dynamic) return; var code = definition.Code.Replace(".", "_"); var dir = "~/usr/views/report/auto/" + code; string generatorname = dynamic.PrepareViewGenerator; if (generatorname.hasContent()) { string name = "prepare"; dynamic.PrepareView = "auto/"+ code + "/" + name; generate(dynamic, generatorname, name, dir); } generatorname = dynamic.RenderViewGenerator; if (generatorname.hasContent()) { string name = "render"; dynamic.RenderView = "auto/" + code + "/" + name; generate(dynamic, generatorname, name, dir); } }
public bool IsValid(IReportDefinition definition, DateTime forTime){ lock (this){ if (!definition.Parameters.ContainsKey("datalease")) return false; var roottype = definition.Parameters.get<string>("dataleaseroot"); if (roottype.noContent()){ throw new Exception("cannot use datalease, while root type not seted"); } var type = roottype.toType(); var checker = definition.Parameters["datalease"].toStr(); if (checker.noContent() || checker == "nocheck") return true; if (checker == "nocache") return false; var hqls = checker.split(false, true, '|'); foreach (string hql in hqls){ var dt = myapp.storage.Get(type).First(type, hql).toDate(); if(dt>forTime) return false; } return true; } }
private async Task <ReportResponse> GetResponse(AdWordsUser user, IReportDefinition reportDefinition) { var utils = new ReportUtilities(user, reportDefinition); var response = default(ReportResponse); utils.OnReady = new AdsReportUtilities.OnReadyCallback((r) => response = r); utils.OnFailed = new AdsReportUtilities.OnFailedCallback((ex) => throw ex); var task = Task.Run(async() => { while (response == default(ReportResponse)) { await Task.Delay(300); } return(response); }); utils.GetResponseAsync(); return(await task); }
/// <summary> /// Initializes a new instance of the <see cref="ReportUtilities"/> class. /// </summary> /// <param name="user">AdWords user to be used along with this /// utilities object.</param> /// <param name="reportDefinition">The report definition.</param> public ReportUtilities(AdWordsUser user, IReportDefinition reportDefinition) : this(user, DEFAULT_REPORT_VERSION, reportDefinition) { }
/// <summary> /// Converts the report definition to XML format. /// </summary> /// <param name="definition">The report definition.</param> /// <returns>The report definition serialized as an XML string.</returns> private string ConvertDefinitionToXml(IReportDefinition definition) { string xml = SerializationUtilities.SerializeAsXmlText(definition).Replace( "ReportDefinition", "reportDefinition"); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlNodeList xmlNodes = doc.SelectNodes("descendant::*"); foreach (XmlElement node in xmlNodes) { node.RemoveAllAttributes(); } return doc.OuterXml; }
protected virtual string postProcess(IReportDefinition definition, string rootdir, string result){ return result; }
protected virtual string mainProcess(IReportDefinition definition, string rootdir){ var result = myapp.files.Read(Template); result = embedPropertiesAndParameters(result, definition); return result; }
public void Set(IReportDefinition definition,string content){ var filename = keyprovider.GetCacheString(definition).toSystemName(); fs.Write("~/tmp/reports/" + filename, content); }
public string Generate(IReportDefinition definition, string rootdir){ var result = mainProcess(definition, rootdir); result = postProcess(definition, rootdir, result); return result; }