All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opencredo.concursus.mapping.events.methods.ordering.CausalOrdering Maven / Gradle / Ivy

The newest version!
package com.opencredo.concursus.mapping.events.methods.ordering;

import com.opencredo.concursus.domain.events.Event;
import com.opencredo.concursus.domain.events.EventCharacteristics;
import com.opencredo.concursus.domain.events.EventType;

import java.util.Comparator;
import java.util.Map;

public final class CausalOrdering {

    public static final int INITIAL = Integer.MIN_VALUE;
    public static final int TERMINAL = Integer.MAX_VALUE;
    public static final int PRE_TERMINAL = TERMINAL - 1;

    private CausalOrdering() {
    }

    public static Comparator onEventTypes(Map eventTypeMap) {
        return Comparator.comparing((Event evt) -> eventTypeMap.getOrDefault(evt.getType(),
                PRE_TERMINAL))
                .thenComparing(Event::getEventTimestamp);
    }

    private static int getDefaultOrderBasedOnCharacteristics(Event evt) {
        return evt.hasCharacteristic(EventCharacteristics.IS_INITIAL)
            ? INITIAL
            : evt.hasCharacteristic(EventCharacteristics.IS_TERMINAL)
                ? TERMINAL
                : PRE_TERMINAL;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy