private void doCompositionSingleton( String resultKey, String compositionName, Composition composition) { ObjectMapper mapper = BatfishObjectMapper.mapper(); ObjectNode object = mapper.createObjectNode(); for (Entry<String, String> pEntry : composition.getDictionary().entrySet()) { String propertyName = pEntry.getKey(); String varName = pEntry.getValue(); if (!_displayValues.get(resultKey).containsKey(varName)) { throw new BatfishException( String.format( "varName '%s' for property '%s' of composition '%s' is not in display values", varName, propertyName, compositionName)); } object.set(propertyName, _displayValues.get(resultKey).get(varName)); } confirmValueType(object, composition.getSchemaAsObject().getBaseType()); _displayValues.get(resultKey).put(compositionName, object); }
@JsonCreator public DisplayHints( @JsonProperty(PROP_COMPOSITIONS) Map<String, Composition> compositions, @JsonProperty(PROP_EXTRACTIONS) Map<String, Extraction> extractions, @JsonProperty(PROP_TEXT_DESC) String textDesc) { _compositions = firstNonNull(compositions, new HashMap<>()); _extractions = firstNonNull(extractions, new HashMap<>()); _textDesc = firstNonNull(textDesc, ""); Set<String> varsInEntities = new HashSet<>(); for (Entry<String, Composition> entry : _compositions.entrySet()) { entry.getValue().validate(entry.getKey()); varsInEntities.addAll(entry.getValue().getVars()); } for (Entry<String, Extraction> entry : _extractions.entrySet()) { entry.getValue().validate(entry.getKey()); } // all extraction vars mentioned in entity configuration should have extraction hints Set<String> varsInExtractionHints = _extractions.keySet(); SetView<String> missingExtractionVars = Sets.difference(varsInEntities, varsInExtractionHints); if (!missingExtractionVars.isEmpty()) { throw new BatfishException( "entities refer to variables that are not in extraction hints: " + missingExtractionVars); } // the names of entities and extraction vars should have no overlap Set<String> commonNames = Sets.intersection(varsInExtractionHints, _compositions.keySet()); if (!commonNames.isEmpty()) { throw new BatfishException( "entities and extraction vars should not have common names: " + commonNames); } }
Composition nodeComp = new Composition(); nodeComp.setSchema(Schema.list(Schema.NODE)); nodeComp.setDictionary(ImmutableMap.of("name", "outlierNames"));
for (Entry<String, String> pEntry : composition.getDictionary().entrySet()) { String propertyName = pEntry.getKey(); String varName = pEntry.getValue(); String.format( "varName '%s' for '%s' of '%s' is not in extractions", varName, composition.getDictionary().get(varName), compositionName)); for (int index = 0; index < listLen; index++) { ObjectNode object = mapper.createObjectNode(); for (Entry<String, String> pEntry : composition.getDictionary().entrySet()) { String propertyName = pEntry.getKey(); String varName = pEntry.getValue(); confirmValueType(object, composition.getSchemaAsObject().getBaseType()); arrayNode.add(object);
private void doCompositions( Map<String, Composition> compositions, Map<String, Extraction> extractions) { for (String resultKey : _result.keySet()) { for (Entry<String, Composition> cEntry : compositions.entrySet()) { String compositionName = cEntry.getKey(); Composition composition = cEntry.getValue(); if (composition.getSchemaAsObject().getType() == Type.LIST || composition.getSchemaAsObject().getType() == Type.SET) { doCompositionList(resultKey, compositionName, composition, extractions); } else { doCompositionSingleton(resultKey, compositionName, composition); } } } }
private DisplayHints getComposition(String displayVariable) { DisplayHints displayHints = new DisplayHints(); Map<String, Composition> compositions = new HashMap<>(); Composition composition = _displayHints.getCompositions().get(displayVariable); compositions.put(displayVariable, composition); displayHints.setCompositions(compositions); Map<String, Extraction> extractions = new HashMap<>(); for (String varName : composition.getDictionary().values()) { extractions.put(varName, _displayHints.getExtractions().get(varName)); } displayHints.setExtractions(extractions); return displayHints; }