Skip to content

Commit

Permalink
MID-2316 fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
erik committed Apr 17, 2015
1 parent 51fae25 commit fd02c00
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
* */
public class LookupPropertyModel<T> extends AbstractPropertyModel<T> {

private final String expression;
protected final String expression;
private LookupTableType lookupTable;

public LookupPropertyModel(Object modelObject, String expression, LookupTableType lookupTable){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ assignablePopupContent.message.noOrgStructureDefined=No org. structure defined.
TreeTablePanel.hierarchy=Org. hierarchy
TreeTablePanel.childOrg=Children org. units
TreeTablePanel.collapseAll=Collapse all
TreeTablePanel.expandAll=Expand all
TreeTablePanel.expandAll=Expand all
assignablePopupContent.role.type=Role type
typeSelect.null=All roles
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@
<div class="popupWindow">

<div class="clearfix">
<form wicket:id="searchForm" class="form-inline pull-right"
style="padding: 5px;">

<form class="form-inline pull-left" style="padding: 5px;">
<div class="form-group">
<select class="form-control input-sm" wicket:id="typeSelect" />
</div>
</form>

<form wicket:id="searchForm" class="form-inline pull-right"
style="padding: 5px;">

<div wicket:id="basicSearch" />
</form>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,19 @@
import com.evolveum.midpoint.web.component.assignment.AssignmentSearchDto;
import com.evolveum.midpoint.web.component.data.ObjectDataProvider;
import com.evolveum.midpoint.web.component.data.TablePanel;
import com.evolveum.midpoint.web.component.util.LookupPropertyModel;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.wicket.Application;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.core.util.lang.PropertyResolver;
import org.apache.wicket.core.util.lang.PropertyResolverConverter;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.form.DropDownChoice;
Expand Down Expand Up @@ -81,7 +86,53 @@ protected void clearSearchPerformed(AjaxRequestTarget target) {
searchForm.add(basicSearch);

DropDownChoice typeSearch = new DropDownChoice<>(ID_TYPE_SEARCH,
new PropertyModel<String>(searchModel, AssignmentSearchDto.F_SEARCH_ROLE_TYPE),
new LookupPropertyModel<String>(searchModel, AssignmentSearchDto.F_SEARCH_ROLE_TYPE, null){

@Override
public String getObject() {
final Object target = getInnermostModelOrObject();

if (target != null){
String key = (String) PropertyResolver.getValue(expression, target);

if(key == null){
return null;
}

for(DisplayableValue<String> displayable: getLookupDisplayableList()){
if(key.equals(displayable.getValue())){
return displayable.getLabel();
}
}
}

return null;
}

@Override
public void setObject(String object) {
final String expression = propertyExpression();

PropertyResolverConverter prc;
prc = new PropertyResolverConverter(Application.get().getConverterLocator(),
Session.get().getLocale());

if(object != null){
String key;

for(DisplayableValue<String> displayable: getLookupDisplayableList()){
if(object.equals(displayable.getLabel())){
key = displayable.getValue();

PropertyResolver.setValue(expression, getInnermostModelOrObject(), key, prc);
return;
}
}
}

PropertyResolver.setValue(expression, getInnermostModelOrObject(), null, prc);
}
},
createAvailableRoleTypesList());
typeSearch.add(new OnChangeAjaxBehavior() {

Expand All @@ -90,31 +141,38 @@ protected void onUpdate(AjaxRequestTarget target) {
assignmentSearchPerformed(target);
}
});
searchForm.add(typeSearch);
add(typeSearch);

return createTable();
}

private List<String> createAvailableRoleTypesList(){
List<String> roleTypes = new ArrayList<>();
private List<DisplayableValue<String>> getLookupDisplayableList(){
List<DisplayableValue<String>> list = new ArrayList<>();
ModelInteractionService interactionService = getPageBase().getModelInteractionService();
OperationResult result = new OperationResult(OPERATION_LOAD_ROLE_TYPES);

try {
RoleSelectionSpecification roleSpecification = interactionService.getAssignableRoleSpecification(getUserDefinition(), result);
List<DisplayableValue<String>> displayableValues = roleSpecification.getRoleTypes();

if (displayableValues != null) {
for (DisplayableValue<String> displayable : displayableValues) {
roleTypes.add(displayable.getValue());
}
}
return roleSpecification.getRoleTypes();

} catch (SchemaException | ConfigurationException | ObjectNotFoundException e) {
LOGGER.error("Could not retrieve available role types for search purposes.", e);
result.recordFatalError("Could not retrieve available role types for search purposes.", e);
}

return list;
}

private List<String> createAvailableRoleTypesList(){
List<String> roleTypes = new ArrayList<>();
List<DisplayableValue<String>> displayableValues = getLookupDisplayableList();

if (displayableValues != null) {
for (DisplayableValue<String> displayable : displayableValues) {
roleTypes.add(displayable.getLabel());
}
}

return roleTypes;
}

Expand Down Expand Up @@ -176,14 +234,6 @@ private ObjectQuery createSearchQuery(){
AssignmentSearchDto dto = searchModel.getObject();
ObjectQuery query = null;

// if(StringUtils.isEmpty(dto.getText())){
// if(getProviderQuery() != null){
// return getProviderQuery();
// } else {
// return null;
// }
// }

try{
List<ObjectFilter> filters = new ArrayList<>();

Expand All @@ -206,7 +256,7 @@ private ObjectQuery createSearchQuery(){
filters.add(typeEquals);
}

query = ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));
query = filters.isEmpty() ? null : ObjectQuery.createObjectQuery(AndFilter.createAnd(filters));

} catch (Exception e){
error(getString("OrgUnitBrowser.message.queryError") + " " + e.getMessage());
Expand Down

0 comments on commit fd02c00

Please sign in to comment.