Skip to content

Commit

Permalink
Search refactoring (to use BasicSearchPanel) on PageResource, PageCon…
Browse files Browse the repository at this point in the history
…tentAccounts, PageReports, PageCreatedReports and PageDebugList. Repaired few minor issues on the way.
  • Loading branch information
Erik Suta committed Feb 27, 2014
1 parent fe63297 commit 47ad3e1
Show file tree
Hide file tree
Showing 10 changed files with 89 additions and 232 deletions.
Expand Up @@ -25,18 +25,8 @@
<label class="sr-only"><wicket:message key="pageDebugList.objectType"/></label>
<select class="form-control input-sm" wicket:id="choice"/>
</div>
<div class="form-group">
<label class="sr-only"><wicket:message key="pageDebugList.searchTextPlaceholder"/></label>
<input class="form-control input-sm" wicket:id="searchText"
wicket:message="placeholder:pageDebugList.searchTextPlaceholder">
</div>

<span class="btn-group">
<a class="btn btn-default btn-sm" wicket:id="searchButton"/>
<a class="btn btn-danger btn-sm" wicket:id="searchClear" wicket:message="title:PageBase.button.tooltip.clearSearch">
<i class="fa fa-trash-o"/>
</a>
</span>
<div wicket:id="basicSearch" />
</form>

<form wicket:id="mainForm" class="clearfix form-horizontal">
Expand Down
Expand Up @@ -37,8 +37,7 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.BasicSearchPanel;
import com.evolveum.midpoint.web.component.data.RepositoryObjectDataProvider;
import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
Expand All @@ -54,11 +53,8 @@
import com.evolveum.midpoint.web.page.admin.configuration.dto.DebugConfDialogDto;
import com.evolveum.midpoint.web.page.admin.configuration.dto.DebugObjectItem;
import com.evolveum.midpoint.web.page.admin.configuration.dto.DebugSearchDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UsersDto;
import com.evolveum.midpoint.web.session.ConfigurationStorage;
import com.evolveum.midpoint.web.session.UsersStorage;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.web.util.SearchFormEnterBehavior;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
Expand All @@ -79,7 +75,6 @@
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.*;
import org.apache.wicket.request.mapper.parameter.PageParameters;
Expand Down Expand Up @@ -109,9 +104,7 @@ public class PageDebugList extends PageAdminConfiguration {
private static final String ID_EXPORT = "export";
private static final String ID_EXPORT_ALL = "exportAll";
private static final String ID_SEARCH_FORM = "searchForm";
private static final String ID_SEARCH_TEXT = "searchText";
private static final String ID_SEARCH_BUTTON = "searchButton";
private static final String ID_SEARCH_CLEAR = "searchClear";
private static final String ID_BASIC_SEARCH = "basicSearch";

private static final String PRINT_LABEL_USER = "User ";
private static final String PRINT_LABEL_SHADOW = "Shadow ";
Expand Down Expand Up @@ -371,38 +364,24 @@ protected void onUpdate(AjaxRequestTarget target) {
}
});

final AjaxSubmitButton searchButton = new AjaxSubmitButton(ID_SEARCH_BUTTON,
new StringResourceModel("pageDebugList.button.search", this, null)) {
BasicSearchPanel<DebugSearchDto> basicSearch = new BasicSearchPanel<DebugSearchDto>(ID_BASIC_SEARCH) {

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(getFeedbackPanel());
protected IModel<String> createSearchTextModel() {
return new PropertyModel<>(searchModel, DebugSearchDto.F_TEXT);
}

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
protected void searchPerformed(AjaxRequestTarget target) {
listObjectsPerformed(target);
}
};
searchForm.add(searchButton);

final TextField search = new TextField(ID_SEARCH_TEXT, new PropertyModel(searchModel, DebugSearchDto.F_TEXT));
search.add(new SearchFormEnterBehavior(searchButton));
searchForm.add(search);

AjaxSubmitButton clearButton = new AjaxSubmitButton(ID_SEARCH_CLEAR) {

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form){
clearSearchPerformed(target);
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(getFeedbackPanel());
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageDebugList.this.clearSearchPerformed(target);
}
};
searchForm.add(clearButton);
searchForm.add(basicSearch);
}

private IModel<List<ObjectTypes>> createChoiceModel(final IChoiceRenderer<ObjectTypes> renderer) {
Expand Down
Expand Up @@ -27,6 +27,7 @@
<select class="form-control input-sm" wicket:id="reportType" />
</div>

<!-- REMOVE COMMENT WHEN FILETYPE IS IN ReportOutputType -->
<!--
<div class="form-group">
<label class="sr-only">
Expand All @@ -36,18 +37,7 @@
</div>
-->

<div class="form-group">
<label class="sr-only"><wicket:message key="searchForm.searchTextPlaceholder" /></label>
<input class="form-control input-sm" wicket:id="searchText"
wicket:message="placeholder:searchForm.searchTextPlaceholder">
</div>

<span class="btn-group">
<a class="btn btn-default btn-sm" wicket:id="searchButton"/>
<a class="btn btn-danger btn-sm" wicket:message="title:PageBase.button.tooltip.clearSearch" wicket:id="searchClear">
<i class="fa fa-trash-o"/>
</a>
</span>
<div wicket:id="basicSearch" />
</form>

<form wicket:id="mainForm" class="clearfix">
Expand Down
Expand Up @@ -30,7 +30,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.AjaxDownloadBehaviorFromStream;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.BasicSearchPanel;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.component.data.column.*;
Expand All @@ -45,7 +45,6 @@
import com.evolveum.midpoint.web.page.admin.reports.dto.ReportOutputSearchDto;
import com.evolveum.midpoint.web.session.CreatedReportsStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.SearchFormEnterBehavior;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ExportType;
Expand Down Expand Up @@ -91,14 +90,12 @@ public class PageCreatedReports extends PageAdminReports {
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_CREATED_REPORTS_TABLE = "table";
private static final String ID_SEARCH_FORM = "searchForm";
private static final String ID_SEARCH_TEXT = "searchText";
private static final String ID_SEARCH_BUTTON = "searchButton";
private static final String ID_SEARCH_CLEAR = "searchClear";
private static final String ID_BASIC_SEARCH = "basicSearch";
private static final String ID_FILTER_FILE_TYPE = "filetype";
private static final String ID_REPORT_TYPE_SELECT = "reportType";
private static final String ID_CONFIRM_DELETE = "confirmDeletePopup";

private IModel<ReportOutputSearchDto> filterModel;
private IModel<ReportOutputSearchDto> searchModel;
private IModel<ReportDeleteDialogDto> deleteModel = new Model<ReportDeleteDialogDto>();
private ReportOutputType currentReport;

Expand All @@ -111,7 +108,7 @@ public PageCreatedReports(PageParameters pageParameters, PageBase previousPage){

setPreviousPage(previousPage);

filterModel = new LoadableModel<ReportOutputSearchDto>() {
searchModel = new LoadableModel<ReportOutputSearchDto>() {
@Override
protected ReportOutputSearchDto load() {
CreatedReportsStorage storage = getSessionStorage().getCreatedReports();
Expand Down Expand Up @@ -201,30 +198,10 @@ private void initSearchForm(){
Form searchForm = new Form(ID_SEARCH_FORM);
add(searchForm);

final AjaxSubmitButton searchButton = new AjaxSubmitButton(ID_SEARCH_BUTTON,
createStringResource("pageCreatedReports.button.searchButton")) {

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form){
searchPerformed(target);
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form){
target.add(getFeedbackPanel());
}
};
searchForm.add(searchButton);

final TextField searchText = new TextField(ID_SEARCH_TEXT, new PropertyModel<String>(filterModel,
ReportOutputSearchDto.F_TEXT));
searchText.add(new SearchFormEnterBehavior(searchButton));
searchForm.add(searchText);

//TODO - commented until FileType property will be available in ReportOutputType
/*
DropDownChoice filetypeSelect = new DropDownChoice(ID_FILTER_FILE_TYPE,
new PropertyModel(filterModel, ReportOutputDto.F_FILE_TYPE),
new PropertyModel(searchModel, ReportOutputDto.F_FILE_TYPE),
new AbstractReadOnlyModel<List<ExportType>>() {
@Override
Expand All @@ -249,7 +226,7 @@ protected void onUpdate(AjaxRequestTarget target) {
*/

DropDownChoice reportTypeSelect = new DropDownChoice(ID_REPORT_TYPE_SELECT,
new PropertyModel(filterModel, ReportOutputSearchDto.F_REPORT_TYPE),
new PropertyModel(searchModel, ReportOutputSearchDto.F_REPORT_TYPE),
new AbstractReadOnlyModel<List<String>>() {

@Override
Expand All @@ -273,43 +250,50 @@ protected void onUpdate(AjaxRequestTarget target) {
}
});
reportTypeSelect.setOutputMarkupId(true);
reportTypeSelect.setDefaultModelObject(null);
reportTypeSelect.setNullValid(true);

if(getPageParameters().get(OnePageParameterEncoder.PARAMETER) != null){
createReportTypeList();

for(String key: filterModel.getObject().getReportTypeMap().keySet()){
if(filterModel.getObject().getReportTypeMap().get(key).equals(getPageParameters().get(OnePageParameterEncoder.PARAMETER).toString())){
for(String key: searchModel.getObject().getReportTypeMap().keySet()){
if(searchModel.getObject().getReportTypeMap().get(key).equals(getPageParameters().get(OnePageParameterEncoder.PARAMETER).toString())){
reportTypeSelect.getModel().setObject(key);
}
}
}
searchForm.add(reportTypeSelect);

AjaxSubmitButton clearButton = new AjaxSubmitButton(ID_SEARCH_CLEAR) {
BasicSearchPanel<ReportOutputSearchDto> basicSearch = new BasicSearchPanel<ReportOutputSearchDto>(ID_BASIC_SEARCH) {

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form){
clearSearchPerformed(target);
protected IModel<String> createSearchTextModel() {
return new PropertyModel<>(searchModel, ReportOutputSearchDto.F_TEXT);
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(getFeedbackPanel());
protected void searchPerformed(AjaxRequestTarget target) {
PageCreatedReports.this.searchPerformed(target);
}

@Override
protected void clearSearchPerformed(AjaxRequestTarget target) {
PageCreatedReports.this.clearSearchPerformed(target);
}
};
searchForm.add(clearButton);
searchForm.add(basicSearch);
}

//TODO - commented until FileType property will be available in ReportOutputType
/*
private List<ExportType> createFileTypeList(){
List<ExportType> list = new ArrayList<ExportType>();
Collections.addAll(list, ExportType.values());
return list;
}
*/

private List<String> createReportTypeList(){
filterModel.getObject().getReportTypeMap().clear();
searchModel.getObject().getReportTypeMap().clear();
List<String> reportTypeNames = new ArrayList<String>();

List<PrismObject<ReportType>> reportTypes = WebModelUtils.searchObjects(ReportType.class, null, null, getPageBase());
Expand All @@ -320,7 +304,7 @@ private List<String> createReportTypeList(){
if(reportType.isParent()){
String name = WebMiscUtil.getName(o);

filterModel.getObject().getReportTypeMap().put(name, reportType.getOid());
searchModel.getObject().getReportTypeMap().put(name, reportType.getOid());

reportTypeNames.add(name);
}
Expand Down Expand Up @@ -563,7 +547,7 @@ private ObjectQuery createReportTypeRefQuery(String oid){
}

private ObjectQuery createQuery(){
ReportOutputSearchDto dto = filterModel.getObject();
ReportOutputSearchDto dto = searchModel.getObject();
ObjectQuery query = null;

if(StringUtils.isEmpty(dto.getText())){
Expand Down Expand Up @@ -618,7 +602,7 @@ private void fileTypeFilterPerformed(AjaxRequestTarget target){
}

private void reportTypeFilterPerformed(AjaxRequestTarget target){
ReportOutputSearchDto dto = filterModel.getObject();
ReportOutputSearchDto dto = searchModel.getObject();
String oid = dto.getReportTypeMap().get(dto.getReportType());
ObjectQuery query;

Expand All @@ -634,7 +618,7 @@ private void reportTypeFilterPerformed(AjaxRequestTarget target){
provider.setQuery(query);

CreatedReportsStorage storage = getSessionStorage().getCreatedReports();
storage.setReportsSearch(filterModel.getObject());
storage.setReportsSearch(searchModel.getObject());
panel.setCurrentPage(storage.getReportsPaging());

target.add(panel);
Expand All @@ -651,7 +635,7 @@ private void searchPerformed(AjaxRequestTarget target){
provider.setQuery(query);

CreatedReportsStorage storage = getSessionStorage().getCreatedReports();
storage.setReportsSearch(filterModel.getObject());
storage.setReportsSearch(searchModel.getObject());
panel.setCurrentPage(storage.getReportsPaging());

target.add(panel);
Expand All @@ -664,15 +648,15 @@ private void downloadPerformed(AjaxRequestTarget target, ReportOutputType report
}

private void clearSearchPerformed(AjaxRequestTarget target){
filterModel.setObject(new ReportOutputSearchDto());
searchModel.setObject(new ReportOutputSearchDto());

TablePanel panel = getReportOutputTable();
DataTable table = panel.getDataTable();
ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider();
provider.setQuery(null);

CreatedReportsStorage storage = getSessionStorage().getCreatedReports();
storage.setReportsSearch(filterModel.getObject());
storage.setReportsSearch(searchModel.getObject());
panel.setCurrentPage(storage.getReportsPaging());

target.add(get(ID_SEARCH_FORM));
Expand Down
Expand Up @@ -28,18 +28,7 @@
</label>
</div>

<div class="form-group">
<label class="sr-only"><wicket:message key="searchForm.searchTextPlaceholder" /></label>
<input class="form-control input-sm" wicket:id="searchText"
wicket:message="placeholder:searchForm.searchTextPlaceholder">
</div>

<span class="btn-group">
<a class="btn btn-default btn-sm" wicket:id="searchButton"/>
<a class="btn btn-danger btn-sm" wicket:message="title:PageBase.button.tooltip.clearSearch" wicket:id="searchClear">
<i class="fa fa-trash-o"/>
</a>
</span>
<div wicket:id="basicSearch" />
</form>

<form wicket:id="mainForm" class="clearfix form-horizontal">
Expand Down

0 comments on commit 47ad3e1

Please sign in to comment.