com.netgrif.application.engine.petrinet.domain.DataFieldLogic Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of application-engine Show documentation
Show all versions of application-engine Show documentation
System provides workflow management functions including user, role and data management.
package com.netgrif.application.engine.petrinet.domain;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.FieldBehavior;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.FieldLayout;
import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.Action;
import com.netgrif.application.engine.petrinet.domain.events.DataEvent;
import com.netgrif.application.engine.petrinet.domain.events.DataEventType;
import com.netgrif.application.engine.petrinet.domain.events.EventPhase;
import lombok.Getter;
import lombok.Setter;
import java.util.*;
import java.util.stream.Collectors;
public class DataFieldLogic {
@Getter
@Setter
private Set behavior;
@Getter
@Setter
private Map events;
@Getter
@Setter
private FieldLayout layout;
@Getter
@Setter
private Component component;
public DataFieldLogic() {
this.behavior = new HashSet<>();
this.events = new HashMap<>();
this.layout = new FieldLayout();
}
public DataFieldLogic(Set behavior, Map events, FieldLayout layout, Component component) {
this();
this.behavior.addAll(behavior);
this.events = events;
this.layout = layout;
if (component != null)
this.component = component;
}
public ObjectNode applyBehavior(ObjectNode jsonNode) {
behavior.forEach(fieldBehavior -> jsonNode.put(fieldBehavior.toString(), true));
return jsonNode;
}
public ObjectNode applyBehavior() {
return applyBehavior(JsonNodeFactory.instance.objectNode());
}
public boolean isDisplayable() {
return behavior.contains(FieldBehavior.EDITABLE) || behavior.contains(FieldBehavior.VISIBLE) || behavior.contains(FieldBehavior.HIDDEN);
}
public boolean isDisplayableForCase() {
return behavior.contains(FieldBehavior.EDITABLE) || behavior.contains(FieldBehavior.VISIBLE) || behavior.contains(FieldBehavior.HIDDEN);
}
public static List getEventAction(DataEvent event, EventPhase phase){
if(phase == null) phase = event.getDefaultPhase();
if(phase.equals(EventPhase.PRE)){
return event.getPreActions();
} else {
return event.getPostActions();
}
}
public boolean isRequired() {
return behavior.contains(FieldBehavior.REQUIRED);
}
@Override
public String toString() {
return behavior.stream().map(FieldBehavior::toString).collect(Collectors.joining(", "));
}
public boolean isForbidden() {
return behavior.contains(FieldBehavior.FORBIDDEN);
}
public boolean layoutExist() {
return this.layout != null;
}
@Override
public DataFieldLogic clone() {
DataFieldLogic clone = new DataFieldLogic();
clone.setBehavior(new HashSet<>(this.behavior));
clone.setLayout(this.layout == null ? null : this.layout.clone());
clone.setEvents(this.events == null ? null : this.events.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().clone())));
clone.setComponent(this.component == null ? null : this.component.clone());
return clone;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy