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

E26041-01

coherence/util/extractor/ConditionalExtractor.hpp

00001 /*
00002 * ConditionalExtractor.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_CONDITIONAL_EXTRACTOR_HPP
00017 #define COH_CONDITIONAL_EXTRACTOR_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/util/Comparator.hpp"
00024 #include "coherence/util/Filter.hpp"
00025 #include "coherence/util/Map.hpp"
00026 #include "coherence/util/MapIndex.hpp"
00027 #include "coherence/util/ValueExtractor.hpp"
00028 #include "coherence/util/extractor/AbstractExtractor.hpp"
00029 #include "coherence/util/extractor/IndexAwareExtractor.hpp"
00030 
00031 COH_OPEN_NAMESPACE3(coherence,util,extractor)
00032 
00033 using coherence::io::pof::PofReader;
00034 using coherence::io::pof::PofWriter;
00035 using coherence::util::Comparator;
00036 using coherence::util::Filter;
00037 using coherence::util::MapIndex;
00038 using coherence::util::ValueExtractor;
00039 
00040 
00041 /**
00042 * An IndexAwareExtractor implementation that is only used to create a
00043 * coherence::util::ConditionalIndex.
00044 * <p/>
00045 * Note: the underlying ValueExtractor is used for value extraction during
00046 * index creation and is the extractor that is associated with the created
00047 * coherence::util::ConditionalIndex in the given index map.  Using the
00048 * ConditionalExtractor to extract values is not supported.
00049 *
00050 * @author tb/lh  2010.08.31
00051 * @since Coherence 3.6
00052 */
00053 class COH_EXPORT ConditionalExtractor
00054     : public class_spec<ConditionalExtractor,
00055         extends<AbstractExtractor>,
00056         implements<IndexAwareExtractor, PortableObject> >
00057     {
00058     friend class factory<ConditionalExtractor>;
00059 
00060     // ----- constructors ---------------------------------------------------
00061 
00062     protected:
00063         /**
00064         * Construct the ConditionalExtractor.
00065         */
00066         ConditionalExtractor();
00067 
00068         /**
00069         * Construct the ConditionalExtractor.
00070         *
00071         * @param vFilter        the filter used by this extractor to create a
00072         *                       ConditionalIndex; must not be NULL
00073         * @param vExtractor     the extractor used by this extractor to create
00074         *                       a ConditionalIndex; Note that the created index
00075         *                       will be associated with this extractor in
00076         *                       the given index map; must not be NULL
00077         * @param fForwardIndex  specifies whether or not this extractor
00078         *                       will create a ConditionalIndex that
00079         *                       supports a forward map
00080         */
00081         ConditionalExtractor(Filter::View vFilter,
00082             ValueExtractor::View vExtractor,
00083             bool fForwardIndex);
00084 
00085 
00086     // ----- IndexAwareExtractor interface ----------------------------------
00087 
00088     public:
00089         /**
00090         * {@inheritDoc}
00091         */
00092         virtual MapIndex::Handle createIndex(bool fOrdered, Comparator::View vComparator,
00093             Map::Handle hMapIndex) const;
00094 
00095         /**
00096         * {@inheritDoc}
00097         */
00098         virtual MapIndex::Handle destroyIndex(Map::Handle hMapIndex) const;
00099 
00100 
00101     // ----- ValueExtractor interface ---------------------------------------
00102 
00103     public:
00104         /**
00105         * Using a ConditionalExtractor to extract values in not supported.
00106         *
00107         * @throws UnsupportedOperationException always
00108         */
00109         virtual Object::Holder extract(Object::Holder ohTarget) const;
00110 
00111 
00112     // ----- PortableObject interface ---------------------------------------
00113 
00114     public:
00115         /**
00116         * {@inheritDoc}
00117         */
00118         virtual void readExternal(PofReader::Handle hIn);
00119 
00120         /**
00121         * {@inheritDoc}
00122         */
00123         virtual void writeExternal(PofWriter::Handle hOut) const;
00124 
00125 
00126     // ----- Object methods -------------------------------------------------
00127 
00128     public:
00129         /**
00130         * {@inheritDoc}
00131         */
00132         virtual void toStream(std::ostream& out) const;
00133 
00134         /**
00135         * {@inheritDoc}
00136         */
00137         virtual bool equals(Object::View v) const;
00138 
00139         /**
00140         * {@inheritDoc}
00141         */
00142         virtual size32_t hashCode() const;
00143 
00144 
00145     // ----- data members ---------------------------------------------------
00146 
00147     protected:
00148         /**
00149         * The filter used by this extractor.
00150         */
00151         FinalView<Filter> f_vFilter;
00152 
00153         /**
00154         * The underlying extractor.
00155         */
00156         FinalView<ValueExtractor> f_vExtractor;
00157 
00158         /**
00159         * Specifies whether or not this extractor will create a
00160         * coherence::util::ConditionalIndex that supports a forward index.
00161         */
00162         bool m_fForwardIndex;
00163     };
00164 
00165 COH_CLOSE_NAMESPACE3
00166 
00167 #endif // COH_CONDITIONAL_EXTRACTOR_HPP
Copyright © 2000, 2013, Oracle and/or its affiliates. All rights reserved.