}
}
/* For each Field Group */
Set<Entry<String, List<ISearchCondition>>> entries = mapFieldNameToConditions.entrySet();
DateFormat dateFormat = DateFormat.getDateInstance();
for (Entry<String, List<ISearchCondition>> entry : entries) {
String prevSpecName = null;
String fieldName = entry.getKey();
List<ISearchCondition> fieldConditions = entry.getValue();
StringBuilder fieldExpression = new StringBuilder();
/* Append Field Name */
fieldExpression.append(fieldName).append(" "); //$NON-NLS-1$
/* For each Field Condition */
for (ISearchCondition fieldCondition : fieldConditions) {
String condValue = fieldCondition.getValue().toString();
String specName = fieldCondition.getSpecifier().getName();
int typeId = fieldCondition.getField().getSearchValueType().getId();
int fieldId = fieldCondition.getField().getId();
/* Condition Value provided */
if (condValue.length() > 0) {
/* Append specifier if not identical with previous */
if (prevSpecName == null || !prevSpecName.equals(specName)) {
fieldExpression.append(specName).append(" "); //$NON-NLS-1$
prevSpecName = specName;
}
/* Specially Treat Age */
if (fieldId == INews.AGE_IN_DAYS || fieldId == INews.AGE_IN_MINUTES) {
Integer value = Integer.valueOf(condValue);
if (value >= 0)
fieldExpression.append(value == 1 ? NLS.bind(Messages.CoreUtils_N_DAY, value) : NLS.bind(Messages.CoreUtils_N_DAYS, value));
else if (value % 60 == 0)
fieldExpression.append(value == -60 ? NLS.bind(Messages.CoreUtils_N_HOUR, Math.abs(value) / 60) : NLS.bind(Messages.CoreUtils_N_HOURS, Math.abs(value) / 60));
else
fieldExpression.append(value == -1 ? NLS.bind(Messages.CoreUtils_N_MINUTE, Math.abs(value)) : NLS.bind(Messages.CoreUtils_N_MINUTES, Math.abs(value)));
}
/* Append Condition Value based on Type */
else {
switch (typeId) {
case ISearchValueType.STRING:
fieldExpression.append("'").append(condValue).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
break;
case ISearchValueType.LINK:
fieldExpression.append("'").append(condValue).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
break;
case ISearchValueType.ENUM:
condValue = condValue.toLowerCase();
condValue = condValue.replace("[", ""); //$NON-NLS-1$ //$NON-NLS-2$
condValue = condValue.replace("]", ""); //$NON-NLS-1$ //$NON-NLS-2$
fieldExpression.append(condValue.toLowerCase());
break;
case ISearchValueType.DATE:
fieldExpression.append(dateFormat.format(fieldCondition.getValue()));
break;
case ISearchValueType.TIME:
fieldExpression.append(dateFormat.format(fieldCondition.getValue()));
break;
case ISearchValueType.DATETIME:
fieldExpression.append(dateFormat.format(fieldCondition.getValue()));
break;
default:
fieldExpression.append(condValue);
}