/**
* 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.cmis.search;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.search.Field;
import com.liferay.portal.kernel.search.QueryConfig;
import com.liferay.portal.kernel.util.CharPool;
import com.liferay.portal.kernel.util.DateFormatFactoryUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.kernel.util.PropsUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
/**
* @author Mika Koivisto
*/
public class CMISParameterValueUtil {
public static String formatParameterValue(String field, String value) {
return formatParameterValue(field, value, false, null);
}
public static String formatParameterValue(
String field, String value, boolean wildcard) {
return formatParameterValue(field, value, wildcard, null);
}
public static String formatParameterValue(
String field, String value, boolean wildcard, QueryConfig queryConfig) {
if (field.equals(Field.CREATE_DATE) ||
field.equals(Field.MODIFIED_DATE)) {
try {
DateFormat searchSimpleDateFormat =
DateFormatFactoryUtil.getSimpleDateFormat(
_INDEX_DATE_FORMAT_PATTERN);
Date date = searchSimpleDateFormat.parse(value);
DateFormat cmisSimpleDateFormat =
DateFormatFactoryUtil.getSimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.000'Z'");
value = cmisSimpleDateFormat.format(date);
}
catch (ParseException pe) {
if (_log.isWarnEnabled()) {
_log.warn(
"Unable to parse date " + value + " for field " +
field);
}
}
}
else {
String productName = StringPool.BLANK;
if (queryConfig != null) {
productName = (String)queryConfig.getAttribute(
"repositoryProductName");
}
if (Validator.isNotNull(productName) &&
productName.startsWith("Alfresco")) {
value = StringUtil.replace(value, CharPool.APOSTROPHE, "\\'");
}
else {
value = StringUtil.replace(
value, new char[] {CharPool.APOSTROPHE, CharPool.UNDERLINE},
new String[] {"\\'", "\\_"});
}
if (wildcard) {
value = StringUtil.replace(
value, new char[] {CharPool.PERCENT, CharPool.STAR},
new String[] {"\\%", StringPool.PERCENT});
}
}
return value;
}
private static final String _INDEX_DATE_FORMAT_PATTERN = PropsUtil.get(
PropsKeys.INDEX_DATE_FORMAT_PATTERN);
private static final Log _log = LogFactoryUtil.getLog(
CMISParameterValueUtil.class);
}