/** * Find a child by the name ({@link SType#getName()}) * @param parent the parent instance * @param childName the complete name of the child {@link SType#getName()} * @return the chield */ public static Optional<? extends SInstance> findChildByName(@Nonnull SInstance parent, @Nonnull String childName) { if(parent instanceof SIComposite) { SType<?> sType = parent.getDictionary().getType(childName); return ((SIComposite)parent).findDescendant(sType); } return Optional.empty(); }
/** * property column isolado em outro método para isolar o escopo de * serialização do lambda do appendPropertyColumn */ private void propertyColumnAppender(BSDataTableBuilder<SInstance, ?, ?> builder, IModel<String> labelModel, IModel<String> sTypeNameModel, IFunction<SInstance, String> displayValueFunction) { builder.appendPropertyColumn(labelModel, o -> { SIComposite composto = (SIComposite) o; SType<?> mtipo = composto.getDictionary().getType(sTypeNameModel.getObject()); SInstance instancia = composto.findDescendant(mtipo).get(); return displayValueFunction.apply(instancia); }); }
/** * property column isolado em outro método para isolar o escopo de * serialização do lambda do appendPropertyColumn */ private void propertyColumnAppender(BSDataTableBuilder<SInstance, ?, ?> builder, IModel<String> labelModel, IModel<String> sTypeNameModel, IFunction<SInstance, String> displayValueFunction) { builder.appendPropertyColumn(labelModel, o -> { SIComposite composite = (SIComposite) o; SType<?> type = composite.getDictionary().getType(sTypeNameModel.getObject()); SInstance instance = composite.findDescendant(type).get(); return displayValueFunction.apply(instance); }); }
return Optional.of((TI) rootInstance); } else if (rootInstance instanceof SIComposite) { return ((SIComposite) rootInstance).findDescendant(targetType);
return (SInstance) composto.findDescendant(sType).orElse(null); }; IFunction<SInstance, Object> propertyFunction = o -> displayValueFunction.apply(toInstance.apply((SIComposite) o));