/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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.apache.jena.sparql.util.graph; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Triple ; /** Adds a regular "tick" based on the number of adds or deletes seen. * The additions and deletions ticks are independent. */ public abstract class GraphListenerCounter extends GraphListenerBase { private long addCount = 0 ; private long deleteCount = 0 ; private long addTicks = 0 ; private long deleteTicks = 0 ; private final int addNotePoint ; private final int deleteNotePoint ; /** Create a listener that "ticks" on additions to the graph (-1 means "off") * * @param addTickCount */ public GraphListenerCounter(int addTickCount) { this(addTickCount, -1) ; } /** Create a listener that "ticks" on additions and deletions * (in each case, -1 means "off") * * @param addTickCount Notification tick for additions to the graph * @param deleteTickCount Notification tick for deletions to the graph */ public GraphListenerCounter(int addTickCount, int deleteTickCount) { this.addNotePoint = addTickCount ; this.deleteNotePoint = deleteTickCount ; } public void reset() { addCount = 0 ; deleteCount = 0 ; } @Override public void notifyEvent(Graph source, Object value) { super.notifyEvent(source, value) ; } @Override protected void addEvent(Triple t) { addCount++ ; if ( addNotePoint > 0 && (addCount%addNotePoint) == 0 ) { addTicks++ ; addTick() ; } } @Override protected void deleteEvent(Triple t) { deleteCount++ ; if ( deleteNotePoint > 0 && (deleteCount%deleteNotePoint) == 0 ) { deleteTicks++ ; deleteTick() ; } } public final int getAddTickSize() { return addNotePoint ; } public final int getDeleteTickSize() { return deleteNotePoint ; } public final long getAddCount() { return addCount ; } public final long getDeleteCount() { return deleteCount ; } public final long getAddTicks() { return addTicks ; } public final long getDeleteTicks() { return deleteTicks ; } protected abstract void deleteTick() ; protected abstract void addTick() ; }