private static IReportProcessingLocation GetReportProcessingLocation(Serialization.Report xmlReport) { IReportProcessingLocation location; if (xmlReport.ReportProcessingLocation.Use.Equals(Serialization.ActiveReportProcessingLocation.LocalReport)) { string directory = ConfigurationManager.AppSettings["VB.Reports.App.ReportDefinitionLibrary.Xml.XmlReportDefinitionFactory.Report.Directory"]; Serialization.LocalReport localReport = xmlReport.ReportProcessingLocation.LocalReport; LocalReportProcessingLocation local = new LocalReportProcessingLocation(); local.File = directory + Path.DirectorySeparatorChar + localReport.File; local.DataSourceName = localReport.DataSourceName; location = local; } else { string serverUrl = ConfigurationManager.AppSettings["VB.Reports.App.ReportDefinitionLibrary.Xml.XmlReportDefinitionFactory.Report.ServerUrl"]; Serialization.ServerReport serverReport = xmlReport.ReportProcessingLocation.ServerReport; RemoteReportProcessingLocation remote = new RemoteReportProcessingLocation(); remote.Path = serverReport.Path; remote.ServerUrl = new Uri(serverUrl); location = remote; } return(location); }
private IReport LoadReport(Serialization.Report xmlReport) { Report report = new Report(this); report.Id = xmlReport.Id; report.Name = xmlReport.Name; report.Description = xmlReport.Description; if (xmlReport.NewUntilSpecified) { report.IsNew = xmlReport.NewUntil > DateTime.Now; } else { report.IsNew = false; } report.ReportType = (ReportType)Enum.Parse(typeof(ReportType), xmlReport.ReportType.ToString()); return(report); }
private static IList <IReportParameter> GetReportParameters(Serialization.Report xmlReport) { IList <IReportParameter> reportParameters = new List <IReportParameter>(); if (xmlReport.Parameters != null && xmlReport.Parameters.Length > 0) { foreach (Serialization.Parameter xmlParameter in xmlReport.Parameters) { ReportParameter reportParameter = new ReportParameter(); reportParameter.AllowBlank = xmlParameter.AllowBlank; reportParameter.IsNullable = xmlParameter.AllowNull; reportParameter.Label = xmlParameter.Label; reportParameter.Name = xmlParameter.Name; reportParameter.DbType = ToDbType((ReportParameterDataType)Enum.Parse(typeof(ReportParameterDataType), xmlParameter.ParameterDataType.ToString())); reportParameter.ReportParameterInputType = (ReportParameterInputType)Enum.Parse(typeof(ReportParameterInputType), xmlParameter.ParameterInputType.ToString()); AbstractReportParameterValues reportParameterValues = new ReportParameterValuesConstant(); if (xmlParameter.ValidValues != null) { if (xmlParameter.ValidValues.Item is Serialization.ParameterRange) { Serialization.ParameterRange xmlParameterRange = (Serialization.ParameterRange)xmlParameter.ValidValues.Item; if (xmlParameterRange.Item is Serialization.DateRange) { Serialization.DateRange xmlDateRange = xmlParameterRange.Item; DateRange dateRange = new DateRange(); dateRange.InitialUnit = (TimeUnit)Enum.Parse(typeof(TimeUnit), xmlDateRange.InitialUnit.ToString()); dateRange.InitialDistance = Int32.Parse(xmlDateRange.InitialDistance, CultureInfo.InvariantCulture); dateRange.DistanceUnit = (TimeUnit)Enum.Parse(typeof(TimeUnit), xmlDateRange.DistanceUnit.ToString()); dateRange.Distance = Int32.Parse(xmlDateRange.Distance, CultureInfo.InvariantCulture); dateRange.NumberOfItems = Int32.Parse(xmlDateRange.NumberOfItems, CultureInfo.InvariantCulture); dateRange.Direction = (TimeDirection)Enum.Parse(typeof(TimeDirection), xmlDateRange.Direction.ToString()); Serialization.DateTimeFormatInfo xmlDtfi = xmlDateRange.DateTimeFormatInfo; DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); if (!string.IsNullOrEmpty(xmlDtfi.FullDateTimePattern)) { dtfi.FullDateTimePattern = xmlDtfi.FullDateTimePattern; } if (!string.IsNullOrEmpty(xmlDtfi.LongDatePattern)) { dtfi.LongDatePattern = xmlDtfi.LongDatePattern; } if (!string.IsNullOrEmpty(xmlDtfi.LongTimePattern)) { dtfi.LongTimePattern = xmlDtfi.LongTimePattern; } if (!string.IsNullOrEmpty(xmlDtfi.MonthDayPattern)) { dtfi.MonthDayPattern = xmlDtfi.MonthDayPattern; } if (!string.IsNullOrEmpty(xmlDtfi.ShortDatePattern)) { dtfi.ShortDatePattern = xmlDtfi.ShortDatePattern; } if (!string.IsNullOrEmpty(xmlDtfi.ShortTimePattern)) { dtfi.ShortTimePattern = xmlDtfi.ShortTimePattern; } if (!string.IsNullOrEmpty(xmlDtfi.YearMonthPattern)) { dtfi.YearMonthPattern = xmlDtfi.YearMonthPattern; } int index = 0, selectedIndex = Int32.Parse(xmlDateRange.SelectedIndex, CultureInfo.InvariantCulture); foreach (DateTime value in dateRange.Items()) { ReportParameterValue reportParameterValue = new ReportParameterValue(); reportParameterValue.Label = value.ToString(xmlDateRange.LabelDateTimeFormatSpecifier.ToString(), dtfi); reportParameterValue.Value = value.ToString(xmlDateRange.ValueDateTimeFormatSpecifier.ToString(), dtfi); reportParameterValue.Selected = (index++ == selectedIndex); reportParameterValues.AddReportParameterValue(reportParameterValue); } } else { // ADD NEW RANGE ELEMENT CODE HERE } } else if (xmlParameter.ValidValues.Item is Serialization.DomainModel) { Serialization.DomainModel xmlDomainModel = (Serialization.DomainModel)xmlParameter.ValidValues.Item; IDictionary <string, string> parameterLabelValuePair = new Dictionary <string, string>(); parameterLabelValuePair.Add("Label", xmlDomainModel.Label.Name); parameterLabelValuePair.Add("Value", xmlDomainModel.Value.Name); reportParameterValues = new ReportParameterValuesDynamic(Type.GetType(xmlDomainModel.DomainModelName), xmlDomainModel.InvokeMethod.MethodName, parameterLabelValuePair); foreach (Serialization.MethodArgument argument in xmlDomainModel.InvokeMethod.Arguments) { ((ReportParameterValuesDynamic)reportParameterValues).AddMethodArgumentEntry(argument.Name, Type.GetType(argument.Type), argument.Value, argument.Source.ToString()); } IList <IReportParameterValue> staticParameterValues = new List <IReportParameterValue>(); if (xmlDomainModel.CustomValues != null) { foreach (Serialization.ParameterValue parameterValue in xmlDomainModel.CustomValues.Insert.ParameterValue) { ReportParameterValue reportParameterValue = new ReportParameterValue(); reportParameterValue.Label = parameterValue.Label; reportParameterValue.Value = parameterValue.Value; reportParameterValue.Selected = parameterValue.Selected; staticParameterValues.Add(reportParameterValue); } } bool itemSelected = false; // this logic is build on the assumption you can only preselect custom fields - is this a safe assumption? if (xmlDomainModel.Selected != null) { if (xmlDomainModel.Selected.Index != null) { ((ReportParameterValue)staticParameterValues[Int32.Parse(xmlDomainModel.Selected.Index, CultureInfo.InvariantCulture)]).Selected = true; itemSelected = true; } if (xmlDomainModel.Selected.Value != null) { foreach (ReportParameterValue x in staticParameterValues) { if (x.Value.Equals(xmlDomainModel.Selected.Value)) { x.Selected = true; itemSelected = true; break; } } } } if (!itemSelected) { if (staticParameterValues.Count > 0) { ((ReportParameterValue)staticParameterValues[0]).Selected = true; } } reportParameterValues.AddReportParameterValues(staticParameterValues); } else // ReportDefinitionLibrary.Xml.ParameterValues { Serialization.ParameterValue[] xmlParameterValues = (Serialization.ParameterValue[])xmlParameter.ValidValues.Item; foreach (Serialization.ParameterValue parameterValue in xmlParameterValues) { ReportParameterValue reportParameterValue = new ReportParameterValue(); reportParameterValue.Label = parameterValue.Label; reportParameterValue.Value = parameterValue.Value; reportParameterValue.Selected = parameterValue.Selected; reportParameterValues.AddReportParameterValue(reportParameterValue); } } } reportParameter.ReportParameterValues = reportParameterValues; reportParameters.Add(reportParameter); } } return(reportParameters); }