All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tangosol.coherence.reporter.extractor.AddExtractor Maven / Gradle / Ivy

/*
 * Copyright (c) 2000, 2020, Oracle and/or its affiliates.
 *
 * Licensed under the Universal Permissive License v 1.0 as shown at
 * http://oss.oracle.com/licenses/upl.
 */

package com.tangosol.coherence.reporter.extractor;


import com.tangosol.util.Base;
import com.tangosol.util.extractor.MultiExtractor;
import com.tangosol.util.ImmutableArrayList;
import com.tangosol.util.ValueExtractor;


/**
* MultiExtractor implementation to add two ValueExtractors and extract the result.
*
* @author ew 2008.02.28
* @since Coherence 3.4
*/
public class AddExtractor
    extends MultiExtractor
    {
    // ------ constructors ---------------------------------------------------

    /**
    * Construct an AddExtractor.
    *
    * @param aExtractor  An array of ValueExtractors.  The results of the
    *                    first two extractors will be added.  If more
    *                    than two (2) extractors are passed, the excess
    *                    extractors will be ignored.
    */
    public AddExtractor(ValueExtractor[] aExtractor)
        {
        super(aExtractor);
        Base.azzert(aExtractor.length == 2, "Report addition requires " +
                "two and only two arguments.");

        }

    // ----- ValueExtractor interface ----------------------------------------

    /**
    * @inheritDoc
    */
    public Object extract(Object oTarget)
        {
        ImmutableArrayList arResults = (ImmutableArrayList)super.extract(oTarget);
        if (arResults.size() > 1)
            {
            Object o1 = arResults.get(0);
            Object o2 = arResults.get(1);
            if (o1 instanceof String || o2 instanceof String)
                {
                return o1.toString() + o2.toString();
                }
            else if (o1 instanceof Number && o2 instanceof Number)
                {
                return new Double(((Number)o1).doubleValue()
                                + ((Number)o2).doubleValue());
                }
            }

        return null;
        }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy