@Override protected List<Attr> getAttrsFromTO() { return anyTO.getDerAttrs().stream().sorted(attrComparator).collect(Collectors.toList()); }
@Override protected void setAttrs() { List<Attr> attrs = new ArrayList<>(); Map<String, Attr> attrMap = EntityTOUtils.buildAttrMap(anyTO.getDerAttrs()); schemas.values().forEach(schema -> { Attr attrTO = new Attr(); attrTO.setSchema(schema.getKey()); if (attrMap.containsKey(schema.getKey())) { attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues()); } attrs.add(attrTO); }); anyTO.getDerAttrs().clear(); anyTO.getDerAttrs().addAll(attrs); }
Map<String, AttrTO> derAttrMap = EntityTOUtils.buildAttrMap(anyTO.getDerAttrs());
Map<String, AttrTO> derAttrMap = EntityTOUtils.buildAttrMap(anyTO.getDerAttrs());
@Override public Set<AttrTO> read(final String key, final SchemaType schemaType) { TO any = read(key); Set<AttrTO> result; switch (schemaType) { case DERIVED: result = any.getDerAttrs(); break; case VIRTUAL: result = any.getVirAttrs(); break; case PLAIN: default: result = any.getPlainAttrs(); } return result; }
protected void fillTO( final AnyTO anyTO, final String realmFullPath, final Collection<? extends AnyTypeClass> auxClasses, final Collection<? extends PlainAttr<?>> plainAttrs, final Map<DerSchema, String> derAttrs, final Map<VirSchema, List<String>> virAttrs, final Collection<? extends ExternalResource> resources, final boolean details) { anyTO.setRealm(realmFullPath); anyTO.getAuxClasses().addAll(auxClasses.stream().map(Entity::getKey).collect(Collectors.toList())); plainAttrs.forEach(plainAttr -> { anyTO.getPlainAttrs().add(new AttrTO.Builder(). schema(plainAttr.getSchema().getKey()). values(plainAttr.getValuesAsStrings()).build()); }); derAttrs.forEach((schema, value) -> { anyTO.getDerAttrs().add(new AttrTO.Builder().schema(schema.getKey()).value(value).build()); }); virAttrs.forEach((schema, values) -> { anyTO.getVirAttrs().add(new AttrTO.Builder().schema(schema.getKey()).values(values).build()); }); anyTO.getResources().addAll(resources.stream().map(Entity::getKey).collect(Collectors.toSet())); }
@Override public List<Object> beforePull( final Item item, final EntityTO entityTO, final List<Object> values) { if (StringUtils.isNotBlank(pullJEXL) && values != null) { List<Object> newValues = new ArrayList<>(values.size()); values.forEach(value -> { JexlContext jexlContext = new MapContext(); jexlContext.set("value", value); if (entityTO instanceof AnyTO) { JexlUtils.addFieldsToContext((AnyTO) entityTO, jexlContext); JexlUtils.addAttrTOsToContext(((AnyTO) entityTO).getPlainAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(((AnyTO) entityTO).getDerAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(((AnyTO) entityTO).getVirAttrs(), jexlContext); } else if (entityTO instanceof RealmTO) { JexlUtils.addFieldsToContext((RealmTO) entityTO, jexlContext); } newValues.add(JexlUtils.evaluate(pullJEXL, jexlContext)); }); return newValues; } return JEXLItemTransformer.super.beforePull(item, entityTO, values); } }
JexlUtils.addFieldsToContext(anyTO, jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getPlainAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getDerAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getVirAttrs(), jexlContext); currentAttrMap = EntityTOUtils.buildAttrMap(anyTO.getDerAttrs()); for (AttrTO templateDerAttr : template.getDerAttrs()) { if (!currentAttrMap.containsKey(templateDerAttr.getSchema())) { anyTO.getDerAttrs().add(templateDerAttr);
anyTO.getDerAttrs().add(attrTO); } else { MembershipTO membership = groupableTO.getMembership(group.getKey()).orElseGet(() -> {
JexlUtils.addFieldsToContext(anyTO, jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getPlainAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getDerAttrs(), jexlContext); JexlUtils.addAttrTOsToContext(anyTO.getVirAttrs(), jexlContext);