de.invation.code.toval.time.OverlapIntervalList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of TOVAL Show documentation
Show all versions of TOVAL Show documentation
TOVAL comprises a set of java classes for common programming issues. It includes utils for arrays, lists, sets and collections for convenient handling and modification, but also support for mathematic definitions concerning logic (clauses + resolution) together with some algorithms for permutations, powersets and resolution. Additionally it contains a number of types for multisets, matrices with object keys and much more.
The newest version!
package de.invation.code.toval.time;
/**
* In contrast to conventional interval lists, this type of interval list
* is tailored for coexistence analysis of process traces where the start and end
* times of traces are specified as time intervals.
* The algorithm that determines coexisting process instances on the basis of such
* interval definitions maintains a basic time interval per interval group.
* The basic interval is the first interval added to the interval group
* and serves as a basis for the determination of compatible intervals
* that in the end can be considered as time bounds for coexisting process traces.
*
* @author Thomas Stocker
*/
public class OverlapIntervalList extends AbstractIntervalList {
public OverlapIntervalList(){
super();
}
/**
* Generates a new interval list, using the given time interval as basic interval.
* @param basicTimeInterval The interval to be used as basic interval.
*/
public OverlapIntervalList(T basicTimeInterval){
super(basicTimeInterval);
}
/**
* Returns the basic interval of the interval list.
* This is always the first added interval.
* @return The basic interval or null if the list does not contain any intervals yet.
*/
public T getBasicInterval(){
if(timeIntervals.isEmpty())
return null;
return timeIntervals.get(0);
}
/**
* Checks if the given time interval is compatible with the interval list.
* A time interval is considered compatible if it starts within the basic interval.
* If the basic interval starts with a and ends with b, the start time of the given interval has to lie in [a;b).
* @param interval The interval to check.
* @return true if the given interval is compatible with the interval list;
* false otherwise.
*/
public boolean isCompatible(Interval interval){
return interval.getStart() >= getBasicInterval().getStart() &&
interval.getStart() < getBasicInterval().getEnd();
}
/**
* Checks if the given interval belongs to the coexistence group which consists of all list intervals.
* This is only the case when it starts within the minimum borders.
* If the minimum borders are a and b, the start time of the given interval has to lie in [a;b).
* @param interval The interval to check.
* @return true if the given interval belongs to the same coexistence group;
* false otherwise.
*/
public boolean belongsToCoexistenceGroup(Interval interval){
return interval.getStart() >= minBorders.getStart() &&
interval.getStart() < minBorders.getEnd();
}
/**
* Creates a new interval list out of this list according to the given interval.
* The new list will only contain those intervals of this list that end after the given interval starts.
* @param interval The interval that is used for generating a refined version of this list.
* @return The refined version of this list according to the given interval.
*/
public OverlapIntervalList refineBy(T interval){
OverlapIntervalList newList = new OverlapIntervalList();
for(T inter: timeIntervals){
if(inter.getEnd() > interval.getStart()){
newList.addTimeInterval(inter);
}
}
newList.addTimeInterval(interval);
return newList;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy