1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/s3-crt/S3Crt_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/s3-crt/model/Tag.h>
10 #include <aws/s3-crt/model/AnalyticsAndOperator.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Xml
18 {
19   class XmlNode;
20 } // namespace Xml
21 } // namespace Utils
22 namespace S3Crt
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>The filter used to describe a set of objects for analyses. A filter must have
29    * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
30    * filter is provided, all objects will be considered in any
31    * analysis.</p><p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsFilter">AWS
33    * API Reference</a></p>
34    */
35   class AWS_S3CRT_API AnalyticsFilter
36   {
37   public:
38     AnalyticsFilter();
39     AnalyticsFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
40     AnalyticsFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
41 
42     void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
43 
44 
45     /**
46      * <p>The prefix to use when evaluating an analytics filter.</p>
47      */
GetPrefix()48     inline const Aws::String& GetPrefix() const{ return m_prefix; }
49 
50     /**
51      * <p>The prefix to use when evaluating an analytics filter.</p>
52      */
PrefixHasBeenSet()53     inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
54 
55     /**
56      * <p>The prefix to use when evaluating an analytics filter.</p>
57      */
SetPrefix(const Aws::String & value)58     inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
59 
60     /**
61      * <p>The prefix to use when evaluating an analytics filter.</p>
62      */
SetPrefix(Aws::String && value)63     inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
64 
65     /**
66      * <p>The prefix to use when evaluating an analytics filter.</p>
67      */
SetPrefix(const char * value)68     inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
69 
70     /**
71      * <p>The prefix to use when evaluating an analytics filter.</p>
72      */
WithPrefix(const Aws::String & value)73     inline AnalyticsFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
74 
75     /**
76      * <p>The prefix to use when evaluating an analytics filter.</p>
77      */
WithPrefix(Aws::String && value)78     inline AnalyticsFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
79 
80     /**
81      * <p>The prefix to use when evaluating an analytics filter.</p>
82      */
WithPrefix(const char * value)83     inline AnalyticsFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
84 
85 
86     /**
87      * <p>The tag to use when evaluating an analytics filter.</p>
88      */
GetTag()89     inline const Tag& GetTag() const{ return m_tag; }
90 
91     /**
92      * <p>The tag to use when evaluating an analytics filter.</p>
93      */
TagHasBeenSet()94     inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
95 
96     /**
97      * <p>The tag to use when evaluating an analytics filter.</p>
98      */
SetTag(const Tag & value)99     inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
100 
101     /**
102      * <p>The tag to use when evaluating an analytics filter.</p>
103      */
SetTag(Tag && value)104     inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
105 
106     /**
107      * <p>The tag to use when evaluating an analytics filter.</p>
108      */
WithTag(const Tag & value)109     inline AnalyticsFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
110 
111     /**
112      * <p>The tag to use when evaluating an analytics filter.</p>
113      */
WithTag(Tag && value)114     inline AnalyticsFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
115 
116 
117     /**
118      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
119      * analytics filter. The operator must have at least two predicates.</p>
120      */
GetAnd()121     inline const AnalyticsAndOperator& GetAnd() const{ return m_and; }
122 
123     /**
124      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
125      * analytics filter. The operator must have at least two predicates.</p>
126      */
AndHasBeenSet()127     inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
128 
129     /**
130      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
131      * analytics filter. The operator must have at least two predicates.</p>
132      */
SetAnd(const AnalyticsAndOperator & value)133     inline void SetAnd(const AnalyticsAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
134 
135     /**
136      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
137      * analytics filter. The operator must have at least two predicates.</p>
138      */
SetAnd(AnalyticsAndOperator && value)139     inline void SetAnd(AnalyticsAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
140 
141     /**
142      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
143      * analytics filter. The operator must have at least two predicates.</p>
144      */
WithAnd(const AnalyticsAndOperator & value)145     inline AnalyticsFilter& WithAnd(const AnalyticsAndOperator& value) { SetAnd(value); return *this;}
146 
147     /**
148      * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
149      * analytics filter. The operator must have at least two predicates.</p>
150      */
WithAnd(AnalyticsAndOperator && value)151     inline AnalyticsFilter& WithAnd(AnalyticsAndOperator&& value) { SetAnd(std::move(value)); return *this;}
152 
153   private:
154 
155     Aws::String m_prefix;
156     bool m_prefixHasBeenSet;
157 
158     Tag m_tag;
159     bool m_tagHasBeenSet;
160 
161     AnalyticsAndOperator m_and;
162     bool m_andHasBeenSet;
163   };
164 
165 } // namespace Model
166 } // namespace S3Crt
167 } // namespace Aws
168