001// -------------------------------------------------------------------------------- 002// Copyright 2002-2024 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.search.server.graphql; 018 019import com.echothree.control.user.search.common.result.BaseCheckSpellingResult; 020import com.echothree.model.control.graphql.server.graphql.MutationResultObject; 021import graphql.annotations.annotationTypes.GraphQLDescription; 022import graphql.annotations.annotationTypes.GraphQLField; 023import graphql.annotations.annotationTypes.GraphQLNonNull; 024import graphql.schema.DataFetchingEnvironment; 025import java.util.ArrayList; 026import static java.util.Collections.emptyList; 027import java.util.List; 028 029public abstract class BaseCheckSpellingObject<R extends BaseCheckSpellingResult> 030 extends MutationResultObject { 031 032 private R result; 033 034 public void setResult(R result) { 035 this.result = result; 036 } 037 038 @GraphQLField 039 @GraphQLDescription("check spelling words") 040 @GraphQLNonNull 041 public List<CheckSpellingWordObject> getCheckSpellingWords(final DataFetchingEnvironment env) { 042 List<CheckSpellingWordObject> objects; 043 044 if(result == null) { 045 objects = emptyList(); 046 } else { 047 var checkSpellingWords = result.getCheckSpellingWords(); 048 049 objects = new ArrayList<>(checkSpellingWords.size()); 050 051 checkSpellingWords.stream() 052 .map(CheckSpellingWordObject::new) 053 .forEachOrdered(objects::add); 054 } 055 056 return objects; 057 } 058 059}