summaryrefslogtreecommitdiff
path: root/tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java')
-rw-r--r--tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java217
1 files changed, 217 insertions, 0 deletions
diff --git a/tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java b/tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java
new file mode 100644
index 00000000000..c133aa311af
--- /dev/null
+++ b/tests/appsearch/testutils/src/android/app/appsearch/testutil/external/testutil/AppSearchEmail.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch.testutil;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.appsearch.AppSearchSchema;
+import android.app.appsearch.AppSearchSchema.PropertyConfig;
+import android.app.appsearch.AppSearchSchema.StringPropertyConfig;
+import android.app.appsearch.GenericDocument;
+import android.app.appsearch.annotation.CanIgnoreReturnValue;
+
+/**
+ * Encapsulates a {@link GenericDocument} that represent an email.
+ *
+ * <p>This class is a higher level implement of {@link GenericDocument}.
+ *
+ * @hide
+ */
+public class AppSearchEmail extends GenericDocument {
+ /** The name of the schema type for {@link AppSearchEmail} documents. */
+ public static final String SCHEMA_TYPE = "builtin:Email";
+
+ private static final String KEY_FROM = "from";
+ private static final String KEY_TO = "to";
+ private static final String KEY_CC = "cc";
+ private static final String KEY_BCC = "bcc";
+ private static final String KEY_SUBJECT = "subject";
+ private static final String KEY_BODY = "body";
+
+ public static final AppSearchSchema SCHEMA =
+ new AppSearchSchema.Builder(SCHEMA_TYPE)
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_FROM)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_TO)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_CC)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_BCC)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_SUBJECT)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .addProperty(
+ new StringPropertyConfig.Builder(KEY_BODY)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(StringPropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build())
+ .build();
+
+ /**
+ * Creates a new {@link AppSearchEmail} from the contents of an existing {@link
+ * GenericDocument}.
+ *
+ * @param document The {@link GenericDocument} containing the email content.
+ */
+ public AppSearchEmail(@NonNull GenericDocument document) {
+ super(document);
+ }
+
+ /**
+ * Gets the from address of {@link AppSearchEmail}.
+ *
+ * @return The subject of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ */
+ @Nullable
+ public String getFrom() {
+ return getPropertyString(KEY_FROM);
+ }
+
+ /**
+ * Gets the destination addresses of {@link AppSearchEmail}.
+ *
+ * @return The destination addresses of {@link AppSearchEmail} or {@code null} if it's not been
+ * set yet.
+ */
+ @Nullable
+ public String[] getTo() {
+ return getPropertyStringArray(KEY_TO);
+ }
+
+ /**
+ * Gets the CC list of {@link AppSearchEmail}.
+ *
+ * @return The CC list of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ */
+ @Nullable
+ public String[] getCc() {
+ return getPropertyStringArray(KEY_CC);
+ }
+
+ /**
+ * Gets the BCC list of {@link AppSearchEmail}.
+ *
+ * @return The BCC list of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ */
+ @Nullable
+ public String[] getBcc() {
+ return getPropertyStringArray(KEY_BCC);
+ }
+
+ /**
+ * Gets the subject of {@link AppSearchEmail}.
+ *
+ * @return The value subject of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ */
+ @Nullable
+ public String getSubject() {
+ return getPropertyString(KEY_SUBJECT);
+ }
+
+ /**
+ * Gets the body of {@link AppSearchEmail}.
+ *
+ * @return The body of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ */
+ @Nullable
+ public String getBody() {
+ return getPropertyString(KEY_BODY);
+ }
+
+ /** The builder class for {@link AppSearchEmail}. */
+ public static class Builder extends GenericDocument.Builder<Builder> {
+ /**
+ * Creates a new {@link Builder}
+ *
+ * @param namespace The namespace of the Email.
+ * @param id The ID of the Email.
+ */
+ public Builder(@NonNull String namespace, @NonNull String id) {
+ super(namespace, id, SCHEMA_TYPE);
+ }
+
+ /** Sets the from address of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setFrom(@NonNull String from) {
+ return setPropertyString(KEY_FROM, from);
+ }
+
+ /** Sets the destination address of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setTo(@NonNull String... to) {
+ return setPropertyString(KEY_TO, to);
+ }
+
+ /** Sets the CC list of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setCc(@NonNull String... cc) {
+ return setPropertyString(KEY_CC, cc);
+ }
+
+ /** Sets the BCC list of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setBcc(@NonNull String... bcc) {
+ return setPropertyString(KEY_BCC, bcc);
+ }
+
+ /** Sets the subject of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setSubject(@NonNull String subject) {
+ return setPropertyString(KEY_SUBJECT, subject);
+ }
+
+ /** Sets the body of {@link AppSearchEmail} */
+ @CanIgnoreReturnValue
+ @NonNull
+ public Builder setBody(@NonNull String body) {
+ return setPropertyString(KEY_BODY, body);
+ }
+
+ /** Builds the {@link AppSearchEmail} object. */
+ @NonNull
+ @Override
+ public AppSearchEmail build() {
+ return new AppSearchEmail(super.build());
+ }
+ }
+}