001
014
015 package com.liferay.portal.kernel.repository.cmis.search;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.search.Field;
020 import com.liferay.portal.kernel.search.QueryConfig;
021 import com.liferay.portal.kernel.util.DateFormatFactoryUtil;
022 import com.liferay.portal.kernel.util.PropsKeys;
023 import com.liferay.portal.kernel.util.PropsUtil;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.util.StringUtil;
026 import com.liferay.portal.kernel.util.Validator;
027
028 import java.text.DateFormat;
029 import java.text.ParseException;
030
031 import java.util.Date;
032
033
036 public class CMISParameterValueUtil {
037
038 public static String formatParameterValue(String field, String value) {
039 return formatParameterValue(field, value, false, null);
040 }
041
042 public static String formatParameterValue(
043 String field, String value, boolean wildcard) {
044
045 return formatParameterValue(field, value, wildcard, null);
046 }
047
048 public static String formatParameterValue(
049 String field, String value, boolean wildcard, QueryConfig queryConfig) {
050
051 if (field.equals(Field.CREATE_DATE) ||
052 field.equals(Field.MODIFIED_DATE)) {
053
054 try {
055 DateFormat searchSimpleDateFormat =
056 DateFormatFactoryUtil.getSimpleDateFormat(
057 _INDEX_DATE_FORMAT_PATTERN);
058
059 Date date = searchSimpleDateFormat.parse(value);
060
061 DateFormat cmisSimpleDateFormat =
062 DateFormatFactoryUtil.getSimpleDateFormat(
063 "yyyy-MM-dd'T'HH:mm:ss.000'Z'");
064
065 value = cmisSimpleDateFormat.format(date);
066 }
067 catch (ParseException pe) {
068 _log.warn(
069 "Unable to parse date " + value + " for field " + field);
070 }
071 }
072 else {
073 String productName = StringPool.BLANK;
074
075 if (queryConfig != null) {
076 productName = (String)queryConfig.getAttribute(
077 "repositoryProductName");
078 }
079
080 if (Validator.isNotNull(productName) &&
081 productName.startsWith("Alfresco")) {
082
083 value = StringUtil.replace(
084 value, new String[] {StringPool.APOSTROPHE},
085 new String[] {"\\'"});
086 }
087 else {
088 value = StringUtil.replace(
089 value,
090 new String[] {StringPool.APOSTROPHE, StringPool.UNDERLINE},
091 new String[] {"\\'", "\\_"});
092 }
093
094 if (wildcard) {
095 value = StringUtil.replace(
096 value, new String[] {StringPool.PERCENT, StringPool.STAR},
097 new String[] {"\\%", StringPool.PERCENT});
098 }
099 }
100
101 return value;
102 }
103
104 private static final String _INDEX_DATE_FORMAT_PATTERN = PropsUtil.get(
105 PropsKeys.INDEX_DATE_FORMAT_PATTERN);
106
107 private static Log _log = LogFactoryUtil.getLog(
108 CMISParameterValueUtil.class);
109
110 }