From: Vásáry Dániel Date: Thu, 2 Nov 2023 09:58:00 +0000 (+0100) Subject: Entity selector null handling if none selected X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=9248c786ec4a782a8d1b4fdd4a54a8a81406408c;p=sly-crm.git Entity selector null handling if none selected --- diff --git a/lis-service/src/main/java/hu/user/lis/service/data/EntityDataService.java b/lis-service/src/main/java/hu/user/lis/service/data/EntityDataService.java index 89d0a6e..d7de60d 100644 --- a/lis-service/src/main/java/hu/user/lis/service/data/EntityDataService.java +++ b/lis-service/src/main/java/hu/user/lis/service/data/EntityDataService.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.Serializable; +import java.util.AbstractMap; import java.util.Objects; @Log4j2 @@ -24,7 +25,8 @@ public class EntityDataService extends EntityDataService public T clone(T sourceEntity, String property, Object value) { T result = clone(sourceEntity); - if (!setFieldValue(result, property, value)) { + AbstractMap.SimpleEntry info = setFieldValue(result, property, value); + if (Objects.isNull(info)) { result = null; } return result; @@ -54,7 +56,7 @@ public class EntityDataService extends EntityDataService public T fromJSON(String data, Class objectClass) { T result = null; try { - result = (T) objectMapper.readValue(data, objectClass); + result = objectMapper.readValue(data, objectClass); } catch (JsonProcessingException e) { log.catching(e); } diff --git a/lis-service/src/main/java/hu/user/lis/service/data/EntityDataServiceBase.java b/lis-service/src/main/java/hu/user/lis/service/data/EntityDataServiceBase.java index 7081639..6c5397c 100644 --- a/lis-service/src/main/java/hu/user/lis/service/data/EntityDataServiceBase.java +++ b/lis-service/src/main/java/hu/user/lis/service/data/EntityDataServiceBase.java @@ -4,6 +4,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; import java.lang.reflect.Field; +import java.util.AbstractMap; import java.util.Arrays; import java.util.Optional; @@ -47,15 +48,15 @@ public class EntityDataServiceBase { return field; } - public boolean setFieldValue(Object entity, String property, Object value) { - boolean result = false; + public AbstractMap.SimpleEntry setFieldValue(Object entity, String property, Object value) { + AbstractMap.SimpleEntry result = null; try { String memberPropertyName = getPropertyName(property); Object memberEntity = getMemberEntity(entity, property); Field field = getField(memberEntity, memberPropertyName); field.setAccessible(true); field.set(memberEntity, value); - result = true; + result = new AbstractMap.SimpleEntry(memberEntity, memberPropertyName); } catch (Exception e) { log.error(e); } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/selector/EntitySelectorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/selector/EntitySelectorModel.java index 5edab56..82533fd 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/selector/EntitySelectorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/selector/EntitySelectorModel.java @@ -4,6 +4,7 @@ import hu.user.lis.service.data.EntityDataServiceBase; import hu.user.lis.ui.data.common.CachedSpringDataModel; import lombok.Getter; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.bind.BindContext; import org.zkoss.bind.BindUtils; @@ -15,8 +16,10 @@ import org.zkoss.zk.ui.event.InputEvent; import org.zkoss.zk.ui.event.OpenEvent; import org.zkoss.zul.impl.XulElement; +import java.util.AbstractMap; import java.util.HashMap; import java.util.Map; +import java.util.Objects; @Log4j2 public abstract class EntitySelectorModel { @@ -43,6 +46,9 @@ public abstract class EntitySelectorModel { public void onEntityBandChanging(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) { InputEvent event = (InputEvent) ctx.getTriggerEvent(); log.info("onEntityBandChanging: {}", event.getValue()); + if (StringUtils.isBlank(event.getValue()) && Objects.nonNull(getSelectedEntity())) { + setSelectedEntity(null); + } search(event.getValue()); } @@ -59,8 +65,8 @@ public abstract class EntitySelectorModel { public void setSelectedEntity(T selectedEntity) { this.selectedEntity = selectedEntity; - entityDataServiceBase.setFieldValue(formDocument, member, selectedEntity); - BindUtils.postNotifyChange(formDocument, member); + AbstractMap.SimpleEntry info = entityDataServiceBase.setFieldValue(formDocument, member, selectedEntity); + BindUtils.postNotifyChange(info.getKey(), info.getValue()); } public void configureSelector(Object formDocument, String member) { diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java index 0bc1535..e9538d4 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java @@ -21,9 +21,6 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.select.annotation.WireVariable; -import java.util.Arrays; -import java.util.List; - import static hu.user.lis.ui.data.common.CachedDataModel.ASCENDING; import static hu.user.lis.ui.data.common.CachedDataModel.NATURAL; @@ -31,7 +28,6 @@ import static hu.user.lis.ui.data.common.CachedDataModel.NATURAL; public class InvoicesViewModel extends EntityViewModel implements EventListener { @Getter private final InvoiceFilter invoiceFilter = InvoiceFilter.builder().incoming(true).build(); - List refreshTriggerProperties = Arrays.asList("paymentDeadLineFrom", "paymentDeadLineTo", "paid", "incoming"); @WireVariable private EventBus eventBus; @Getter @@ -98,10 +94,11 @@ public class InvoicesViewModel extends EntityViewModel implements Event public void onEvent(Event evt) throws Exception { if (evt instanceof PropertyChangeEvent) { PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; +// (this.equals(propertyEvent.getBase()) && propertyEvent.getProperty().startsWith("invoiceFilter"))) if (invoiceFilter.equals(propertyEvent.getBase())) { + log.info("Refresh needed, {} changed", propertyEvent.getProperty()); refresh(); } - } } diff --git a/lis-ui/src/main/resources/web/widget/entity-selector.zul b/lis-ui/src/main/resources/web/widget/entity-selector.zul index 3a965ae..c317fe8 100644 --- a/lis-ui/src/main/resources/web/widget/entity-selector.zul +++ b/lis-ui/src/main/resources/web/widget/entity-selector.zul @@ -8,7 +8,7 @@