
net.intelie.liverig.plugin.widgets.ChannelsExtractor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plugin-assets Show documentation
Show all versions of plugin-assets Show documentation
Asset framework for industries solutions
The newest version!
package net.intelie.liverig.plugin.widgets;
import net.intelie.liverig.plugin.curves.CalculatedCurves;
import net.intelie.liverig.plugin.curves.Curve;
import net.intelie.liverig.plugin.curves.StandardCurves;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class ChannelsExtractor {
private static final String QUANTITY_TYPE_TEXT = "text";
@NotNull
private final StandardCurves standardCurves;
@NotNull
private final CalculatedCurves calculatedCurves;
public ChannelsExtractor(@NotNull StandardCurves standardCurves, @NotNull CalculatedCurves calculatedCurves) {
this.standardCurves = standardCurves;
this.calculatedCurves = calculatedCurves;
}
@NotNull
public Set simpleChannels(@NotNull List channels) {
return filter(channels, FILTER_TYPE.COMMON);
}
@NotNull
public Set throttledChannels(@NotNull List channels) {
return filter(channels, FILTER_TYPE.THROTTLE);
}
@NotNull
public Set textChannels(@NotNull List channels) {
return filter(channels, FILTER_TYPE.TEXT);
}
@Nullable
private Curve findCurve(@Nullable AssetChannel channel) {
if (channel == null) return null;
Curve curve = standardCurves.getCurve(channel.getQualifier());
return (curve != null) ? curve : calculatedCurves.getCurve(channel.getQualifier());
}
@NotNull
private Set filter(@NotNull List channels, FILTER_TYPE type) {
return channels.stream().filter(c -> {
Curve curve = findCurve(c);
String quantityType = (curve != null) ? curve.quantityType() : null;
switch (type) {
case TEXT:
return ChannelsExtractor.QUANTITY_TYPE_TEXT.equalsIgnoreCase(quantityType);
case THROTTLE:
return c.shouldThrottle();
case COMMON:
return !ChannelsExtractor.QUANTITY_TYPE_TEXT.equalsIgnoreCase(quantityType) && !c.shouldThrottle();
}
return false;
}).map(AssetChannel::getQualifier).collect(Collectors.toSet());
}
private enum FILTER_TYPE {
TEXT,
THROTTLE,
COMMON
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy