Skip to content

Commit

Permalink
Merge branch 'master' into feature/dependency-analyze
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Mar 31, 2016
2 parents b8d8281 + b97d75b commit 2c0b951
Show file tree
Hide file tree
Showing 35 changed files with 935 additions and 36 deletions.
Expand Up @@ -20,7 +20,6 @@
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
Expand All @@ -34,9 +33,7 @@
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;

import java.util.ArrayList;
Expand Down Expand Up @@ -75,6 +72,7 @@ public class AssignmentEditorDto extends SelectableBean implements Comparable<As

private boolean showEmpty = false;
private boolean minimized = true;
private boolean editable = true;

private Boolean isOrgUnitManager = Boolean.FALSE;
private AssignmentType newAssignment;
Expand Down Expand Up @@ -102,6 +100,13 @@ public AssignmentEditorDto(UserDtoStatus status, AssignmentType assignment, Page
// ConstructionType construction = oldAssignment.getConstruction();
// newAssignment.setConstruction(construction.clone());
// }
List<Item> itemsList = newValue.getItems();
if (itemsList != null && itemsList.size() > 0){
Item item = itemsList.get(0);
if (item != null && item.getDefinition() != null) {
this.editable = item.getDefinition().canAdd() || item.getDefinition().canModify();
}
}

this.tenantRef = loadTenantOrgReference(assignment, assignment.getTenantRef());
this.orgRef = loadTenantOrgReference(assignment, assignment.getOrgRef());
Expand Down Expand Up @@ -378,7 +383,15 @@ public void setShowEmpty(boolean showEmpty) {
this.showEmpty = showEmpty;
}

public UserDtoStatus getStatus() {
public boolean isEditable() {
return editable;
}

public void setEditable(boolean editable) {
this.editable = editable;
}

public UserDtoStatus getStatus() {
return status;
}

Expand Down Expand Up @@ -571,6 +584,8 @@ public boolean equals(Object o) {
return false;
if (showEmpty != that.showEmpty)
return false;
if (editable != that.editable)
return false;
if (altName != null ? !altName.equals(that.altName) : that.altName != null)
return false;
if (attributes != null ? !attributes.equals(that.attributes) : that.attributes != null)
Expand Down
Expand Up @@ -324,6 +324,7 @@ public void setObject(Date object) {
private void initBodyLayout(WebMarkupContainer body) {
TextArea description = new TextArea<>(ID_DESCRIPTION,
new PropertyModel<String>(getModel(), AssignmentEditorDto.F_DESCRIPTION));
description.setEnabled(getModel().getObject().isEditable());
body.add(description);

WebMarkupContainer relationContainer = new WebMarkupContainer(ID_RELATION_CONTAINER);
Expand All @@ -349,6 +350,7 @@ public boolean isVisible() {
"AssignmentEditorPanel.member", "AssignmentEditorPanel.manager", null);
relation.setOutputMarkupId(true);
relation.setOutputMarkupPlaceholderTag(true);
relation.setPanelEnabled(getModel().getObject().isEditable());
relation.add(new VisibleEnableBehaviour(){

@Override
Expand Down Expand Up @@ -401,14 +403,17 @@ public boolean isVisible() {
DropDownChoicePanel administrativeStatus = WebComponentUtil.createEnumPanel(ActivationStatusType.class, ID_ADMINISTRATIVE_STATUS,
new PropertyModel<ActivationStatusType>(getModel(), AssignmentEditorDto.F_ACTIVATION + "."
+ ActivationType.F_ADMINISTRATIVE_STATUS.getLocalPart()), this);
administrativeStatus.setEnabled(getModel().getObject().isEditable());
activationBlock.add(administrativeStatus);

DateInput validFrom = new DateInput(ID_VALID_FROM, createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
AssignmentEditorDto.F_ACTIVATION + ".validFrom")));
validFrom.setEnabled(getModel().getObject().isEditable());
activationBlock.add(validFrom);

DateInput validTo = new DateInput(ID_VALID_TO, createDateModel(new PropertyModel<XMLGregorianCalendar>(getModel(),
AssignmentEditorDto.F_ACTIVATION + ".validTo")));
validTo.setEnabled(getModel().getObject().isEditable());
activationBlock.add(validTo);
WebMarkupContainer targetContainer = new WebMarkupContainer(ID_TARGET_CONTAINER);
targetContainer.add(new VisibleEnableBehaviour() {
Expand Down Expand Up @@ -479,6 +484,7 @@ protected QName getSearchProperty() {
return OrgType.F_NAME;
}
};
tenantRef.setPanelEnabled(getModel().getObject().isEditable());
tenantRefContainer.add(tenantRef);
tenantRefContainer.add(new VisibleEnableBehaviour(){

Expand Down Expand Up @@ -525,6 +531,7 @@ protected QName getSearchProperty() {
}
};
tenantRefContainer.add(tenantRef);
tenantRef.setEnabled(getModel().getObject().isEditable());
tenantRefContainer.add(new VisibleEnableBehaviour(){

@Override
Expand Down Expand Up @@ -575,6 +582,7 @@ public boolean isVisible() {
return AssignmentEditorDtoType.ACCOUNT_CONSTRUCTION.equals(dto.getType());
}
});
attributes.setEnabled(getModel().getObject().isEditable());
constructionContainer.add(attributes);

ListView<ACAttributeDto> attribute = new ListView<ACAttributeDto>(ID_ATTRIBUTE, attributesModel){
Expand Down
Expand Up @@ -131,4 +131,9 @@ private AttributeAppender prepareButtonCssClass(String cssClass){
* Override to provide custom action on change state event
* */
protected void onStateChanged(AjaxRequestTarget target, Boolean newValue){}

public void setPanelEnabled(boolean isEnabled){
get(ID_BUTTON_ONE).setEnabled(isEnabled);
get(ID_BUTTON_TWO).setEnabled(isEnabled);
}
}
Expand Up @@ -108,7 +108,6 @@ private void initLayout() {
WebMarkupContainer assignments = new WebMarkupContainer(ID_ASSIGNMENTS);
assignments.setOutputMarkupId(true);
add(assignments);

AssignmentTablePanel panel = new AssignmentTablePanel(ID_ASSIGNMENTS_PANEL,
createStringResource("FocusType.assignment"), assignmentsModel) {

Expand Down
Expand Up @@ -81,7 +81,9 @@ public ID getItemDefinition() {
}

public boolean isVisible() {
if (item.getDefinition().isOperational()) { // TODO ...or use itemDefinition instead?
if (item.getDefinition().isEmphasized()){
return true;
} else if (item.getDefinition().isOperational()) { // TODO ...or use itemDefinition instead?
return false;
} else if (container != null) {
return container.isItemVisible(this);
Expand Down
Expand Up @@ -21,8 +21,10 @@
<label class="control-label" style="vertical-align: top;">
<i class="fa fa-lg" wicket:id="advancedCheck"/>
</label>
<textarea class="form-control input-sm" rows="1" wicket:id="advancedArea"
style="height: 30px; overflow: hidden;"></textarea>
<textarea class="form-control input-sm" rows="2" wicket:id="advancedArea"
style="width: 220px; height: 60px; overflow: hidden;"
wicket:message="placeholder:SearchPanel.insertFilterXml"></textarea>
<span class="help-block" wicket:id="advancedError"/>
</div>

<wicket:container wicket:id="items">
Expand Down
Expand Up @@ -80,6 +80,7 @@ public class SearchPanel extends BasePanel<Search> {
private static final String ID_MORE_GROUP = "moreGroup";
private static final String ID_ADVANCED_AREA = "advancedArea";
private static final String ID_ADVANCED_CHECK = "advancedCheck";
private static final String ID_ADVANCED_ERROR= "advancedError";

private LoadableModel<MoreDialogDto> moreDialogModel;

Expand Down Expand Up @@ -186,8 +187,6 @@ public void onClick(AjaxRequestTarget target) {

Label advancedCheck = new Label(ID_ADVANCED_CHECK);
advancedCheck.add(AttributeAppender.append("class", createAdvancedGroupLabelStyle()));
advancedCheck.add(AttributeModifier.append("title",
new PropertyModel<String>(getModel(), Search.F_ADVANCED_ERROR)));
advancedGroup.add(advancedCheck);

final TextArea advancedArea = new TextArea(ID_ADVANCED_AREA,
Expand All @@ -208,6 +207,23 @@ protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
}
});
advancedGroup.add(advancedArea);

Label advancedError = new Label(ID_ADVANCED_ERROR,
new PropertyModel<String>(getModel(), Search.F_ADVANCED_ERROR));
advancedError.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
Search search = getModelObject();

if (!search.isShowAdvanced()) {
return false;
}

return StringUtils.isNotEmpty(search.getAdvancedError());
}
});
advancedGroup.add(advancedError);
}

private IModel<String> createAdvancedGroupLabelStyle() {
Expand All @@ -216,9 +232,8 @@ private IModel<String> createAdvancedGroupLabelStyle() {
@Override
public String getObject() {
Search search = getModelObject();
PrismContext ctx = getPageBase().getPrismContext();

return search.isAdvancedQueryValid(ctx) ? "fa-check-circle-o" : "fa-exclamation-triangle";
return StringUtils.isEmpty(search.getAdvancedError()) ? "fa-check-circle-o" : "fa-exclamation-triangle";
}
};
}
Expand All @@ -229,9 +244,8 @@ private IModel<String> createAdvancedGroupStyle() {
@Override
public String getObject() {
Search search = getModelObject();
PrismContext ctx = getPageBase().getPrismContext();

return search.isAdvancedQueryValid(ctx) ? "has-success" : "has-error";
return StringUtils.isEmpty(search.getAdvancedError()) ? "has-success" : "has-error";
}
};
}
Expand Down Expand Up @@ -416,6 +430,11 @@ private void advancedPerformed(AjaxRequestTarget target) {
}

private void updateAdvancedArea(Component area, AjaxRequestTarget target) {
Search search = getModelObject();
PrismContext ctx = getPageBase().getPrismContext();

search.isAdvancedQueryValid(ctx);

target.prependJavaScript("storeTextAreaSize('" + area.getMarkupId() + "');");
target.appendJavaScript("restoreTextAreaSize('" + area.getMarkupId() + "');");

Expand Down
Expand Up @@ -23,6 +23,7 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchFactory;
Expand Down Expand Up @@ -241,14 +242,19 @@ public void yesPerformed(AjaxRequestTarget target) {

DebugSearchDto dto = searchModel.getObject();
Class type = dto.getType().getClassDefinition();
addOrReplaceTable(new RepositoryObjectDataProvider(this, type) {
RepositoryObjectDataProvider provider = new RepositoryObjectDataProvider(this, type) {

@Override
protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
ConfigurationStorage storage = getSessionStorage().getConfiguration();
storage.setDebugSearchPaging(paging);
}
});
};
DebugSearchDto search = searchModel.getObject();
ObjectQuery query = search.getSearch().createObjectQuery(getPrismContext());
provider.setQuery(query);

addOrReplaceTable(provider);

PageDebugDownloadBehaviour ajaxDownloadBehavior = new PageDebugDownloadBehaviour();
main.add(ajaxDownloadBehavior);
Expand Down
Expand Up @@ -185,4 +185,9 @@ private void setToDefault(){
public Class<T> getObjectTypeClass(){
return ChooseTypePanel.this.getModelObject().getType();
}

public void setPanelEnabled(boolean isEnabled){
get(ID_LINK_CHOOSE).setEnabled(isEnabled);
get(ID_LINK_REMOVE).setEnabled(isEnabled);
}
}
Expand Up @@ -247,6 +247,10 @@ protected void handleNotSuccessOrHandledErrorInIterator(OperationResult result)
}
};

Search search = searchModel.getObject();
ObjectQuery query = search.createObjectQuery(getPrismContext());
provider.setQuery(query);

return provider;
}

Expand Down
Expand Up @@ -128,6 +128,9 @@ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
storage.setRolesPaging(paging);
}
};
Search search = searchModel.getObject();
ObjectQuery query = search.createObjectQuery(getPrismContext());
provider.setQuery(query);

List<IColumn<RoleType, String>> columns = initColumns();

Expand Down
Expand Up @@ -328,7 +328,10 @@ public UserListItemDto createDataObjectWrapper(PrismObject<UserType> obj) {
return createRowDto(obj);
}
};
provider.setQuery(null);

Search search = searchModel.getObject();
ObjectQuery query = search.createObjectQuery(getPrismContext());
provider.setQuery(query);

Collection<SelectorOptions<GetOperationOptions>> options = new ArrayList<>();
options.add(SelectorOptions.create(UserType.F_LINK_REF,
Expand Down
Expand Up @@ -27,7 +27,7 @@ <h3>
</h3>

<p>
<wicket:message key="PageError.message" />
<div wicket:id="errorMessage" />
</p>

<p wicket:id="message" />
Expand Down
Expand Up @@ -49,6 +49,7 @@ public class PageError extends PageBase {
private static final String ID_CODE = "code";
private static final String ID_LABEL = "label";
private static final String ID_MESSAGE = "message";
private static final String ID_ERROR_MESSAGE = "errorMessage";
private static final String ID_BACK = "back";
private static final String ID_HOME = "home";

Expand All @@ -57,6 +58,7 @@ public class PageError extends PageBase {
private Integer code;
private String exClass;
private String exMessage;
protected String errorMessageKey;

public PageError() {
this(500);
Expand All @@ -83,6 +85,9 @@ public PageError(Integer code, Exception ex) {
Label codeLabel = new Label(ID_CODE, code);
add(codeLabel);

Label errorMessage = new Label(ID_ERROR_MESSAGE, createStringResource(getErrorMessageKey()));
add(errorMessage);

String errorLabel = "Unexpected error";
if (code != null) {
HttpStatus httpStatus = HttpStatus.valueOf(code);
Expand Down Expand Up @@ -176,4 +181,8 @@ private void homePerformed(AjaxRequestTarget target) {
private void backPerformed(AjaxRequestTarget target) {
redirectBack();
}

protected String getErrorMessageKey() {
return "PageError.message";
}
}
Expand Up @@ -11,4 +11,9 @@ public class PageError403 extends PageError {
public PageError403() {
super(403);
}

@Override
protected String getErrorMessageKey(){
return "PageError403.message";
}
}
Expand Up @@ -1566,6 +1566,7 @@ PageError404.title=Not found (404)
PageError401.title=Unauthorized (401)
PageError.button.back=Back
PageError.message=Unexpected error occurred, if necessary please contact system administrator.
PageError403.message=You don't have rights to see the required page, if necessary please contact system administrator.
PageError.title=Internal error (500)
PageFindUsers.title=Find users
PageForgetPassword.email=E-mail
Expand Down Expand Up @@ -3046,4 +3047,5 @@ SearchPanel.basic=Basic
ResourceContentResourcePanel.realSearch=(In fact) Searching by:
typedAssignablePanel.selectedOrgs=Orgs:
typedAssignablePanel.selectedResources=Resources:
typedAssignablePanel.selectedRoles=Roles
typedAssignablePanel.selectedRoles=Roles
SearchPanel.insertFilterXml=Insert filter xml (SearchFilterType)

0 comments on commit 2c0b951

Please sign in to comment.