/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.document.library.repository.external; import com.liferay.document.library.repository.external.search.ExtRepositoryQueryMapper; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.search.Field; import com.liferay.portal.kernel.search.SearchException; import com.liferay.portal.kernel.service.UserLocalServiceUtil; import com.liferay.portal.kernel.util.DateFormatFactoryUtil; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.PropsKeys; import com.liferay.portal.kernel.util.PropsUtil; import java.text.DateFormat; import java.text.ParseException; import java.util.Date; /** * @author Iván Zaera * @author Sergio González */ public class ExtRepositoryQueryMapperImpl implements ExtRepositoryQueryMapper { public ExtRepositoryQueryMapperImpl( ExtRepositoryAdapter extRepositoryAdapter) { _extRepositoryAdapter = extRepositoryAdapter; } @Override public Date formatDateParameterValue(String fieldName, String fieldValue) throws SearchException { if (fieldName.equals(Field.CREATE_DATE) || fieldName.equals(Field.MODIFIED_DATE)) { try { DateFormat searchSimpleDateFormat = DateFormatFactoryUtil.getSimpleDateFormat( _INDEX_DATE_FORMAT_PATTERN); return searchSimpleDateFormat.parse(fieldValue); } catch (ParseException pe) { throw new SearchException( "Unable to parse date " + fieldValue + " for field " + fieldName); } } else { throw new SearchException("Field " + fieldName + " is not a date"); } } @Override public String formatParameterValue(String fieldName, String fieldValue) throws SearchException { if (fieldName.equals(Field.CREATE_DATE) || fieldName.equals(Field.MODIFIED_DATE)) { throw new SearchException( "Use the method formatDateParameterValue to format the date " + "field " + fieldName); } else if (fieldName.equals(Field.FOLDER_ID)) { try { long folderId = GetterUtil.getLong(fieldValue); return _extRepositoryAdapter.getExtRepositoryObjectKey( folderId); } catch (PortalException pe) { throw new SearchException( "Unable to get folder folder " + fieldValue, pe); } catch (SystemException se) { throw new SearchException( "Unable to get folder folder " + fieldValue, se); } } else if (fieldName.equals(Field.USER_ID)) { try { long userId = GetterUtil.getLong(fieldValue); User user = UserLocalServiceUtil.getUserById(userId); return user.getScreenName(); } catch (Exception e) { throw new SearchException( "Unable to get user user " + fieldValue, e); } } else { return fieldValue; } } private static final String _INDEX_DATE_FORMAT_PATTERN = PropsUtil.get( PropsKeys.INDEX_DATE_FORMAT_PATTERN); private final ExtRepositoryAdapter _extRepositoryAdapter; }