001/* 002 * (C) Copyright 2016 Nuxeo SA (http://nuxeo.com/) and others. 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 * Contributors: 017 * Gabriel Barata <gbarata@nuxeo.com> 018 */ 019package org.nuxeo.ecm.platform.search.core; 020 021import java.io.Serializable; 022import java.util.ArrayList; 023import java.util.Arrays; 024import java.util.HashMap; 025import java.util.List; 026import java.util.Map; 027 028import org.nuxeo.ecm.core.api.DocumentModel; 029 030/** 031 * @since 8.3 032 */ 033public class SavedSearchImpl implements SavedSearch { 034 035 private static final long serialVersionUID = 1L; 036 private DocumentModel doc; 037 038 public SavedSearchImpl(DocumentModel doc) { 039 this.doc = doc; 040 } 041 042 @Override 043 public String getId() { 044 return doc.getId(); 045 } 046 047 @Override 048 public String getTitle() { 049 return getPropertyValue(SavedSearchConstants.TITLE_PROPERTY_NAME); 050 } 051 052 @Override 053 public Map<String, String> getNamedParams() { 054 List<Map<String, String>> paramsProperty = getPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME); 055 Map<String, String> params = new HashMap<>(); 056 for (Map<String, String> map : paramsProperty) { 057 params.put(map.get("key"), map.get("value")); 058 } 059 return params; 060 } 061 062 @Override 063 public String getQueryParams() { 064 return getPropertyValue(SavedSearchConstants.QUERY_PARAMS_PROPERTY_NAME); 065 } 066 067 @Override 068 public String getQuery() { 069 return getPropertyValue(SavedSearchConstants.QUERY_PROPERTY_NAME); 070 } 071 072 @Override 073 public String getQueryLanguage() { 074 return getPropertyValue(SavedSearchConstants.QUERY_LANGUAGE_PROPERTY_NAME); 075 } 076 077 @Override 078 public String getPageProviderName() { 079 return getPropertyValue(SavedSearchConstants.PAGE_PROVIDER_NAME_PROPERTY_NAME); 080 } 081 082 @Override 083 public Long getPageSize() { 084 return getPropertyValue(SavedSearchConstants.PAGE_SIZE_PROPERTY_NAME); 085 } 086 087 @Override 088 public Long getCurrentPageIndex() { 089 return getPropertyValue(SavedSearchConstants.CURRENT_PAGE_INDEX_PROPERTY_NAME); 090 } 091 092 @Override 093 public Long getMaxResults() { 094 return getPropertyValue(SavedSearchConstants.MAX_RESULTS_PROPERTY_NAME); 095 } 096 097 @Override 098 public String getSortBy() { 099 return getPropertyValue(SavedSearchConstants.SORT_BY_PROPERTY_NAME); 100 } 101 102 @Override 103 public String getSortOrder() { 104 return getPropertyValue(SavedSearchConstants.SORT_ORDER_PROPERTY_NAME); 105 } 106 107 @Override 108 public String getContentViewData() { 109 return getPropertyValue(SavedSearchConstants.CONTENT_VIEW_DATA_PROPERTY_NAME); 110 } 111 112 @Override 113 public DocumentModel getDocument() { 114 return doc; 115 } 116 117 @Override 118 public void setTitle(String title) { 119 doc.setPropertyValue(SavedSearchConstants.TITLE_PROPERTY_NAME, title); 120 } 121 122 @Override 123 public void setNamedParams(Map<String, String> params) { 124 if (params != null) { 125 List<Map<String, String>> paramsProperty = getPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME); 126 if (paramsProperty == null) { 127 paramsProperty = new ArrayList<>(); 128 } 129 130 Map<String, String> variable; 131 for (String key : params.keySet()) { 132 String value = params.get(key); 133 variable = new HashMap<>(2); 134 variable.put("key", key); 135 variable.put("value", value); 136 paramsProperty.add(variable); 137 } 138 doc.setPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME, (Serializable) paramsProperty); 139 } 140 } 141 142 @Override 143 public void setQueryParams(String queryParams) { 144 doc.setPropertyValue(SavedSearchConstants.QUERY_PARAMS_PROPERTY_NAME, queryParams); 145 } 146 147 @Override 148 public void setQuery(String query) { 149 doc.setPropertyValue(SavedSearchConstants.QUERY_PROPERTY_NAME, query); 150 } 151 152 @Override 153 public void setQueryLanguage(String queryLanguage) { 154 doc.setPropertyValue(SavedSearchConstants.QUERY_LANGUAGE_PROPERTY_NAME, queryLanguage); 155 } 156 157 @Override 158 public void setPageProviderName(String pageProviderName) { 159 doc.setPropertyValue(SavedSearchConstants.PAGE_PROVIDER_NAME_PROPERTY_NAME, pageProviderName); 160 } 161 162 @Override 163 public void setPageSize(Long pageSize) { 164 doc.setPropertyValue(SavedSearchConstants.PAGE_SIZE_PROPERTY_NAME, pageSize); 165 } 166 167 @Override 168 public void setCurrentPageIndex(Long currentPageIndex) { 169 doc.setPropertyValue(SavedSearchConstants.CURRENT_PAGE_INDEX_PROPERTY_NAME, currentPageIndex); 170 } 171 172 @Override 173 public void setMaxResults(Long maxResults) { 174 doc.setPropertyValue(SavedSearchConstants.MAX_RESULTS_PROPERTY_NAME, maxResults); 175 } 176 177 @Override 178 public void setSortBy(String sortBy) { 179 doc.setPropertyValue(SavedSearchConstants.SORT_BY_PROPERTY_NAME, sortBy); 180 } 181 182 @Override 183 public void setSortOrder(String sortOrder) { 184 doc.setPropertyValue(SavedSearchConstants.SORT_ORDER_PROPERTY_NAME, sortOrder); 185 } 186 187 @Override 188 public void setContentViewData(String contentViewData) { 189 doc.setPropertyValue(SavedSearchConstants.CONTENT_VIEW_DATA_PROPERTY_NAME, contentViewData); 190 } 191 192 @Override 193 public void setDocument(DocumentModel doc) { 194 this.doc = doc; 195 } 196 197 @SuppressWarnings("unchecked") 198 protected <T> T getPropertyValue(String propertyName) { 199 Serializable value = doc.getPropertyValue(propertyName); 200 if (value instanceof Object[]) { 201 value = new ArrayList<>(Arrays.asList((Object[]) value)); 202 } 203 return (T) value; 204 } 205 206 /** 207 * @since 9.3 208 */ 209 @Override 210 public Long getCurrentPageOffset() { 211 return getPropertyValue(SavedSearchConstants.CURRENT_PAGE_OFFSET_PROPERTY_NAME); 212 } 213}