Oracle Coherence for C++ API
Release 3.7.1.0
E22845-01
00001 /* 00002 * ConditionalExtractor.hpp 00003 * 00004 * Copyright (c) 2000, 2011, 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 MemberView<Filter> m_vFilter; 00152 00153 /** 00154 * The underlying extractor. 00155 */ 00156 MemberView<ValueExtractor> m_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