Home | History | Annotate | Download | only in sampling
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 package org.apache.commons.math.ode.sampling;
     19 
     20 /**
     21  * This class is a step handler that does nothing.
     22 
     23  * <p>This class is provided as a convenience for users who are only
     24  * interested in the final state of an integration and not in the
     25  * intermediate steps. Its handleStep method does nothing.</p>
     26  *
     27  * <p>Since this class has no internal state, it is implemented using
     28  * the Singleton design pattern. This means that only one instance is
     29  * ever created, which can be retrieved using the getInstance
     30  * method. This explains why there is no public constructor.</p>
     31  *
     32  * @see StepHandler
     33  * @version $Revision: 811827 $ $Date: 2009-09-06 17:32:50 +0200 (dim. 06 sept. 2009) $
     34  * @since 1.2
     35  */
     36 
     37 public class DummyStepHandler implements StepHandler {
     38 
     39     /** Private constructor.
     40      * The constructor is private to prevent users from creating
     41      * instances (Singleton design-pattern).
     42      */
     43     private DummyStepHandler() {
     44     }
     45 
     46     /** Get the only instance.
     47      * @return the only instance
     48      */
     49     public static DummyStepHandler getInstance() {
     50         return LazyHolder.INSTANCE;
     51     }
     52 
     53     /** Determines whether this handler needs dense output.
     54      * Since this handler does nothing, it does not require dense output.
     55      * @return always false
     56      */
     57     public boolean requiresDenseOutput() {
     58         return false;
     59     }
     60 
     61     /** Reset the step handler.
     62      * Initialize the internal data as required before the first step is
     63      * handled.
     64      */
     65     public void reset() {
     66     }
     67 
     68     /**
     69      * Handle the last accepted step.
     70      * This method does nothing in this class.
     71      * @param interpolator interpolator for the last accepted step. For
     72      * efficiency purposes, the various integrators reuse the same
     73      * object on each call, so if the instance wants to keep it across
     74      * all calls (for example to provide at the end of the integration a
     75      * continuous model valid throughout the integration range), it
     76      * should build a local copy using the clone method and store this
     77      * copy.
     78      * @param isLast true if the step is the last one
     79      */
     80     public void handleStep(final StepInterpolator interpolator, final boolean isLast) {
     81     }
     82 
     83     // CHECKSTYLE: stop HideUtilityClassConstructor
     84     /** Holder for the instance.
     85      * <p>We use here the Initialization On Demand Holder Idiom.</p>
     86      */
     87     private static class LazyHolder {
     88         /** Cached field instance. */
     89         private static final DummyStepHandler INSTANCE = new DummyStepHandler();
     90     }
     91     // CHECKSTYLE: resume HideUtilityClassConstructor
     92 
     93     /** Handle deserialization of the singleton.
     94      * @return the singleton instance
     95      */
     96     private Object readResolve() {
     97         // return the singleton instance
     98         return LazyHolder.INSTANCE;
     99     }
    100 
    101 }
    102