public MetadataItem(Metadata metadata) { super(metadata.getId()); this.metadata = metadata; }
for (Metadata ruleMetadata : ruleMetadatas) { ArrayList<Comparable> rowData = new ArrayList<>(); String ruleId = ruleMetadata.getId(); rowData.add(ruleMetadata.isEnabled() ? "x" : ""); rowData.add(ruleMetadata.isHidden() ? "x" : ""); rowData.add(ruleMetadata.isReadOnly() ? "x" : ""); rowData.add(ruleId); rowData.add(ruleMetadata.getScope()); rowData.add(ruleMetadata.getName()); rowData.add(StringUtils.join(ruleMetadata.getTags(), ",")); rowData.add(StringUtils.join(ruleMetadata.getSystemTags(), ",")); RuleStatistics ruleStatistics = allRuleStatistics.get(ruleId); if (ruleStatistics != null) {
@Override protected DataTable buildDataTable() { PartialList<Metadata> segmentMetadatas = segmentService.getSegmentMetadatas(0, -1, null); DataTable dataTable = new DataTable(); for (Metadata metadata : segmentMetadatas.getList()) { ArrayList<Comparable> rowData = new ArrayList<>(); rowData.add(metadata.isEnabled() ? "x" : ""); rowData.add(metadata.isHidden() ? "x" : ""); rowData.add(metadata.getId()); rowData.add(metadata.getScope()); rowData.add(metadata.getName()); rowData.add(StringUtils.join(metadata.getSystemTags(), ",")); dataTable.addRow(rowData.toArray(new Comparable[rowData.size()])); } dataTable.sort(new DataTable.SortCriteria(4, DataTable.SortOrder.ASCENDING)); return dataTable; }
private void loadPredefinedSegments(BundleContext bundleContext) { Enumeration<URL> predefinedSegmentEntries = bundleContext.getBundle().findEntries("META-INF/cxs/segments", "*.json", true); if (predefinedSegmentEntries == null) { return; } while (predefinedSegmentEntries.hasMoreElements()) { URL predefinedSegmentURL = predefinedSegmentEntries.nextElement(); logger.debug("Found predefined segment at " + predefinedSegmentURL + ", loading... "); try { Segment segment = CustomObjectMapper.getObjectMapper().readValue(predefinedSegmentURL, Segment.class); if (segment.getMetadata().getScope() == null) { segment.getMetadata().setScope("systemscope"); } // Register only if segment does not exist yet if (getSegmentDefinition(segment.getMetadata().getId()) == null || bundleContext.getBundle().getVersion().toString().contains("SNAPSHOT")) { setSegmentDefinition(segment); logger.info("Predefined segment with id {} registered", segment.getMetadata().getId()); } else { logger.info("The predefined segment with id {} is already registered, this segment will be skipped", segment.getMetadata().getId()); } } catch (IOException e) { logger.error("Error while loading segment definition " + predefinedSegmentURL, e); } } }
private void getAutoGeneratedRules(Metadata metadata, Condition condition, Condition parentCondition, List<Rule> rules) { Set<String> tags = condition.getConditionType().getMetadata().getSystemTags(); if (tags.contains("eventCondition") && !tags.contains("profileCondition")) { String key = getGeneratedPropertyKey(condition, parentCondition); Rule rule = rulesService.getRule(key); if (rule == null) { rule = new Rule(new Metadata(metadata.getScope(), key, "Auto generated rule for " + metadata.getName(), "")); rule.setCondition(condition); rule.getMetadata().setHidden(true); final Action action = new Action(); action.setActionType(definitionsService.getActionType("setEventOccurenceCountAction")); rule.setLinkedItems(Arrays.asList(metadata.getId())); rules.add(rule); rule.getLinkedItems().add(metadata.getId()); rules.add(rule);
public SegmentsAndScores getSegmentsAndScoresForProfile(Profile profile) { Set<String> segments = new HashSet<String>(); Map<String, Integer> scores = new HashMap<String, Integer>(); List<Segment> allSegments = this.allSegments; for (Segment segment : allSegments) { if (segment.getMetadata().isEnabled() && persistenceService.testMatch(segment.getCondition(), profile)) { segments.add(segment.getMetadata().getId()); } } List<Scoring> allScoring = this.allScoring; Map<String, Integer> scoreModifiers = (Map<String, Integer>) profile.getSystemProperties().get("scoreModifiers"); for (Scoring scoring : allScoring) { if (scoring.getMetadata().isEnabled()) { int score = 0; for (ScoringElement scoringElement : scoring.getElements()) { if (persistenceService.testMatch(scoringElement.getCondition(), profile)) { score += scoringElement.getValue(); } } String scoringId = scoring.getMetadata().getId(); if (scoreModifiers != null && scoreModifiers.containsKey(scoringId) && scoreModifiers.get(scoringId) != null) { score += scoreModifiers.get(scoringId); } scores.put(scoringId, score); } } return new SegmentsAndScores(segments, scores); }
/** * Creates a {@link RESTActionType} based on the specified {@link ActionType} and localized using the specified language. * * @param actionType the {@link ActionType} to be localized * @param language the language to use to localize {@link ActionType} * @return a {@link RESTActionType} based on the specified {@link ActionType} and localized using the specified language */ public RESTActionType generateAction(ActionType actionType, String language) { RESTActionType result = new RESTActionType(); result.setId(actionType.getItemId()); result.setVersion(actionType.getVersion()); result.setName(actionType.getMetadata().getName()); result.setDescription(actionType.getMetadata().getDescription()); result.setTags(actionType.getMetadata().getTags()); result.setSystemTags(actionType.getMetadata().getSystemTags()); List<RESTParameter> parameters = new ArrayList<RESTParameter>(); for (Parameter parameter : actionType.getParameters()) { parameters.add(generateParameter(parameter, language)); } result.setParameters(parameters); return result; }
segment.setCondition(updatedCondition); if (updatedCondition == null) { clearAutoGeneratedRules(persistenceService.query("linkedItems", segment.getMetadata().getId(), null, Rule.class), segment.getMetadata().getId()); segment.getMetadata().setEnabled(false); clearAutoGeneratedRules(persistenceService.query("linkedItems", scoring.getMetadata().getId(), null, Rule.class), scoring.getMetadata().getId()); scoring.getMetadata().setEnabled(false);
@Override protected DataTable buildDataTable() { Collection<ActionType> allActions = definitionsService.getAllActionTypes(); DataTable dataTable = new DataTable(); for (ActionType actionType : allActions) { ArrayList<Comparable> rowData = new ArrayList<>(); rowData.add(actionType.getItemId()); rowData.add(actionType.getMetadata().getName()); rowData.add(StringUtils.join(actionType.getMetadata().getSystemTags(), ",")); dataTable.addRow(rowData.toArray(new Comparable[rowData.size()])); } dataTable.sort(new DataTable.SortCriteria(1, DataTable.SortOrder.ASCENDING)); return dataTable; }
public void setRule(Rule rule) { if (rule.getMetadata().getScope() == null) { rule.getMetadata().setScope("systemscope"); } Condition condition = rule.getCondition(); if (condition != null) { if (rule.getMetadata().isEnabled() && !rule.getMetadata().isMissingPlugins()) { ParserHelper.resolveConditionType(definitionsService, condition); definitionsService.extractConditionBySystemTag(condition, "eventCondition"); } } persistenceService.save(rule); }
public PropertyTypes(List<PropertyType> allPropertyTypes) { this.allPropertyTypes = new ArrayList<>(allPropertyTypes); propertyTypesById = new HashMap<>(); propertyTypesByTags = new HashMap<>(); propertyTypesBySystemTags = new HashMap<>(); propertyTypesByTarget = new HashMap<>(); for (PropertyType propertyType : allPropertyTypes) { propertyTypesById.put(propertyType.getItemId(), propertyType); for (String propertyTypeTag : propertyType.getMetadata().getTags()) { updateListMap(propertyTypesByTags, propertyType, propertyTypeTag); } for (String propertyTypeSystemTag : propertyType.getMetadata().getSystemTags()) { updateListMap(propertyTypesBySystemTags, propertyType, propertyTypeSystemTag); } updateListMap(propertyTypesByTarget, propertyType, propertyType.getTarget()); } }
public void setSegmentDefinition(Segment segment) { ParserHelper.resolveConditionType(definitionsService, segment.getCondition()); if (segment.getMetadata().isEnabled() && !segment.getMetadata().isMissingPlugins()) { updateAutoGeneratedRules(segment.getMetadata(), segment.getCondition()); } // make sure we update the name and description metadata that might not match, so first we remove the entry from the map persistenceService.save(segment); updateExistingProfilesForSegment(segment); }
public Set<Condition> getTrackedConditions(Item source){ Set<Condition> trackedConditions = new HashSet<>(); for (Rule r : allRules) { if (!r.getMetadata().isEnabled()) { continue; } Condition trackedCondition = definitionsService.extractConditionBySystemTag(r.getCondition(), "trackedCondition"); if(trackedCondition != null){ Condition sourceEventPropertyCondition = definitionsService.extractConditionBySystemTag(r.getCondition(), "sourceEventCondition"); if(source != null && sourceEventPropertyCondition != null) { ParserHelper.resolveConditionType(definitionsService, sourceEventPropertyCondition); if(persistenceService.testMatch(sourceEventPropertyCondition, source)){ trackedConditions.add(trackedCondition); } } else { trackedConditions.add(trackedCondition); } } } return trackedConditions; }
@XmlTransient public String getScope() { return metadata.getScope(); }
} else if (rootCondition.getConditionType() != null && rootCondition.getConditionType().getMetadata().getTags().contains(tag)) { return rootCondition; } else {
} else if (rootCondition.getConditionType() != null && rootCondition.getConditionType().getMetadata().getSystemTags().contains(systemTag)) { return rootCondition; } else {
private void getAutoGeneratedRules(Metadata metadata, Condition condition, Condition parentCondition, List<Rule> rules) { Set<String> tags = condition.getConditionType().getMetadata().getSystemTags(); if (tags.contains("eventCondition") && !tags.contains("profileCondition")) { try { Map<String, Object> m = new HashMap<>(3); m.put("scope", metadata.getScope()); m.put("condition", condition); m.put("numberOfDays", parentCondition.getParameter("numberOfDays")); Rule rule = rulesService.getRule(key); if (rule == null) { rule = new Rule(new Metadata(metadata.getScope(), key, "Auto generated rule for " + metadata.getName(), "")); rule.setCondition(condition); rule.getMetadata().setHidden(true); final Action action = new Action(); action.setActionType(definitionsService.getActionType("setEventOccurenceCountAction")); rule.setLinkedItems(Arrays.asList(metadata.getId())); rules.add(rule); rule.getLinkedItems().add(metadata.getId()); rules.add(rule);