Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
 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 "";
         }
         );
 }
Ejemplo n.º 6
0
 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);
        }
Ejemplo n.º 10
0
 /// <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;
 }
 /// <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;
 }
Ejemplo n.º 13
0
 protected virtual string postProcess(IReportDefinition definition, string rootdir, string result){
     return result;
 }
Ejemplo n.º 14
0
 protected virtual string mainProcess(IReportDefinition definition, string rootdir){
     var result = myapp.files.Read(Template);
     result = embedPropertiesAndParameters(result, definition);
     return result;
 }
Ejemplo n.º 15
0
 public void Set(IReportDefinition definition,string content){
     var filename = keyprovider.GetCacheString(definition).toSystemName();
     fs.Write("~/tmp/reports/" + filename, content);
 }
 /// <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)
 {
 }
Ejemplo n.º 17
0
 public string Generate(IReportDefinition definition, string rootdir){
     var result = mainProcess(definition, rootdir);
     result = postProcess(definition, rootdir, result);
     return result;
 }