Skip to content

Commit

Permalink
Merge branch 'gui-devel' of github.com:Evolveum/midpoint into gui-devel
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 18, 2014
2 parents d766475 + 6aa62cd commit 238f4b1
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 153 deletions.
Expand Up @@ -27,22 +27,19 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.AceEditor;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.form.TextAreaFormGroup;
import com.evolveum.midpoint.web.component.form.TextFormGroup;
import com.evolveum.midpoint.web.component.util.LoadableModel;
import com.evolveum.midpoint.web.component.util.PrismPropertyModel;
import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration;
import com.evolveum.midpoint.web.page.admin.configuration.dto.InputStringValidator;
import com.evolveum.midpoint.web.page.admin.reports.component.AceEditorPanel;
import com.evolveum.midpoint.web.page.admin.reports.component.ReportConfigurationPanel;
import com.evolveum.midpoint.web.page.error.PageError;
import com.evolveum.midpoint.web.util.Base64Model;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;

import org.apache.commons.lang.StringUtils;
Expand Down Expand Up @@ -85,6 +82,11 @@ public class PageReport<T extends Serializable> extends PageAdminReports {
private static final String ID_SAVE_BUTTON = "save";
private static final String ID_CANCEL_BUTTON = "cancel";

private static final int FULL_XML_TAB_INDEX = 3;
private int previousTabIndex = 0;
private AceEditorPanel fullXmlEditorPanel;
private String fullXmlEditorPanelString;

private LoadableModel<PrismObject<ReportType>> model;

public PageReport() {
Expand Down Expand Up @@ -148,7 +150,9 @@ public WebMarkupContainer getPanel(String panelId) {
@Override
public WebMarkupContainer getPanel(String panelId) {
IModel<String> title = PageReport.this.createStringResource("PageReport.fullXml");
return new AceEditorPanel(panelId, title, createFullXmlModel());
fullXmlEditorPanelString = getStringFromObject();
fullXmlEditorPanel = new AceEditorPanel(panelId, title, createFullXmlModel());
return fullXmlEditorPanel;
}
});

Expand All @@ -161,7 +165,19 @@ protected WebMarkupContainer newLink(final String linkId, final int index){

@Override
public void onSubmit(){
setSelectedTab(index);
if(previousTabIndex == FULL_XML_TAB_INDEX){
fullXmlEditorPanelString = fullXmlEditorPanel.getEditor().getInput();

if(isReportValid(fullXmlEditorPanel.getEditor().getInput(), true)){
setSelectedTab(index);
previousTabIndex = index;
} else {
setSelectedTab(previousTabIndex);
}
} else{
setSelectedTab(index);
previousTabIndex = index;
}
}
};
}
Expand All @@ -172,22 +188,56 @@ public void onSubmit(){
initButtons(mainForm);
}

private boolean isReportValid(String object, boolean showError){
OperationResult result = new OperationResult(OPERATION_VALIDATE_REPORT);

try {
Holder<PrismObject<ReportType>> reportHolder = new Holder<PrismObject<ReportType>>(null);
validateObject(object, reportHolder, true, result);

if(result.isAcceptable()){
return true;
}

} catch (Exception ex){
if(showError){
result.recordFatalError("Could not save object.", ex);
showResultInSession(result);
}
}

return false;
}

private String getStringFromObject(){
PrismObject report = model.getObject();
if (report == null) {
return null;
}

try {
return getPrismContext().serializeObjectToString(report, PrismContext.LANG_XML);
} catch (SchemaException ex) {
error("Could not create XML object from report.");
throw new RestartResponseException(PageError.class);
}
}

private IModel<String> createFullXmlModel() {
return new IModel<String>() {

@Override
public String getObject() {
PrismObject report = model.getObject();
if (report == null) {
return null;
}

try {
return getPrismContext().serializeObjectToString(report, PrismContext.LANG_XML);
} catch (SchemaException ex) {
//todo improve error handling, show message on error page, also stacktrace...
//also add validator, which should not validate xml which can't be parsed
throw new RestartResponseException(PageError.class);
if(fullXmlEditorPanel.getEditor().getInput() != null){
if(fullXmlEditorPanel.getEditor().getInput().isEmpty()){
return fullXmlEditorPanelString;
} else if(isReportValid(fullXmlEditorPanel.getEditor().getInput(), false)){
return fullXmlEditorPanelString;
} else {
return fullXmlEditorPanel.getEditor().getInput();
}
} else {
return fullXmlEditorPanelString;
}
}

Expand All @@ -200,17 +250,14 @@ public void setObject(String object) {

OperationResult result = new OperationResult(OPERATION_VALIDATE_REPORT);

try {
if(isReportValid(object, false)){
Holder<PrismObject<ReportType>> reportHolder = new Holder<PrismObject<ReportType>>(null);
validateObject(object, reportHolder, true, result);

if(result.isAcceptable()){
model.setObject(reportHolder.getValue());
}
} catch (Exception ex){
result.recordFatalError("Could not save object.", ex);
showResultInSession(result);
model.setObject(reportHolder.getValue());
}

fullXmlEditorPanelString = object;
}

@Override
Expand Down
Expand Up @@ -46,4 +46,8 @@ private void initPanelLayout() {
editor.setReadonly(false);
add(editor);
}

public AceEditor getEditor(){
return (AceEditor)get(ID_EDITOR);
}
}
Expand Up @@ -56,7 +56,7 @@
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.admin.users.dto.UserListItemDto;
import com.evolveum.midpoint.web.security.MidPointApplication;
import com.evolveum.midpoint.web.session.ResourceContentStorage;
import com.evolveum.midpoint.web.session.ResourcesStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -122,7 +122,7 @@ public PageContentAccounts() {

@Override
protected AccountContentSearchDto load() {
ResourceContentStorage storage = getSessionStorage().getResourceContent();
ResourcesStorage storage = getSessionStorage().getResources();
AccountContentSearchDto dto = storage.getAccountContentSearch();

if(dto == null){
Expand Down Expand Up @@ -711,7 +711,7 @@ private void clearSearchPerformed(AjaxRequestTarget target){
AccountContentDataProvider provider = (AccountContentDataProvider)table.getDataProvider();
provider.setQuery(null);

ResourceContentStorage storage = getSessionStorage().getResourceContent();
ResourcesStorage storage = getSessionStorage().getResources();
storage.setAccountContentSearch(searchModel.getObject());
storage.setAccountContentPaging(null);
panel.setCurrentPage(null);
Expand Down
Expand Up @@ -36,7 +36,7 @@
import com.evolveum.midpoint.web.page.PageBase;
import com.evolveum.midpoint.web.page.admin.users.dto.OrgTableDto;
import com.evolveum.midpoint.web.page.admin.users.dto.OrgUnitSearchDto;
import com.evolveum.midpoint.web.session.OrgUnitStorage;
import com.evolveum.midpoint.web.session.UsersStorage;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;

Expand Down Expand Up @@ -104,7 +104,7 @@ public OrgUnitBrowser(String id) {

@Override
protected OrgUnitSearchDto load() {
OrgUnitStorage storage = getPageBase().getSessionStorage().getOrgUnits();
UsersStorage storage = getPageBase().getSessionStorage().getUsers();
OrgUnitSearchDto dto = storage.getOrgUnitSearch();

if(dto == null){
Expand Down Expand Up @@ -345,7 +345,7 @@ private void searchPerformed(AjaxRequestTarget target) {
ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider();
provider.setQuery(query);

OrgUnitStorage storage = getPageBase().getSessionStorage().getOrgUnits();
UsersStorage storage = getPageBase().getSessionStorage().getUsers();
storage.setOrgUnitSearch(searchModel.getObject());
panel.setCurrentPage(storage.getOrgUnitPaging());

Expand All @@ -361,7 +361,7 @@ private void clearSearchPerformed(AjaxRequestTarget target){
ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider();
provider.setQuery(null);

OrgUnitStorage storage = getPageBase().getSessionStorage().getOrgUnits();
UsersStorage storage = getPageBase().getSessionStorage().getUsers();
storage.setOrgUnitSearch(searchModel.getObject());
panel.setCurrentPage(storage.getOrgUnitPaging());

Expand Down

This file was deleted.

This file was deleted.

Expand Up @@ -16,6 +16,7 @@
package com.evolveum.midpoint.web.session;

import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.web.page.admin.resources.content.dto.AccountContentSearchDto;
import com.evolveum.midpoint.web.page.admin.resources.dto.ResourceSearchDto;

import java.io.Serializable;
Expand All @@ -35,6 +36,16 @@ public class ResourcesStorage implements Serializable{
* */
private ObjectPaging resourcePaging;

/**
* DTO used for search in {@link com.evolveum.midpoint.web.page.admin.resources.content.PageContentAccounts}
* */
private AccountContentSearchDto accountContentSearch;

/**
* Paging DTO used in table on page {@link com.evolveum.midpoint.web.page.admin.resources.content.PageContentAccounts}
* */
private ObjectPaging accountContentPaging;

public ResourceSearchDto getResourceSearch() {
return resourceSearch;
}
Expand All @@ -50,4 +61,20 @@ public ObjectPaging getResourcePaging() {
public void setResourcePaging(ObjectPaging resourcePaging) {
this.resourcePaging = resourcePaging;
}

public AccountContentSearchDto getAccountContentSearch() {
return accountContentSearch;
}

public void setAccountContentSearch(AccountContentSearchDto accountContentSearch) {
this.accountContentSearch = accountContentSearch;
}

public ObjectPaging getAccountContentPaging() {
return accountContentPaging;
}

public void setAccountContentPaging(ObjectPaging accountContentPaging) {
this.accountContentPaging = accountContentPaging;
}
}

0 comments on commit 238f4b1

Please sign in to comment.