Skip to content

Commit

Permalink
Resource Wizard update - fixing mapping label creation and a few mino…
Browse files Browse the repository at this point in the history
…r issues on the way
  • Loading branch information
Erik Suta committed Oct 8, 2014
1 parent c7a19fd commit 00a43aa
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 101 deletions.
Expand Up @@ -16,15 +16,17 @@

package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling;

import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.form.multivalue.MultiValueTextEditPanel;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AttributeFetchStrategyType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceActivationDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceBidirectionalMappingType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.form.DropDownChoice;
Expand All @@ -40,6 +42,8 @@
* */
public class ResourceActivationEditor extends SimplePanel<ResourceActivationDefinitionType>{

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

private static final String ID_EXISTENCE_FS = "existenceFetchStrategy";
private static final String ID_EXISTENCE_OUT = "existenceOutbound";
private static final String ID_EXISTENCE_IN = "existenceInbound";
Expand Down Expand Up @@ -120,17 +124,8 @@ protected IModel<String> createTextModel(final IModel<MappingType> model) {

@Override
public String getObject() {
MappingType mapping = model.getObject();

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

if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
return mapping.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
};
}
Expand All @@ -156,17 +151,8 @@ protected IModel<String> createTextModel(final IModel<MappingType> model) {

@Override
public String getObject() {
MappingType mapping = model.getObject();

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

if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
return mapping.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
};
}
Expand Down
Expand Up @@ -17,7 +17,6 @@
package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.match.MatchingRuleRegistry;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
Expand All @@ -32,10 +31,10 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.LimitationsEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
Expand Down Expand Up @@ -298,7 +297,20 @@ public String getIdValue(QName object, int index) {
add(matchingRule);

TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL,
new PropertyModel<String>(getModel(), "outbound.name"));
new AbstractReadOnlyModel<String>() {

@Override
public String getObject() {
ResourceObjectAssociationType association = getModel().getObject();

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

return MappingTypeDto.createMappingLabel(association.getOutbound(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
});
outboundLabel.setOutputMarkupId(true);
outboundLabel.setEnabled(false);
add(outboundLabel);
Expand All @@ -322,17 +334,8 @@ protected IModel<String> createTextModel(final IModel<MappingType> model) {

@Override
public String getObject() {
MappingType mapping = model.getObject();

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

if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
return mapping.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
};
}
Expand Down
Expand Up @@ -52,6 +52,6 @@ kind.nullValid=Choose One
direction.nullvalid=Choose One
associationAttribute.nullValid=Choose One
valueAttribute.nullValid=Choose One
fetchSrategy.nullValid=Choose One
fetchStrategy.nullValid=Choose One
matchingRule.nullValid=Choose One

Expand Up @@ -16,7 +16,6 @@
package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.match.MatchingRuleRegistry;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
Expand All @@ -30,10 +29,10 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.LimitationsEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
Expand Down Expand Up @@ -232,17 +231,8 @@ public String getObject() {
return null;
}

MappingType outbound = attributeDefinition.getOutbound();

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

if(outbound.getName() != null && StringUtils.isNotEmpty(outbound.getName())){
return outbound.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(attributeDefinition.getOutbound(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
});
outboundLabel.setEnabled(false);
Expand All @@ -268,17 +258,8 @@ protected IModel<String> createTextModel(final IModel<MappingType> model) {

@Override
public String getObject() {
MappingType mapping = model.getObject();

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

if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
return mapping.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
};
}
Expand Down
Expand Up @@ -32,4 +32,4 @@ ResourceAttributeEditor.message.cantParseSchema=Couldn't parse resource schema
AttributeFetchStrategyType.IMPLICIT=Implicit
AttributeFetchStrategyType.EXPLICIT=Explicit
matchingRule.nullValid=Choose One
fetchStrategy.nulLValid=Choose One
fetchStrategy.nullValid=Choose One
Expand Up @@ -26,9 +26,9 @@
import com.evolveum.midpoint.web.component.form.multivalue.MultiValueTextEditPanel;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
Expand Down Expand Up @@ -89,8 +89,20 @@ protected void initLayout(){
new EnumChoiceRenderer<AttributeFetchStrategyType>(this));
add(fetchStrategy);

TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL,
new PropertyModel<String>(getModel(), "password.outbound.name"));
TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL, new AbstractReadOnlyModel<String>() {

@Override
public String getObject() {
ResourceCredentialsDefinitionType credentials = getModel().getObject();

if(credentials == null || credentials.getPassword() == null){
return null;
}

return MappingTypeDto.createMappingLabel(credentials.getPassword().getOutbound(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
});
outboundLabel.setEnabled(false);
outboundLabel.setOutputMarkupId(true);
add(outboundLabel);
Expand All @@ -114,17 +126,8 @@ protected IModel<String> createTextModel(final IModel<MappingType> model) {

@Override
public String getObject() {
MappingType mapping = model.getObject();

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

if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
return mapping.getName();
} else {
return getString("MultiValueField.nameNotSpecified");
}
return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(),
getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified"));
}
};
}
Expand Down
Expand Up @@ -24,6 +24,7 @@
import com.evolveum.midpoint.web.util.ExpressionUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import org.apache.commons.lang.StringUtils;

import javax.xml.bind.JAXBElement;
import java.io.Serializable;
Expand Down Expand Up @@ -109,30 +110,11 @@ public MappingTypeDto(MappingType mapping, PrismContext prismContext){
}

private void loadExpressions(PrismContext context){
if(mappingObject.getExpression() != null && mappingObject.getExpression().getExpressionEvaluator() != null
&& !mappingObject.getExpression().getExpressionEvaluator().isEmpty()){
expression = ExpressionUtil.loadExpression(mappingObject, context, LOGGER);

try {
if(mappingObject.getExpression().getExpressionEvaluator().size() == 1){
expression = context.serializeAtomicValue(mappingObject.getExpression().getExpressionEvaluator().get(0), PrismContext.LANG_XML);
} else{
StringBuilder sb = new StringBuilder();
for(JAXBElement<?> element: mappingObject.getExpression().getExpressionEvaluator()){
String subElement = context.serializeAtomicValue(element, PrismContext.LANG_XML);
sb.append(subElement).append("\n");
}
expression = sb.toString();
}

expressionType = ExpressionUtil.getExpressionType(expression);
if(expressionType != null && expressionType.equals(ExpressionUtil.ExpressionEvaluatorType.SCRIPT)){
expressionLanguage = ExpressionUtil.getExpressionLanguage(expression);
}
} catch (SchemaException e) {
//TODO - how can we show this error to user?
LoggingUtils.logException(LOGGER, "Could not load expressions from mapping.", e, e.getStackTrace());
expression = e.getMessage();
}
expressionType = ExpressionUtil.getExpressionType(expression);
if(expressionType != null && expressionType.equals(ExpressionUtil.ExpressionEvaluatorType.SCRIPT)){
expressionLanguage = ExpressionUtil.getExpressionLanguage(expression);
}
}

Expand Down Expand Up @@ -373,4 +355,30 @@ public int hashCode() {
result = 31 * result + (conditionPolicyRef != null ? conditionPolicyRef.hashCode() : 0);
return result;
}

/**
* TODO - find a better place for this method, it probably shouldn't be here
* */
public static String createMappingLabel(MappingType mapping, Trace LOGGER, PrismContext context,
String placeholder, String nameNotSpecified ){
if(mapping == null){
return placeholder;
}

StringBuilder sb = new StringBuilder();
if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){
sb.append(mapping.getName());
} else {
sb.append(nameNotSpecified);
}

if(mapping.getExpression() != null && mapping.getExpression().getExpressionEvaluator() != null){
sb.append(" (");
sb.append(ExpressionUtil.getExpressionType(ExpressionUtil.loadExpression(mapping, context, LOGGER)));
sb.append(")");
}

return sb.toString();
}

}
Expand Up @@ -538,5 +538,6 @@ operation.com.evolveum.midpoint.model.controller.ModelController.searchObjects=S
operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user=Repository self test, user (Model)
operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test

MappingType.label.placeholder=Create new mapping
TextField.universal.placeholder=Insert value
MultiValueField.nameNotSpecified=(Name not specified)

0 comments on commit 00a43aa

Please sign in to comment.