@SuppressWarnings("unchecked") private List<String> initEnumSelectDomain(SType<?> type) { if (selection && type.asAtrProvider().getConverter() instanceof EnumSInstanceConverter) { return (List<String>) type .asAtrProvider() .getProvider() .load(new ProviderContext()) .stream() .map(e -> type.asAtrProvider().getDisplayFunction().apply((Serializable) e)) .collect(Collectors.toList()); } return Collections.emptyList(); }
private STypeFieldRefProvider<SI> configureProvider() { STypeFieldRefProvider<SI> provider = new STypeFieldRefProvider<>(); type.asAtrProvider() .idFunction(Option::getRefId) .displayFunction(Option::getDescription) .converter(SIFieldRef.DEFAULT_CONVERTER) .provider(provider); return provider; } }
@Override public String getIdValue(Serializable val, int index) { if (val == null) { return null; } return String.valueOf(model.getObject().asAtrProvider().getIdFunction().apply(val)); }
private void addConverter() { type.asAtrProvider().asAtrProvider().converter(new SInstanceConverter<Content, SIComposite>() { @Override public void fillInstance(SIComposite ins, Content obj) { hydrate(ins, obj); } @Override public Content toObject(SIComposite ins) { return Value.dehydrate(ins); } }); }
public void filteredProvider(STextQueryProvider mapSimpleProvider) { type.asAtrProvider().asAtrProvider().provider(mapSimpleProvider); }
@Override public String getReadOnlyFormattedText(WicketBuildContext ctx, IModel<? extends SInstance> model) { final SInstance mi = model.getObject(); if ((mi != null) && (mi.getValue() != null)) { final SInstanceConverter converter = mi.asAtrProvider().getConverter(); if (converter != null) { final Serializable converted = converter.toObject(mi); if (converted != null) { return mi.asAtrProvider().getDisplayFunction().apply(converted); } } } return StringUtils.EMPTY; }
private Map<String, String> values(String filter) { filterModel.setObject(filter); Map<String, String> map = newLinkedHashMap(); final SInstance instance = model.getObject(); final Provider<Serializable, SInstance> provider = instance.asAtrProvider().getProvider(); if (provider != null) { for (Serializable s : provider.load(ProviderContext.of(instance, filter))) { String key = String.valueOf(instance.asAtrProvider().getIdFunction().apply(s)); String display = instance.asAtrProvider().getDisplayFunction().apply(s); map.put(key, display); cache.put(key, new TypeaheadCache(s, display)); } } return map; }
public FilteredProvider getFilteredProvider() { return (FilteredProvider) getProvider(); }
@SuppressWarnings("unchecked") public List<Serializable> load(ProviderContext<?> providerContext) { final SInstance instance = instanceISupplier.get(); final Provider provider = instance.asAtrProvider().getProvider(); final List<Serializable> values = new ArrayList<>(); if (provider != null) { final List<Serializable> result = provider.load(providerContext); if (result != null) { values.addAll(result); } //Dangling values if (!instance.isEmptyOfData()) { final SInstanceConverter converter = instance.asAtrProvider().getConverter(); final List<Object> ids = new ArrayList<>(); final IFunction<Object, Object> idFunction = instance.asAtrProvider().getIdFunction(); /*Collect All Ids*/ values.forEach(v -> ids.add(idFunction.apply(v))); List<SInstance> selectedInstances = new ArrayList<>(); if (instance instanceof SIList) { ((SIList<SInstance>) instance).forEach(selectedInstances::add); } else { selectedInstances.add(instance); } collectSelectedInstances(instance, values, converter, ids, idFunction, selectedInstances); } } return values; }
public SelectSInstanceAwareModel(IModel<? extends SInstance> model) { this.model = model; this.resolver = sInstance -> Optional.ofNullable(sInstance.asAtrProvider().getConverter()); }
@Override @SuppressWarnings("rawtypes") public Component appendInput(WicketBuildContext ctx, BSControls formGroup, IModel<String> labelModel) { final IModel<? extends SInstance> model = ctx.getModel(); final List<Serializable> opcoesValue = new ArrayList<>(); if (model.getObject().getType().isList()) { final Provider provider = model.getObject().asAtrProvider().getProvider(); if (provider != null) { opcoesValue.addAll(provider.load(ProviderContext.of(ctx.getCurrentInstance()))); } } //Dangling values if (!model.getObject().isEmptyOfData()) { final SIList list = (SIList) model.getObject(); for (int i = 0; i < list.size(); i += 1) { SInstance ins = list.get(i); final SInstanceConverter converter = list.asAtrProvider().getConverter(); final Serializable converterted = converter.toObject(ins); if (!opcoesValue.contains(converterted)) { opcoesValue.add(i, converterted); } } } return formGroupAppender(formGroup, model, opcoesValue); }
private Optional<Serializable> getValueFromProvider(String key) { final Stream<Serializable> stream; final Provider<Serializable, SInstance> provider = instance().asAtrProvider().getProvider(); final ProviderContext<SInstance> providerContext = new ProviderContext<>(); providerContext.setInstance(instance()); if (dynamicFetcher != null) { providerContext.setQuery(dynamicFetcher.getFilterModel().getObject()); } else { providerContext.setQuery(StringUtils.EMPTY); } if (provider != null) { stream = provider.load(providerContext).stream(); } else { throw new SingularFormException("Nenhum provider foi informado"); } return stream.filter(o -> instance().asAtrProvider().getIdFunction().apply(o).equals(key)).findFirst(); }
@Override public String getObject() { if (instance().isEmptyOfData()) { return null; } if (!Value.dehydrate(instance()).equals(lastValue)) { lastValue = Value.dehydrate(instance()); final IFunction<Object, Object> idFunction = instance().asAtrProvider().getIdFunction(); final SInstanceConverter<Serializable, SInstance> converter = instance().asAtrProvider().getConverter(); if (idFunction != null && converter != null && !instance().isEmptyOfData()) { final Serializable converted = converter.toObject(instance()); if (converted != null) { lastId = String.valueOf(idFunction.apply(converted)); } } } return lastId; }
private List<? extends TreeNode> loadTree() { clearCache(); TreeProvider<Serializable> provider = getInstance().asAtrProvider().getTreeProvider(); List<Serializable> nodes = provider.load(ProviderContext.of(getInstance())); return nodes.stream().map(node -> new TreeNodeImpl(null, node, 0, getInstance().asAtrProvider().getIdFunction(), getInstance().asAtrProvider().getDisplayFunction(), provider::loadChildren)) .map(this::cacheId) .collect(Collectors.toList()); }
private void validate() { if (getInstance().asAtrProvider().getFilteredProvider() == null) { throw new SingularFormException("O provider não foi informado"); } if (getInstance().asAtrProvider().getConverter() == null && (getInstance() instanceof SIComposite || getInstance() instanceof SIList)) { throw new SingularFormException("O tipo não é simples e o converter não foi informado."); } }
@Override public String getDisplayValue(Serializable val) { if(val == null){ return null; } return String.valueOf(model.getObject().asAtrProvider().getDisplayFunction().apply(val)); }
public ProviderBuilder<TYPE, ROOT_TYPE> converter(SInstanceConverter<TYPE, ELEMENT_TYPE> converter) { type.asAtrProvider().converter(converter); return next(); }
public SProviderBuilder display(final SType display) { type.asAtrProvider().asAtrProvider().displayFunction((IFunction<Content, String>) (content) -> { SType elementsType; if (type.isList()) { elementsType = ((STypeList) type).getElementsType(); } else { elementsType = type; } SInstance ins = elementsType.newInstance(); Value.hydrate(ins, content); Object v; if (ins instanceof SIComposite) { v = ((SIComposite) ins).getValue(display); } else { v = ins.getValue(); } return v == null ? StringUtils.EMPTY : v.toString(); }); addConverter(); return new SProviderBuilder(super.type); }
public <T> IFunction<T, Object> getIdFunction() { return getAttributeValue(SPackageProvider.ID_FUNCTION); }
public SSelectionDisplayBuilder id(SType id) { type.asAtrProvider().asAtrProvider().idFunction((IFunction<Value.Content, String>) (content) -> { SType elementsType; if (type.isList()) { elementsType = ((STypeList) type).getElementsType(); } else { elementsType = type; } SInstance ins = elementsType.newInstance(); Value.hydrate(ins, content); if (ins instanceof SIComposite) { return String.valueOf(((SIComposite) ins).getValue(id)); } return String.valueOf(ins.getValue()); }); return new SSelectionDisplayBuilder(super.type); }