@@ -0,0 +1,3116 @@
+/****************************************************************%0A * Licensed to the Apache Software Foundation (ASF) under one   *%0A * or more contributor license agreements.  See the NOTICE file *%0A * distributed with this work for additional information        *%0A * regarding copyright ownership.  The ASF licenses this file   *%0A * to you under the Apache License, Version 2.0 (the            *%0A * %22License%22); you may not use this file except in compliance   *%0A * with the License.  You may obtain a copy of the License at   *%0A *                                                              *%0A *   http://www.apache.org/licenses/LICENSE-2.0                 *%0A *                                                              *%0A * Unless required by applicable law or agreed to in writing,   *%0A * software distributed under the License is distributed on an  *%0A * %22AS IS%22 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *%0A * KIND, either express or implied.  See the License for the    *%0A * specific language governing permissions and limitations      *%0A * under the License.                                           *%0A ****************************************************************/%0A%0Apackage org.apache.james.mailbox.elasticsearch.query;%0A%0Aimport org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants;%0Aimport org.apache.james.mailbox.model.SearchQuery;%0Aimport org.elasticsearch.search.sort.FieldSortBuilder;%0Aimport org.elasticsearch.search.sort.SortBuilders;%0Aimport org.elasticsearch.search.sort.SortOrder;%0A%0Apublic class SortConverter %7B%0A%0A    public static FieldSortBuilder convertSort(SearchQuery.Sort sort) %7B%0A        return SortBuilders.fieldSort(getFieldFromClause(sort.getSortClause()))%0A            .order(getOrder(sort));%0A    %7D%0A%0A    private static String getFieldFromClause(SearchQuery.Sort.SortClause clause) %7B%0A        switch (clause) %7B%0A            case Arrival :%0A                return JsonMessageConstants.DATE;%0A            case MailboxCc :%0A                return JsonMessageConstants.CC;%0A            case MailboxFrom :%0A                return JsonMessageConstants.FROM + %22.%22 + JsonMessageConstants.EMailer.ADDRESS;%0A            case MailboxTo :%0A                return JsonMessageConstants.TO + %22.%22 + JsonMessageConstants.EMailer.ADDRESS;%0A            case BaseSubject :%0A                return JsonMessageConstants.SUBJECT;%0A            case Size :%0A                return JsonMessageConstants.SIZE;%0A            case SentDate :%0A                return JsonMessageConstants.DATE;%0A            case Uid :%0A                return JsonMessageConstants.ID;%0A            case DisplayFrom:%0A                return JsonMessageConstants.FROM + %22.%22 + JsonMessageConstants.EMailer.NAME;%0A            case DisplayTo:%0A                return JsonMessageConstants.TO + %22.%22 + JsonMessageConstants.EMailer.NAME;%0A            default:%0A                throw new RuntimeException(%22Sort is not implemented%22);%0A        %7D%0A    %7D%0A%0A    private static SortOrder getOrder(SearchQuery.Sort sort) %7B%0A        if( sort.isReverse() ) %7B%0A            return SortOrder.DESC;%0A        %7D else %7B%0A            return SortOrder.ASC;%0A        %7D%0A    %7D%0A%7D%0A

MAILBOX-155 Convert James query sorts into ElasticSearch sorts