Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
Conflicts:
	gui/admin-gui/src/main/resources/localization/Midpoint.properties
  • Loading branch information
katkav committed Mar 26, 2016
2 parents 1b8e972 + 089397e commit b93a478
Show file tree
Hide file tree
Showing 62 changed files with 2,873 additions and 585 deletions.
Expand Up @@ -28,6 +28,7 @@

import com.evolveum.midpoint.web.application.DescriptorLoader;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance;
import com.evolveum.midpoint.web.page.login.PageLogin;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AdminGuiConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RichHyperlinkType;
import org.apache.commons.lang.StringUtils;
Expand Down Expand Up @@ -385,7 +386,7 @@ public Task createSimpleTask(String operation, PrismObject<UserType> owner) {
if (owner == null) {
MidPointPrincipal user = SecurityUtils.getPrincipalUser();
if (user == null) {
return task;
throw new RestartResponseException(PageLogin.class);
} else {
owner = user.getUser().asPrismObject();
}
Expand All @@ -399,7 +400,10 @@ public Task createSimpleTask(String operation, PrismObject<UserType> owner) {

public Task createSimpleTask(String operation) {
MidPointPrincipal user = SecurityUtils.getPrincipalUser();
return createSimpleTask(operation, user != null ? user.getUser().asPrismObject() : null);
if (user == null) {
throw new RestartResponseException(PageLogin.class);
}
return createSimpleTask(operation, user.getUser().asPrismObject());
}

public MidpointConfiguration getMidpointConfiguration() {
Expand Down
Expand Up @@ -168,7 +168,8 @@ public static <T extends ObjectType> PrismObject<T> loadObject(Class<T> type, St
// point to an object that the current user cannot read. This is no big deal.
// Just do not display that object.
subResult.recordHandledError(e);
LOGGER.debug("User {} is not authorized to read {} {}", task.getOwner().getName(), type.getSimpleName(), oid);
LOGGER.debug("User {} is not authorized to read {} {}",
task.getOwner() != null ? task.getOwner().getName() : null, type.getSimpleName(), oid);
return null;
} catch (Exception ex) {
subResult.recordFatalError("WebModelUtils.couldntLoadObject", ex);
Expand Down
Expand Up @@ -37,6 +37,10 @@ public void onComponentTagBody(final MarkupStream markupStream, final ComponentT
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);

if (!isEnabled()) {
tag.put("disabled", "disabled");
}

if (tag.isOpenClose()) {
tag.setType(XmlTag.TagType.OPEN);
}
Expand Down
Expand Up @@ -18,15 +18,18 @@

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.match.PolyStringNormMatchingRule;
import com.evolveum.midpoint.prism.parser.QueryConvertor;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer;
import com.evolveum.midpoint.prism.query.*;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

Expand All @@ -43,9 +46,16 @@ public class Search implements Serializable {

public static final String F_AVAILABLE_DEFINITIONS = "availableDefinitions";
public static final String F_ITEMS = "items";
public static final String F_ADVANCED_QUERY = "advancedQuery";
public static final String F_ADVANCED_ERROR = "advancedError";

private static final Trace LOGGER = TraceManager.getTrace(Search.class);

private boolean showAdvanced = false;

private String advancedQuery;
private String advancedError;

private Class<? extends ObjectType> type;
private Map<ItemPath, ItemDefinition> allDefinitions;

Expand Down Expand Up @@ -110,6 +120,10 @@ public Class<? extends ObjectType> getType() {
public ObjectQuery createObjectQuery(PrismContext ctx) {
LOGGER.debug("Creating query from {}", this);

return showAdvanced ? createObjectQueryAdvanced(ctx) : createObjectQuerySimple(ctx);
}

public ObjectQuery createObjectQuerySimple(PrismContext ctx) {
List<SearchItem> searchItems = getItems();
if (searchItems.isEmpty()) {
return null;
Expand Down Expand Up @@ -213,6 +227,77 @@ private ObjectFilter createFilterForSearchValue(SearchItem item, DisplayableValu
return null;
}

public boolean isShowAdvanced() {
return showAdvanced;
}

public void setShowAdvanced(boolean showAdvanced) {
this.showAdvanced = showAdvanced;
}

public String getAdvancedQuery() {
return advancedQuery;
}

public void setAdvancedQuery(String advancedQuery) {
this.advancedQuery = advancedQuery;
}

public ObjectQuery createObjectQueryAdvanced(PrismContext ctx) {
try {
advancedError = null;

ObjectFilter filter = createAdvancedObjectFilter(ctx);
if (filter == null) {
return null;
}

return ObjectQuery.createObjectQuery(filter);
} catch (Exception ex) {
advancedError = createErrorMessage(ex);
}

return null;
}

private ObjectFilter createAdvancedObjectFilter(PrismContext ctx) throws SchemaException {
if (StringUtils.isEmpty(advancedQuery)) {
return null;
}

SearchFilterType search = ctx.parseAtomicValue(advancedQuery, SearchFilterType.COMPLEX_TYPE);
return QueryConvertor.parseFilter(search, type, ctx);
}

public boolean isAdvancedQueryValid(PrismContext ctx) {
try {
advancedError = null;

createAdvancedObjectFilter(ctx);
return true;
} catch (Exception ex) {
advancedError = createErrorMessage(ex);
}

return false;
}

private String createErrorMessage(Exception ex) {
StringBuilder sb = new StringBuilder();

Throwable t = ex;
while (t != null) {
sb.append(t.getMessage()).append('\n');
t = t.getCause();
}

return sb.toString();
}

public String getAdvancedError() {
return advancedError;
}

@Override
public String toString() {
return new ToStringBuilder(this)
Expand Down
Expand Up @@ -43,6 +43,12 @@ public class SearchFactory {
new ItemPath(UserType.F_FAMILY_NAME),
new ItemPath(UserType.F_FULL_NAME),
new ItemPath(UserType.F_ADDITIONAL_NAME),
new ItemPath(UserType.F_COST_CENTER),
new ItemPath(UserType.F_EMAIL_ADDRESS),
new ItemPath(UserType.F_TELEPHONE_NUMBER),
new ItemPath(UserType.F_EMPLOYEE_NUMBER),
new ItemPath(UserType.F_EMPLOYEE_TYPE),
new ItemPath(UserType.F_ORGANIZATIONAL_UNIT),
new ItemPath(UserType.F_COST_CENTER)));
SEARCHABLE_OBJECTS.put(RoleType.class, Arrays.asList(
new ItemPath(RoleType.F_NAME),
Expand Down
Expand Up @@ -17,23 +17,35 @@
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<form wicket:id="form" class="form-inline pull-right search-form">

<div class="form-group has-feedback" wicket:id="advancedGroup">
<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>
</div>

<wicket:container wicket:id="items">
<div wicket:id="item" class="form-group"/>
</wicket:container>

<div class="form-group">
<div class="form-group" wicket:id="moreGroup">
<a wicket:id="more" class="btn btn-sm btn-default">
<wicket:message key="SearchPanel.more"/>
&nbsp;
<span class="caret"></span>
</a>
</div>

<div class="form-group">
<div class="form-group" style="vertical-align: top;">
<a wicket:id="search" class="btn btn-sm btn-primary">
<i class="fa fa-search fa-lg"/>
</a>
</div>

<div class="form-group" style="vertical-align: top;">
<a class="btn btn-sm btn-link" wicket:id="advanced"/>
</div>
</form>

<div wicket:id="popover" class="popover bottom" style="display: none;">
Expand Down

0 comments on commit b93a478

Please sign in to comment.