/** * 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; import org.joda.time.DateTime; import org.joda.time.Seconds; /** * Captures the results of an event processing operation, includes the number of objects processed, * completion status and the date range of the processing */ public final class EventProcessingResult { private final int processed; private final DateTime start; private final DateTime end; private final boolean complete; private final double creationRate; protected EventProcessingResult(int processed, DateTime start, DateTime end, boolean complete) { this.processed = processed; this.start = start; this.end = end; this.complete = complete; if (start == null || end == null) { creationRate = 0; } else { creationRate = (double) processed / Math.abs(Seconds.secondsBetween(start, end).getSeconds()); } } public double getCreationRate() { return creationRate; } public int getProcessed() { return processed; } public DateTime getStart() { return start; } public DateTime getEnd() { return end; } public boolean isComplete() { return complete; } }