package org.rakam.ui;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import org.rakam.report.eventexplorer.EventExplorerConfig;
import org.rakam.plugin.stream.EventStreamConfig;
import org.rakam.report.realtime.RealTimeConfig;
import org.rakam.plugin.user.UserPluginConfig;
import org.rakam.plugin.user.mailbox.UserMailboxStorage;
import javax.inject.Inject;
public class ActiveModuleListBuilder {
private final UserPluginConfig userPluginConfig;
private final RealTimeConfig realtimeConfig;
private final EventStreamConfig eventStreamConfig;
private final EventExplorerConfig eventExplorerConfig;
private final UserPluginConfig userStorage;
private final boolean userStorageMailbox;
@Inject
public ActiveModuleListBuilder(UserPluginConfig userPluginConfig, Optional<UserMailboxStorage> mailboxStorage, RealTimeConfig realtimeConfig, EventStreamConfig eventStreamConfig, EventExplorerConfig eventExplorerConfig, UserPluginConfig userStorage) {
this.userPluginConfig = userPluginConfig;
this.realtimeConfig = realtimeConfig;
this.eventStreamConfig = eventStreamConfig;
this.eventExplorerConfig = eventExplorerConfig;
this.userStorage = userStorage;
this.userStorageMailbox = mailboxStorage.isPresent();
}
public ActiveModuleList build() {
return new ActiveModuleList(userPluginConfig, userStorageMailbox, realtimeConfig, eventStreamConfig, eventExplorerConfig, userStorage);
}
public static class ActiveModuleList {
@JsonProperty
public final boolean userStorage;
@JsonProperty
public final boolean userMailbox;
@JsonProperty
public final boolean funnelAnalysisEnabled;
@JsonProperty
public final boolean automationEnabled;
@JsonProperty
public final boolean abTestingEnabled;
@JsonProperty
public final boolean retentionAnalysisEnabled;
@JsonProperty
public final boolean eventExplorer;
@JsonProperty
public final boolean realtime;
@JsonProperty
public final boolean eventStream;
@JsonProperty
public final boolean userStorageEventFilter;
private ActiveModuleList(UserPluginConfig userPluginConfig, boolean userStorageMailbox, RealTimeConfig realtimeConfig, EventStreamConfig eventStreamConfig, EventExplorerConfig eventExplorerConfig, UserPluginConfig userStorage) {
this.userStorage = userPluginConfig.getStorageModule() != null;
this.userMailbox = userStorageMailbox;
this.funnelAnalysisEnabled = userPluginConfig.isFunnelAnalysisEnabled();
this.automationEnabled = userPluginConfig.getAutomationEnabled();
this.abTestingEnabled = userPluginConfig.getAbTestingEnabled();
this.retentionAnalysisEnabled = userPluginConfig.isRetentionAnalysisEnabled();
this.eventExplorer = eventExplorerConfig.isEventExplorerEnabled();
this.realtime = realtimeConfig.isRealtimeModuleEnabled();
this.eventStream = eventStreamConfig.getEventStreamEnabled();
this.userStorageEventFilter = userStorage.getStorageModule() != null;
}
}
}