public IDataFilter Parse(JobParser parser, ParseState state) { using (new SecurityDisabler()) { var ruleContextItem = parser.Database.GetRootItem(parser.DefaultLanguage); var json = state.TryGet <string>("Rule"); if (!string.IsNullOrEmpty(json)) { var filter = RulesFilter.FromString(json); filter.RuleContextItem = ruleContextItem; return(filter); } var ruleItem = state.Require <string>("Item", true); Item item; ID id; if (!ID.TryParse(ruleItem, out id)) { if (!ruleItem.StartsWith("/")) { var rootItem = state.Parser.Database.GetItem( ExperienceExtractorApiContainer.ItemPaths.GetOrDefault("experienceAnalyticsFilters") ?? "/sitecore/system/Marketing Control Panel/Experience Analytics/Filters"); ruleItem = rootItem.Paths.FullPath + "/" + ruleItem; } item = parser.Database.GetItem(ruleItem, parser.DefaultLanguage); } else { item = parser.Database.GetItem(id, parser.DefaultLanguage); } if (item == null) { throw ParseException.AttributeError(state, string.Format("Rule item not found '{0}'", ruleItem)); } var rules = RuleFactory.GetRules <RuleContext>(item.Fields["Rule"]); return(new RulesFilter(rules) { RuleContextItem = ruleContextItem }); } }
public static IDimension ParseDimension(this ParseState state) { using (new SecurityDisabler()) { var dimensionString = state.Require <string>("Dimension", true); Guid dimensionId; if (Guid.TryParse(dimensionString, out dimensionId)) { var dim = AggregationContainer.Repositories.GetDimensionDefinitionService().GetDimension(dimensionId); if (dim == null) { throw ParseException.AttributeError(state, string.Format("Dimension '{0}' is not registered", dimensionId)); } return(dim); } if (state.Parser.Database != null) { var path = dimensionString; if (!path.StartsWith("/")) { var rootItem = state.Parser.Database.GetItem( ExperienceExtractorApiContainer.ItemPaths.GetOrDefault("experienceAnalyticsDimensions") ?? "/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions", state.Parser.DefaultLanguage); path = rootItem.Paths.FullPath + "/" + path; } var item = state.Parser.Database.GetItem(path, state.Parser.DefaultLanguage); if (item != null) { var dim = AggregationContainer.Repositories.GetDimensionDefinitionService().GetDimension(item.ID.Guid); if (dim == null) { throw ParseException.AttributeError(state, string.Format("Dimension '{0}' ({1}) is not registered", dimensionId, path)); } return(dim); } } throw ParseException.AttributeError(state, string.Format("Dimension item not found \"{0}\"", dimensionString)); } }
public IDataFilter Parse(JobParser parser, ParseState state) { var start = state.TryGet <DateTime?>("Start"); var end = state.TryGet <DateTime?>("End"); if (!start.HasValue && !end.HasValue) { throw ParseException.AttributeError(state, "Expected start and/or end"); } var field = state.TryGet("Field", "StartDateTime"); return(new MongoDateRangeFilter(start, end, field)); }