Skip to content

Commit

Permalink
Various fixes in searching on several places across GUI.
Browse files Browse the repository at this point in the history
  • Loading branch information
Erik Suta committed Feb 20, 2014
1 parent a961b8e commit b2af30f
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 65 deletions.
Expand Up @@ -200,6 +200,7 @@ private void initDownload(AjaxRequestTarget target, Class<? extends ObjectType>
}

private void addOrReplaceTable(RepositoryObjectDataProvider provider) {
provider.setQuery(createQuery());
Form mainForm = (Form) get(ID_MAIN_FORM);

TablePanel table = new TablePanel(ID_TABLE, provider, initColumns(provider.getType()));
Expand Down Expand Up @@ -435,28 +436,10 @@ private TablePanel getListTable() {

private void listObjectsPerformed(AjaxRequestTarget target) {
DebugSearchDto dto = searchModel.getObject();
String nameText = dto.getText();
ObjectTypes selected = dto.getType();

RepositoryObjectDataProvider provider = getTableDataProvider();
if (StringUtils.isNotEmpty(nameText)) {
try {
PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
String normalizedString = normalizer.normalize(nameText);

ObjectFilter substring = SubstringFilter.createSubstring(ObjectType.F_NAME, ObjectType.class, getPrismContext(),
PolyStringNormMatchingRule.NAME, normalizedString);
ObjectQuery query = new ObjectQuery();
query.setFilter(substring);
provider.setQuery(query);
} catch (Exception ex) {
LoggingUtils.logException(LOGGER, "Couldn't create substring filter", ex);
error(getString("pageDebugList.message.queryException", ex.getMessage()));
target.add(getFeedbackPanel());
}
} else {
provider.setQuery(null);
}
provider.setQuery(createQuery());

if (selected != null) {
provider.setType(selected.getClassDefinition());
Expand All @@ -471,6 +454,25 @@ private void listObjectsPerformed(AjaxRequestTarget target) {
target.add(table);
}

private ObjectQuery createQuery(){
DebugSearchDto dto = searchModel.getObject();
String nameText = dto.getText();
ObjectQuery query = new ObjectQuery();

if (StringUtils.isNotEmpty(nameText)) {
PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
String normalizedString = normalizer.normalize(nameText);

ObjectFilter substring = SubstringFilter.createSubstring(ObjectType.F_NAME, ObjectType.class, getPrismContext(),
PolyStringNormMatchingRule.NAME, normalizedString);
query.setFilter(substring);

return query;
}

return null;
}

private void objectEditPerformed(AjaxRequestTarget target, String oid, Class<? extends ObjectType> type) {
PageParameters parameters = new PageParameters();
parameters.add(PageDebugView.PARAM_OBJECT_ID, oid);
Expand Down
Expand Up @@ -221,6 +221,7 @@ public ResourceDto createDataObjectWrapper(PrismObject<ResourceType> obj) {
Collection<SelectorOptions<GetOperationOptions>> options =
SelectorOptions.createCollection(ResourceType.F_CONNECTOR, GetOperationOptions.createResolve());
provider.setOptions(options);
provider.setQuery(createQuery());

return provider;
}
Expand Down
Expand Up @@ -232,15 +232,18 @@ protected void onError(AjaxRequestTarget target, Form<?> form) {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);

List<IColumn> columns = initColumns();
TablePanel table = new TablePanel(ID_TABLE, new AccountContentDataProvider(this,
AccountContentDataProvider provider = new AccountContentDataProvider(this,
new PropertyModel<String>(resourceModel, "oid"), createObjectClassModel()) {

@Override
protected void addInlineMenuToDto(AccountContentDto dto) {
addRowMenuToTable(dto);
}
}, columns);
};
provider.setQuery(createQuery());

List<IColumn> columns = initColumns();
TablePanel table = new TablePanel(ID_TABLE, provider, columns);
table.setOutputMarkupId(true);
mainForm.add(table);

Expand Down
Expand Up @@ -116,8 +116,11 @@ private void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);

ObjectDataProvider provider = new ObjectDataProvider(PageRoles.this, RoleType.class);
provider.setQuery(createQuery());

List<IColumn<RoleType, String>> columns = initColumns();
TablePanel table = new TablePanel<>(ID_TABLE, new ObjectDataProvider(PageRoles.this, RoleType.class), columns);
TablePanel table = new TablePanel<>(ID_TABLE, provider, columns);
table.setOutputMarkupId(true);
mainForm.add(table);

Expand Down Expand Up @@ -331,46 +334,51 @@ private void roleDetailsPerformed(AjaxRequestTarget target, String oid) {
}

private void listRolesPerformed(AjaxRequestTarget target){
ObjectQuery query = createQuery();
ObjectDataProvider provider = getRoleDataProvider();
provider.setQuery(query);

RolesStorage storage = getSessionStorage().getRoles();
storage.setRolesSearch(searchModel.getObject());

TablePanel table = getRoleTable();
target.add(table);
target.add(getFeedbackPanel());
}

private ObjectQuery createQuery(){
RolesSearchDto dto = searchModel.getObject();
String text = dto.getText();
Boolean requestable = dto.getRequestableValue();
ObjectQuery query = new ObjectQuery();

ObjectDataProvider provider = getRoleDataProvider();
if(StringUtils.isNotEmpty(text)){
try{
PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
String normalizedText = normalizer.normalize(text);
PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
String normalizedText = normalizer.normalize(text);

ObjectFilter substring = SubstringFilter.createSubstring(RoleType.F_NAME, RoleType.class, getPrismContext(),
PolyStringNormMatchingRule.NAME, normalizedText);
ObjectFilter substring = SubstringFilter.createSubstring(RoleType.F_NAME, RoleType.class, getPrismContext(),
PolyStringNormMatchingRule.NAME, normalizedText);

if(requestable == null){
query.setFilter(substring);
} else {
EqualsFilter boolFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, requestable);

if (requestable == true){
query.setFilter(AndFilter.createAnd(substring, boolFilter));

} else {
boolFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, false);
EqualsFilter nullFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, null);
OrFilter or = OrFilter.createOr(boolFilter, nullFilter);
query.setFilter(AndFilter.createAnd(substring, or));
}
}
if(requestable == null){
query.setFilter(substring);
} else {
EqualsFilter boolFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, requestable);

provider.setQuery(query);
if (requestable == true){
query.setFilter(AndFilter.createAnd(substring, boolFilter));

}catch (Exception e){
LoggingUtils.logException(LOGGER, "Couldn't create filter", e);
error(getString("pageRoles.message.queryError", e.getMessage()));
target.add(getFeedbackPanel());
} else {
boolFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, false);
EqualsFilter nullFilter = EqualsFilter.createEqual(RoleType.F_REQUESTABLE, RoleType.class, getPrismContext(),
null, null);
OrFilter or = OrFilter.createOr(boolFilter, nullFilter);
query.setFilter(AndFilter.createAnd(substring, or));
}
}

return query;
}else{
if(requestable == null){
query.setFilter(null);
Expand All @@ -391,15 +399,8 @@ private void listRolesPerformed(AjaxRequestTarget target){
query.setFilter(or);
}
}
provider.setQuery(query);
return query;
}

RolesStorage storage = getSessionStorage().getRoles();
storage.setRolesSearch(dto);

TablePanel table = getRoleTable();
target.add(table);
target.add(getFeedbackPanel());
}

private void clearSearchPerformed(AjaxRequestTarget target){
Expand Down
Expand Up @@ -41,7 +41,7 @@ public String getKey(){
public static final String F_REQUESTABLE = "requestable";

private String text;
private Requestable requestable;
private Requestable requestable = Requestable.ALL;

public String getText() {
return text;
Expand Down
Expand Up @@ -117,7 +117,14 @@ protected TasksSearchDto load() {
}

private TasksSearchDto loadTasksSearchDto() {
TasksSearchDto dto = new TasksSearchDto();
TasksStorage storage = getSessionStorage().getTasks();
TasksSearchDto dto = storage.getTasksSearch();

if(dto == null){
dto = new TasksSearchDto();
dto.setShowSubtasks(false);
}

if (dto.getStatus() == null) {
dto.setStatus(TaskDtoExecutionStatusFilter.ALL);
}
Expand All @@ -142,7 +149,7 @@ private void initLayout() {
options.setResolveOwnerRef(false);
TaskDtoProvider provider = new TaskDtoProvider(PageTasks.this, options);

provider.setQuery(createTaskQuery(null, null, false)); // show only root tasks
provider.setQuery(createTaskQuery());
TablePanel<TaskDto> taskTable = new TablePanel<TaskDto>(ID_TASK_TABLE, provider,
taskColumns);
taskTable.setOutputMarkupId(true);
Expand Down Expand Up @@ -1038,19 +1045,28 @@ private void synchronizeTasksPerformed(AjaxRequestTarget target) {
private void searchFilterPerformed(AjaxRequestTarget target) {
TasksSearchDto dto = searchModel.getObject();

ObjectQuery query = createTaskQuery(dto.getStatus(), dto.getCategory(), dto.isShowSubtasks());
// ObjectQuery query = createTaskQuery(dto.getStatus(), dto.getCategory(), dto.isShowSubtasks());
ObjectQuery query = createTaskQuery();

TablePanel panel = getTaskTable();
DataTable table = panel.getDataTable();
TaskDtoProvider provider = (TaskDtoProvider) table.getDataProvider();
provider.setQuery(query);
table.setCurrentPage(0);

TasksStorage storage = getSessionStorage().getTasks();
storage.setTasksSearch(dto);

target.add(getFeedbackPanel());
target.add(getTaskTable());
}

private ObjectQuery createTaskQuery(TaskDtoExecutionStatusFilter status, String category, Boolean showSubtasks) {
private ObjectQuery createTaskQuery(){
TasksSearchDto dto = searchModel.getObject();
TaskDtoExecutionStatusFilter status = dto.getStatus();
String category = dto.getCategory();
boolean showSubtasks = dto.isShowSubtasks();

ObjectQuery query = null;
try {
List<ObjectFilter> filters = new ArrayList<ObjectFilter>();
Expand Down

0 comments on commit b2af30f

Please sign in to comment.