import org.springframework.stereotype.Service;
import java.io.Serializable;
+import java.util.AbstractMap;
import java.util.Objects;
@Log4j2
public T clone(T sourceEntity, String property, Object value) {
T result = clone(sourceEntity);
- if (!setFieldValue(result, property, value)) {
+ AbstractMap.SimpleEntry<Object, String> info = setFieldValue(result, property, value);
+ if (Objects.isNull(info)) {
result = null;
}
return result;
public T fromJSON(String data, Class<T> objectClass) {
T result = null;
try {
- result = (T) objectMapper.readValue(data, objectClass);
+ result = objectMapper.readValue(data, objectClass);
} catch (JsonProcessingException e) {
log.catching(e);
}
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
+import java.util.AbstractMap;
import java.util.Arrays;
import java.util.Optional;
return field;
}
- public boolean setFieldValue(Object entity, String property, Object value) {
- boolean result = false;
+ public AbstractMap.SimpleEntry<Object, String> setFieldValue(Object entity, String property, Object value) {
+ AbstractMap.SimpleEntry<Object, String> 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<Object, String>(memberEntity, memberPropertyName);
} catch (Exception e) {
log.error(e);
}
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;
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<T> {
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());
}
public void setSelectedEntity(T selectedEntity) {
this.selectedEntity = selectedEntity;
- entityDataServiceBase.setFieldValue(formDocument, member, selectedEntity);
- BindUtils.postNotifyChange(formDocument, member);
+ AbstractMap.SimpleEntry<Object, String> info = entityDataServiceBase.setFieldValue(formDocument, member, selectedEntity);
+ BindUtils.postNotifyChange(info.getKey(), info.getValue());
}
public void configureSelector(Object formDocument, String member) {
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;
public class InvoicesViewModel extends EntityViewModel<Invoice> implements EventListener<Event> {
@Getter
private final InvoiceFilter invoiceFilter = InvoiceFilter.builder().incoming(true).build();
- List<String> refreshTriggerProperties = Arrays.asList("paymentDeadLineFrom", "paymentDeadLineTo", "paid", "incoming");
@WireVariable
private EventBus eventBus;
@Getter
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();
}
-
}
}
<![CDATA[
function (evt) {
var keyCode = evt.keyCode;
- console.log(keyCode);
+ console.log(keyCode, zk.$("$entityBandBox").getValue());
if (keyCode == 13){
zk.$("$entityBandBox").close();
zk.$("$entityBandBox").focus();