/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of the License at the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package org.apereo.portal.events.aggr.dao; import java.util.List; import java.util.Set; import org.apereo.portal.events.aggr.AcademicTermDetail; import org.apereo.portal.events.aggr.AggregatedGroupConfig; import org.apereo.portal.events.aggr.AggregatedIntervalConfig; import org.apereo.portal.events.aggr.IEventAggregatorStatus; import org.apereo.portal.events.aggr.IPortalEventAggregator; import org.apereo.portal.events.aggr.QuarterDetail; /** * Operations central to the management of portal event aggregation * */ public interface IEventAggregationManagementDao { /** Get the aggregation status for the specified processing type */ IEventAggregatorStatus getEventAggregatorStatus( IEventAggregatorStatus.ProcessingType processingType, boolean create); /** Update changes to the aggregation status object */ void updateEventAggregatorStatus(IEventAggregatorStatus eventAggregatorStatus); /** All aggregated group configurations */ Set<AggregatedGroupConfig> getAggregatedGroupConfigs(); /** * Default group includes/excludes, applied to all aggregators that do not have specific * configurations. */ AggregatedGroupConfig getDefaultAggregatedGroupConfig(); /** Get the aggregated group configuration for the specified aggregator */ AggregatedGroupConfig getAggregatedGroupConfig( Class<? extends IPortalEventAggregator> aggregatorType); /** Create config for specified aggregator */ AggregatedGroupConfig createAggregatedGroupConfig( Class<? extends IPortalEventAggregator> aggregatorType); /** Store changes made to the specified config */ void updateAggregatedGroupConfig(AggregatedGroupConfig aggregatedGroupConfig); /** Delete the specified configuration */ void deleteAggregatedGroupConfig(AggregatedGroupConfig aggregatedGroupConfig); /** @return All aggregated interval configurations */ Set<AggregatedIntervalConfig> getAggregatedIntervalConfigs(); /** * Default interval includes/excludes, applied to all aggregators that do not have specific * configurations. */ AggregatedIntervalConfig getDefaultAggregatedIntervalConfig(); /** Get the aggregated interval configuration for the specified aggregator */ AggregatedIntervalConfig getAggregatedIntervalConfig( Class<? extends IPortalEventAggregator> aggregatorType); /** Create config for specified aggregator */ AggregatedIntervalConfig createAggregatedIntervalConfig( Class<? extends IPortalEventAggregator> aggregatorType); /** Store changes made to the specified config */ void updateAggregatedIntervalConfig(AggregatedIntervalConfig aggregatedIntervalConfig); /** Delete the specified configuration */ void deleteAggregatedIntervalConfig(AggregatedIntervalConfig aggregatedIntervalConfig); /** An immutable list of the configured quarter details sorted by its natural ordering */ List<QuarterDetail> getQuartersDetails(); /** * Update the the quarter list to match the specified list * * @param quarterDetail Must contain four sequential quarters with no gaps between dates */ void setQuarterDetails(List<QuarterDetail> quarterDetail); /** * An immutable list of the currently configured academic terms sorted by its natural ordering */ List<AcademicTermDetail> getAcademicTermDetails(); /** * Update the academic term list to match the specified list * * @param academicTermDetails Must contain a list on non-overlapping terms */ void setAcademicTermDetails(List<AcademicTermDetail> academicTermDetails); }