Skip to content
Snippets Groups Projects
Commit 97c420bb authored by anttil's avatar anttil
Browse files

LMS-2830 Date range search possibility in advanced sample/data set search in GUI

SVN: 24774
parent a56e7cc1
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search; package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.search;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import java.util.List;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
...@@ -36,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon ...@@ -36,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.DetailedSearchFieldComboModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.DetailedSearchFieldComboModel;
import ch.systemsx.cisd.openbis.generic.shared.basic.AttributeSearchFieldKindProvider; import ch.systemsx.cisd.openbis.generic.shared.basic.AttributeSearchFieldKindProvider;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CompareType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
...@@ -168,8 +172,8 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel ...@@ -168,8 +172,8 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel
{ {
DetailedSearchCriterionWidget newCriterion = DetailedSearchCriterionWidget newCriterion =
new DetailedSearchCriterionWidget(parent, getChildId(), new DetailedSearchCriterionWidget(parent, getChildId(),
new DetailedSearchFieldsSelectionWidget(nameField, getChildId(), nameField new DetailedSearchFieldsSelectionWidget(nameField, getChildId(),
.getEntityKind())); nameField.getEntityKind()));
parent.addCriterion(newCriterion); parent.addCriterion(newCriterion);
generatedChildren++; generatedChildren++;
} }
...@@ -204,9 +208,47 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel ...@@ -204,9 +208,47 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel
final String selectedValue = valueField.getValue(); final String selectedValue = valueField.getValue();
final DetailedSearchField selectedFieldName = nameField.tryGetSelectedField(); final DetailedSearchField selectedFieldName = nameField.tryGetSelectedField();
if (selectedFieldName != null && StringUtils.isBlank(selectedValue) == false) if (selectedFieldName != null && StringUtils.isBlank(selectedValue) == false)
{ {
return new DetailedSearchCriterion(selectedFieldName, selectedValue); String aCode = selectedFieldName.getAttributeCode();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try
{
date = sdf.parse(selectedValue);
} catch (ParseException ex)
{
return new DetailedSearchCriterion(selectedFieldName, selectedValue);
}
CompareType compareType;
if ("REGISTRATION_DATE_BEFORE".equals(aCode))
{
compareType = CompareType.LESS_THAN_OR_EQUAL;
} else if ("REGISTRATION_DATE".equals(aCode))
{
compareType = CompareType.EQUALS;
} else if ("REGISTRATION_DATE_AFTER".equals(aCode))
{
compareType = CompareType.MORE_THAN_OR_EQUAL;
} else if ("MODIFICATION_DATE_BEFORE".equals(aCode))
{
compareType = CompareType.LESS_THAN_OR_EQUAL;
} else if ("MODIFICATION_DATE".equals(aCode))
{
compareType = CompareType.EQUALS;
} else if ("MODIFICATION_DATE_AFTER".equals(aCode))
{
compareType = CompareType.MORE_THAN_OR_EQUAL;
} else
{
return new DetailedSearchCriterion(selectedFieldName, selectedValue);
}
return new DetailedSearchCriterion(selectedFieldName, compareType, date);
} }
return null; return null;
...@@ -221,7 +263,14 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel ...@@ -221,7 +263,14 @@ public class DetailedSearchCriterionWidget extends HorizontalPanel
return null; return null;
} }
return name + " = " + criterion.getValue(); if (criterion.getValue() == null && criterion.getDate() != null)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return name + " = " + sdf.format(criterion.getDate());
} else
{
return name + " = " + criterion.getValue();
}
} }
public List<PropertyType> getAvailablePropertyTypes() public List<PropertyType> getAvailablePropertyTypes()
......
...@@ -131,8 +131,12 @@ class IndexFieldNameHelper ...@@ -131,8 +131,12 @@ class IndexFieldNameHelper
case FILE_TYPE: case FILE_TYPE:
return SearchFieldConstants.PREFIX_FILE_FORMAT_TYPE + CODE; return SearchFieldConstants.PREFIX_FILE_FORMAT_TYPE + CODE;
case REGISTRATION_DATE: case REGISTRATION_DATE:
case REGISTRATION_DATE_BEFORE:
case REGISTRATION_DATE_AFTER:
return SearchFieldConstants.REGISTRATION_DATE; return SearchFieldConstants.REGISTRATION_DATE;
case MODIFICATION_DATE: case MODIFICATION_DATE:
case MODIFICATION_DATE_BEFORE:
case MODIFICATION_DATE_AFTER:
return SearchFieldConstants.MODIFICATION_DATE; return SearchFieldConstants.MODIFICATION_DATE;
} }
throw new IllegalArgumentException(attributeKind.toString()); throw new IllegalArgumentException(attributeKind.toString());
...@@ -180,8 +184,12 @@ class IndexFieldNameHelper ...@@ -180,8 +184,12 @@ class IndexFieldNameHelper
case SPACE: case SPACE:
return SearchFieldConstants.PREFIX_SPACE + CODE; return SearchFieldConstants.PREFIX_SPACE + CODE;
case REGISTRATION_DATE: case REGISTRATION_DATE:
case REGISTRATION_DATE_BEFORE:
case REGISTRATION_DATE_AFTER:
return SearchFieldConstants.REGISTRATION_DATE; return SearchFieldConstants.REGISTRATION_DATE;
case MODIFICATION_DATE: case MODIFICATION_DATE:
case MODIFICATION_DATE_BEFORE:
case MODIFICATION_DATE_AFTER:
return SearchFieldConstants.MODIFICATION_DATE; return SearchFieldConstants.MODIFICATION_DATE;
} }
throw new IllegalArgumentException(attributeKind.toString()); throw new IllegalArgumentException(attributeKind.toString());
......
...@@ -31,9 +31,17 @@ public enum DataSetAttributeSearchFieldKind implements Serializable, IAttributeS ...@@ -31,9 +31,17 @@ public enum DataSetAttributeSearchFieldKind implements Serializable, IAttributeS
FILE_TYPE("File Type"), FILE_TYPE("File Type"),
REGISTRATION_DATE("Registration date"), REGISTRATION_DATE("Registration date equals"),
MODIFICATION_DATE("Modification date"); MODIFICATION_DATE("Modification date equals"),
REGISTRATION_DATE_BEFORE("Registration date before"),
MODIFICATION_DATE_BEFORE("Modification date before"),
REGISTRATION_DATE_AFTER("Registration date after"),
MODIFICATION_DATE_AFTER("Modification date after");
private final String description; private final String description;
......
...@@ -31,9 +31,17 @@ public enum SampleAttributeSearchFieldKind implements Serializable, IAttributeSe ...@@ -31,9 +31,17 @@ public enum SampleAttributeSearchFieldKind implements Serializable, IAttributeSe
SPACE("Space"), SPACE("Space"),
REGISTRATION_DATE("Registration date"), REGISTRATION_DATE("Registration date equals"),
MODIFICATION_DATE("Modification date"); MODIFICATION_DATE("Modification date equals"),
REGISTRATION_DATE_BEFORE("Registration date before"),
MODIFICATION_DATE_BEFORE("Modification date before"),
REGISTRATION_DATE_AFTER("Registration date after"),
MODIFICATION_DATE_AFTER("Modification date after");
private final String description; private final String description;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment