Oracle Fusion Middleware C++ API Reference for Oracle Coherence
12c (12.1.2)

E26041-01

coherence/util/filter/ExtractorFilter.hpp

00001 /*
00002 * ExtractorFilter.hpp
00003 *
00004 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
00005 *
00006 * Oracle is a registered trademarks of Oracle Corporation and/or its
00007 * affiliates.
00008 *
00009 * This software is the confidential and proprietary information of Oracle
00010 * Corporation. You shall not disclose such confidential and proprietary
00011 * information and shall use it only in accordance with the terms of the
00012 * license agreement you entered into with Oracle.
00013 *
00014 * This notice may not be removed or altered.
00015 */
00016 #ifndef COH_EXTRACTOR_FILTER_HPP
00017 #define COH_EXTRACTOR_FILTER_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/pof/PofReader.hpp"
00022 #include "coherence/io/pof/PofWriter.hpp"
00023 #include "coherence/io/pof/PortableObject.hpp"
00024 #include "coherence/util/Filter.hpp"
00025 #include "coherence/util/Map.hpp"
00026 #include "coherence/util/ValueExtractor.hpp"
00027 #include "coherence/util/filter/EntryFilter.hpp"
00028 
00029 COH_OPEN_NAMESPACE3(coherence,util,filter)
00030 
00031 using coherence::io::pof::PofReader;
00032 using coherence::io::pof::PofWriter;
00033 using coherence::io::pof::PortableObject;
00034 
00035 
00036 /**
00037 * Base Filter implementation for doing extractor-based processing.
00038 *
00039 * @author djl  2008.03.02
00040 */
00041 class COH_EXPORT ExtractorFilter
00042     : public abstract_spec<ExtractorFilter,
00043         extends<Object>,
00044         implements<EntryFilter, PortableObject> >
00045     {
00046     // ----- constructors ---------------------------------------------------
00047 
00048     protected:
00049         /**
00050         * Default constructor (necessary for the PortableObject interface).
00051         */
00052         ExtractorFilter();
00053 
00054         /**
00055         * Construct a ExtractorFilter for a given ValueExtractor.
00056         *
00057         * @param vExtractor the ValueExtractor to use by this filter
00058         */
00059         ExtractorFilter(ValueExtractor::View vExtractor);
00060 
00061     private:
00062         /**
00063         * Blocked copy constructor.
00064         */
00065         ExtractorFilter(const ExtractorFilter&);
00066 
00067 
00068     // ----- ExtractorFilter interface --------------------------------------
00069 
00070     protected:
00071         /**
00072         * Evaluate the specified extracted value.
00073         *
00074         * @param vExtracted  an extracted value to evaluate
00075         */
00076         virtual bool evaluateExtracted(Object::View vExtracted) const = 0;
00077 
00078         /**
00079         * Get the result of ValueExtractor invocation.
00080         *
00081         * @param v  the object on which to invoke the ValueExtractor;
00082         *           must not be NULL
00083         *
00084         * @return the result of the method invocation
00085         */
00086         virtual Object::View extract(Object::View v) const;
00087 
00088 
00089     // ----- EntryFilter interface ------------------------------------------
00090 
00091     public:
00092         /**
00093         * {@inheritDoc}
00094         */
00095         virtual bool evaluateEntry(Map::Entry::View vEntry) const;
00096 
00097 
00098     // ----- Filter interface -----------------------------------------------
00099 
00100     public:
00101         /**
00102         * {@inheritDoc}
00103         */
00104         virtual bool evaluate(Object::View v) const;
00105 
00106 
00107     // ----- PortableObject interface ---------------------------------------
00108 
00109      public:
00110         /**
00111         * {@inheritDoc}
00112         */
00113         virtual void readExternal(PofReader::Handle hIn);
00114 
00115         /**
00116         * {@inheritDoc}
00117         */
00118         virtual void writeExternal(PofWriter::Handle hOut) const;
00119 
00120 
00121     // ----- Object interface -----------------------------------------------
00122 
00123     public:
00124         /**
00125         * {@inheritDoc}
00126         */
00127         virtual void toStream(std::ostream& out) const;
00128 
00129 
00130     // ----- data member accessors ------------------------------------------
00131 
00132     public:
00133         /**
00134         * Obtain the ValueExtractor used by this filter.
00135         *
00136         * @return the ValueExtractor::View used by this filter
00137         */
00138         virtual ValueExtractor::View getValueExtractor() const;
00139 
00140 
00141     // ----- constants ------------------------------------------------------
00142 
00143     public:
00144         /**
00145         * The evaluation cost as a factor to the single index access operation.
00146         *
00147         * @see IndexAwareFilter#calculateEffectiveness(Map, Set)
00148         */
00149         static const size32_t eval_cost = 1000;
00150 
00151 
00152    // ----- data members ---------------------------------------------------
00153 
00154     protected:
00155         /**
00156         * The ValueExtractor used by this filter.
00157         */
00158         FinalView<ValueExtractor> f_vExtractor;
00159     };
00160 
00161 COH_CLOSE_NAMESPACE3
00162 
00163 #endif // COH_EXTRACTOR_FILTER_HPP
Copyright © 2000, 2013, Oracle and/or its affiliates. All rights reserved.