Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 5be87186 authored by Tobias Kaminsky's avatar Tobias Kaminsky Committed by GitHub
Browse files

Merge pull request #147 from nextcloud/gallery-search

Gallery search
parents 5999ed94 b40082f2
Loading
Loading
Loading
Loading
+76 −34
Original line number Diff line number Diff line
@@ -61,7 +61,8 @@ public class SearchOperation extends RemoteOperation {
        CONTENT_TYPE_SEARCH,
        RECENTLY_MODIFIED_SEARCH,
        RECENTLY_ADDED_SEARCH,
        SHARED_SEARCH
        SHARED_SEARCH,
        GALLERY_SEARCH
    }

    private String searchQuery;
@@ -219,11 +220,22 @@ public class SearchOperation extends RemoteOperation {
        } else if (searchType == SearchType.RECENTLY_MODIFIED_SEARCH ||
                searchType == SearchType.RECENTLY_ADDED_SEARCH) {
            equalsElement = query.createElementNS(DAV_NAMESPACE, "d:gt");
        } else if (searchType == SearchType.GALLERY_SEARCH) {
            equalsElement = query.createElementNS(DAV_NAMESPACE, "d:or");
        } else {
            equalsElement = query.createElementNS(DAV_NAMESPACE, "d:like");
        }
        Element propElement = query.createElementNS(DAV_NAMESPACE, "d:prop");

        Element propElement = null;
        Element queryElement = null;
        Element literalElement = null;
        Text literalTextElement = null;
        Element imageLikeElement = null;
        Element videoLikeElement = null;

        if (searchType != SearchType.GALLERY_SEARCH) {
            propElement = query.createElementNS(DAV_NAMESPACE, "d:prop");
            queryElement = null;
            if (searchType == SearchType.CONTENT_TYPE_SEARCH) {
                queryElement = query.createElementNS(DAV_NAMESPACE, "d:getcontenttype");
            } else if (searchType == SearchType.FILE_SEARCH) {
@@ -235,8 +247,7 @@ public class SearchOperation extends RemoteOperation {
            } else if (searchType == SearchType.RECENTLY_ADDED_SEARCH) {
                queryElement = query.createElementNS(DAV_NAMESPACE, "d:creationdate");
            }
        Element literalElement = query.createElementNS(DAV_NAMESPACE, "d:literal");
        Text literalTextElement;
            literalElement = query.createElementNS(DAV_NAMESPACE, "d:literal");
            if (searchType != SearchType.RECENTLY_MODIFIED_SEARCH && searchType != SearchType.RECENTLY_ADDED_SEARCH) {
                if (searchType == SearchType.FILE_SEARCH) {
                    internalSearchString = "%" + internalSearchString + "%";
@@ -255,6 +266,31 @@ public class SearchOperation extends RemoteOperation {
                String formattedDateString = dateFormat.format(date);
                literalTextElement = query.createTextNode(formattedDateString);
            }
        } else {
            imageLikeElement = query.createElementNS(DAV_NAMESPACE, "d:like");
            Element imagePropElement = query.createElementNS(DAV_NAMESPACE, "d:prop");
            Element imageQueryElement = query.createElementNS(DAV_NAMESPACE, "d:getcontenttype");
            Element imageLiteralElement = query.createElementNS(DAV_NAMESPACE, "d:literal");
            Text imageLiteralTextElement = query.createTextNode("image/%");
            videoLikeElement = query.createElementNS(DAV_NAMESPACE, "d:like");
            Element videoPropElement = query.createElementNS(DAV_NAMESPACE, "d:prop");
            Element videoQueryElement = query.createElementNS(DAV_NAMESPACE, "d:getcontenttype");
            Element videoLiteralElement = query.createElementNS(DAV_NAMESPACE, "d:literal");
            Text videoLiteralTextElement = query.createTextNode("video/%");

            videoLiteralElement.appendChild(videoLiteralTextElement);
            imageLiteralElement.appendChild(imageLiteralTextElement);

            videoPropElement.appendChild(videoQueryElement);
            videoLikeElement.appendChild(videoPropElement);
            videoLikeElement.appendChild(videoLiteralElement);


            imagePropElement.appendChild(imageQueryElement);
            imageLikeElement.appendChild(imagePropElement);
            imageLikeElement.appendChild(imageLiteralElement);

        }

        Element orderByElement = query.createElementNS(DAV_NAMESPACE, "d:orderby");

@@ -292,10 +328,16 @@ public class SearchOperation extends RemoteOperation {
        } else {
            whereElement.appendChild(equalsElement);
        }

        if (searchType != SearchType.GALLERY_SEARCH) {
            equalsElement.appendChild(propElement);
            equalsElement.appendChild(literalElement);
            propElement.appendChild(queryElement);
            literalElement.appendChild(literalTextElement);
        } else {
            equalsElement.appendChild(imageLikeElement);
            equalsElement.appendChild(videoLikeElement);
        }
        basicSearchElement.appendChild(orderByElement);

        return query;