001/* 
002 * JKNIV, SQLegance keeping queries maintainable.
003 * 
004 * Copyright (C) 2017, the original author or authors.
005 *
006 * This library is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 2.1 of the License.
010 * 
011 * This library is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 * 
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with this library; if not, write to the Free Software Foundation, Inc., 
018 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
019 */
020package net.sf.jkniv.sqlegance;
021
022/**
023 * Statistical data for query execution 
024 * 
025 * @author Alisson Gomes
026 * @since 0.6.0
027 *
028 */
029public interface Statistical
030{
031    /**
032     * add time to statistics
033     * @param time milliseconds
034     */
035    void add(long time);
036    
037    /**
038     * Add a exception data to statistical keeping the
039     * first, last and total exceptions registered.
040     * @param e exception
041     */
042    void add(Exception e);
043    
044    /**
045     * maximum time execution
046     * @return maximum milliseconds execution
047     */
048    long getMaxTime();
049    
050    /**
051     * minimum time execution
052     * @return minimum milliseconds execution
053     */
054    long getMinTime();
055    
056    /**
057     * average time execution
058     * @return average milliseconds execution
059     */
060    long getAvgTime();
061    
062    /**
063     * total time execution
064     * @return total milliseconds execution
065     */
066    long getTotalTime();
067
068    /**
069     * first time execution
070     * @return total milliseconds execution
071     */
072    long getFirstTime();
073
074    /**
075     * last time execution
076     * @return total milliseconds execution
077     */
078    long getLastTime();
079
080    /**
081     * times executed
082     * @return times executed
083     */
084    long getCount();
085
086    /**
087     * the total of execution with error
088     * @return quantity of errors happened
089     */
090    long getTotalException();
091
092    /**
093     * The first error happened
094     * @return the first error
095     */
096    Exception getFirstException();
097
098    /**
099     * The last error happened
100     * @return the last error
101     */
102    Exception getLastException();
103}