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 DocumentModel doc; 036 037 public SavedSearchImpl(DocumentModel doc) { 038 this.doc = doc; 039 } 040 041 @Override 042 public String getId() { 043 return doc.getId(); 044 } 045 046 @Override 047 public String getTitle() { 048 return getPropertyValue(SavedSearchConstants.TITLE_PROPERTY_NAME); 049 } 050 051 @Override 052 public Map<String, String> getNamedParams() { 053 List<Map<String, String>> paramsProperty = getPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME); 054 Map<String, String> params = new HashMap<>(); 055 for (Map<String, String> map : paramsProperty) { 056 params.put(map.get("key"), map.get("value")); 057 } 058 return params; 059 } 060 061 @Override 062 public String getQueryParams() { 063 return getPropertyValue(SavedSearchConstants.QUERY_PARAMS_PROPERTY_NAME); 064 } 065 066 @Override 067 public String getQuery() { 068 return getPropertyValue(SavedSearchConstants.QUERY_PROPERTY_NAME); 069 } 070 071 @Override 072 public String getQueryLanguage() { 073 return getPropertyValue(SavedSearchConstants.QUERY_LANGUAGE_PROPERTY_NAME); 074 } 075 076 @Override 077 public String getPageProviderName() { 078 return getPropertyValue(SavedSearchConstants.PAGE_PROVIDER_NAME_PROPERTY_NAME); 079 } 080 081 @Override 082 public Long getPageSize() { 083 return getPropertyValue(SavedSearchConstants.PAGE_SIZE_PROPERTY_NAME); 084 } 085 086 @Override 087 public Long getCurrentPageIndex() { 088 return getPropertyValue(SavedSearchConstants.CURRENT_PAGE_INDEX_PROPERTY_NAME); 089 } 090 091 @Override 092 public Long getMaxResults() { 093 return getPropertyValue(SavedSearchConstants.MAX_RESULTS_PROPERTY_NAME); 094 } 095 096 @Override 097 public String getSortBy() { 098 return getPropertyValue(SavedSearchConstants.SORT_BY_PROPERTY_NAME); 099 } 100 101 @Override 102 public String getSortOrder() { 103 return getPropertyValue(SavedSearchConstants.SORT_ORDER_PROPERTY_NAME); 104 } 105 106 @Override 107 public String getContentViewData() { 108 return getPropertyValue(SavedSearchConstants.CONTENT_VIEW_DATA_PROPERTY_NAME); 109 } 110 111 @Override 112 public DocumentModel getDocument() { 113 return doc; 114 } 115 116 @Override 117 public void setTitle(String title) { 118 doc.setPropertyValue(SavedSearchConstants.TITLE_PROPERTY_NAME, title); 119 } 120 121 @Override 122 public void setNamedParams(Map<String, String> params) { 123 if (params != null) { 124 List<Map<String, String>> paramsProperty = getPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME); 125 if (paramsProperty == null) { 126 paramsProperty = new ArrayList<>(); 127 } 128 129 Map<String, String> variable; 130 for (String key : params.keySet()) { 131 String value = params.get(key); 132 variable = new HashMap<>(2); 133 variable.put("key", key); 134 variable.put("value", value); 135 paramsProperty.add(variable); 136 } 137 doc.setPropertyValue(SavedSearchConstants.NAMED_PARAMS_PROPERTY_NAME, (Serializable) paramsProperty); 138 } 139 } 140 141 @Override 142 public void setQueryParams(String queryParams) { 143 doc.setPropertyValue(SavedSearchConstants.QUERY_PARAMS_PROPERTY_NAME, queryParams); 144 } 145 146 @Override 147 public void setQuery(String query) { 148 doc.setPropertyValue(SavedSearchConstants.QUERY_PROPERTY_NAME, query); 149 } 150 151 @Override 152 public void setQueryLanguage(String queryLanguage) { 153 doc.setPropertyValue(SavedSearchConstants.QUERY_LANGUAGE_PROPERTY_NAME, queryLanguage); 154 } 155 156 @Override 157 public void setPageProviderName(String pageProviderName) { 158 doc.setPropertyValue(SavedSearchConstants.PAGE_PROVIDER_NAME_PROPERTY_NAME, pageProviderName); 159 } 160 161 @Override 162 public void setPageSize(Long pageSize) { 163 doc.setPropertyValue(SavedSearchConstants.PAGE_SIZE_PROPERTY_NAME, pageSize); 164 } 165 166 @Override 167 public void setCurrentPageIndex(Long currentPageIndex) { 168 doc.setPropertyValue(SavedSearchConstants.CURRENT_PAGE_INDEX_PROPERTY_NAME, currentPageIndex); 169 } 170 171 @Override 172 public void setMaxResults(Long maxResults) { 173 doc.setPropertyValue(SavedSearchConstants.MAX_RESULTS_PROPERTY_NAME, maxResults); 174 } 175 176 @Override 177 public void setSortBy(String sortBy) { 178 doc.setPropertyValue(SavedSearchConstants.SORT_BY_PROPERTY_NAME, sortBy); 179 } 180 181 @Override 182 public void setSortOrder(String sortOrder) { 183 doc.setPropertyValue(SavedSearchConstants.SORT_ORDER_PROPERTY_NAME, sortOrder); 184 } 185 186 @Override 187 public void setContentViewData(String contentViewData) { 188 doc.setPropertyValue(SavedSearchConstants.CONTENT_VIEW_DATA_PROPERTY_NAME, contentViewData); 189 } 190 191 @Override 192 public void setDocument(DocumentModel doc) { 193 this.doc = doc; 194 } 195 196 @SuppressWarnings("unchecked") 197 protected <T> T getPropertyValue(String propertyName) { 198 Serializable value = doc.getPropertyValue(propertyName); 199 if (value instanceof Object[]) { 200 value = new ArrayList<Object>(Arrays.asList((Object[]) value)); 201 } 202 return (T) value; 203 } 204}