protected void loadEntityId(Element element, InstanceLoader<Entity> loader) { String entityIdStr = element.attributeValue("entityId"); if (Strings.isNullOrEmpty(entityIdStr)) { return; } MetaProperty property = metadataTools.getPrimaryKeyProperty(loader.getContainer().getEntityMetaClass()); if (property == null) { throw new IllegalStateException("Cannot determine id property for " + loader.getContainer().getEntityMetaClass()); } if (property.getRange().isDatatype()) { try { Object value = property.getRange().asDatatype().parse(entityIdStr); loader.setEntityId(value); } catch (ParseException e) { throw new RuntimeException("Error parsing entityId for " + loader, e); } } else { throw new IllegalStateException("Cannot assign id to " + loader + " because the entity has a composite PK"); } }
protected void loadInstanceLoader(ScreenData screenData, Element element, InstanceContainer<Entity> container, @Nullable ScreenData hostScreenData) { InstanceLoader<Entity> loader; String loaderId = element.attributeValue("id"); if (loaderId == null) { loaderId = generateId(); } if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions loader = hostScreenData.getLoader(loaderId); } else { loader = factory.createInstanceLoader(); loader.setDataContext(screenData.getDataContext()); loader.setContainer(container); loadSoftDeletion(element, loader); loadDynamicAttributes(element, loader); loadQuery(element, loader); loadEntityId(element, loader); } screenData.registerLoader(loaderId, loader); }
protected void loadDynamicAttributes(Element element, DataLoader loader) { String dynamicAttributes = element.attributeValue("dynamicAttributes"); if (!Strings.isNullOrEmpty(dynamicAttributes)) { if (loader instanceof InstanceLoader) { ((InstanceLoader) loader).setLoadDynamicAttributes(Boolean.valueOf(dynamicAttributes)); } else if (loader instanceof CollectionLoader) { ((CollectionLoader) loader).setLoadDynamicAttributes(Boolean.valueOf(dynamicAttributes)); } } }
/** * Adds a listener that reloads the selected record and sets it to editCt. */ protected void initBrowseItemChangeListener() { getBrowseContainer().addItemChangeListener(e -> { if (e.getItem() != null) { InstanceLoader<T> editLoader = getEditLoader(); DynamicAttributesGuiTools tools = getBeanLocator().get(DynamicAttributesGuiTools.NAME); String screenId = getScreenContext().getWindowInfo().getId(); if (tools.screenContainsDynamicAttributes(getEditContainer().getView(), screenId)) { editLoader.setLoadDynamicAttributes(true); } editLoader.setEntityId(e.getItem().getId()); editLoader.load(); } else { if (!editing) { getEditContainer().setItem(null); } } }); }
instanceLoader = getEditedEntityLoader(); if (tools.screenContainsDynamicAttributes(editedEntityContainer.getView(), screenId)) { instanceLoader.setLoadDynamicAttributes(true); && instanceLoader.isLoadDynamicAttributes() && getEntityStates().isNew(entityToEdit) && mergedEntity instanceof BaseGenericIdEntity) { } else { InstanceLoader loader = getEditedEntityLoader(); loader.setEntityId(entityToEdit.getId());
instanceLoader = getEditLoader(); if (tools.screenContainsDynamicAttributes(editedEntityContainer.getView(), screenId)) { instanceLoader.setLoadDynamicAttributes(true); && instanceLoader.isLoadDynamicAttributes() && trackedEntity instanceof BaseGenericIdEntity) { tools.initDefaultAttributeValues((BaseGenericIdEntity) trackedEntity, trackedEntity.getMetaClass());
/** * Method invoked when clicking the Cancel button, discards changes and disables controls for editing. */ public void discardChanges() { releaseLock(); getScreenData().getDataContext().evict(getEditContainer().getItem()); getEditContainer().setItem(null); T selectedItem = getBrowseContainer().getItemOrNull(); if (selectedItem != null) { View view = getEditContainer().getView(); boolean loadDynamicAttributes = getEditLoader().isLoadDynamicAttributes(); T reloadedItem = getBeanLocator().get(DataManager.class) .reload(selectedItem, view, null, loadDynamicAttributes); getBrowseContainer().setItem(reloadedItem); } disableEditControls(); }
DataLoader dataLoader = ((HasLoader) instanceContainer).getLoader(); if (dataLoader instanceof InstanceLoader) { ((InstanceLoader) dataLoader).setLoadDynamicAttributes(true);