diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml index 78e86326e54..364faef3c7a 100644 --- a/gui/admin-gui/pom.xml +++ b/gui/admin-gui/pom.xml @@ -321,6 +321,7 @@ system-init 4.2-SNAPSHOT + com.evolveum.midpoint.repo @@ -334,6 +335,12 @@ ${project.version} runtime + + com.evolveum.midpoint.model + rest-impl + ${project.version} + + org.codehaus.groovy groovy-all diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java index 8670f75c317..b3d31d34d12 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java @@ -25,7 +25,7 @@ import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab; import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.schema.constants.ObjectTypes; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ContainerableListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ContainerableListPanel.java index cba7c8f6c44..396ae7be6a0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ContainerableListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ContainerableListPanel.java @@ -7,7 +7,7 @@ package com.evolveum.midpoint.gui.api.component; import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectPaging; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java index 017759c53e9..f7ef1a2c3e8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusTypeAssignmentPopupTabPanel.java @@ -16,8 +16,8 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.Fragment; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectFilter; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java index f8da09f36ae..f664ed0d8f4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java @@ -76,8 +76,8 @@ protected IColumn, String> createCheckboxColumn() { } @Override - protected IColumn, String> createNameColumn(IModel columnNameModel, String itemPath) { - if (StringUtils.isEmpty(itemPath)) { + protected IColumn, String> createNameColumn(IModel columnNameModel, String itemPath, ExpressionType expression) { + if (StringUtils.isEmpty(itemPath) && expression == null) { return new ObjectNameColumn(columnNameModel == null ? createStringResource("ObjectType.name") : columnNameModel) { private static final long serialVersionUID = 1L; @@ -94,7 +94,7 @@ public boolean isClickable(IModel> rowModel) { }; } else { return new ObjectNameColumn(columnNameModel == null ? createStringResource("ObjectType.name") : columnNameModel, - itemPath) { + itemPath, expression, getPageBase()) { private static final long serialVersionUID = 1L; @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.html index 85a71fcb45a..432f8b49497 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.html @@ -7,6 +7,7 @@ + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.java index e8c2da80dd6..a9e1bca336d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectBrowserPanel.java @@ -12,12 +12,15 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.api.component.result.MessagePanel; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; + import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; @@ -41,6 +44,7 @@ public class ObjectBrowserPanel extends BasePanel imple private static final String ID_TYPE = "type"; private static final String ID_TYPE_PANEL = "typePanel"; private static final String ID_TABLE = "table"; + private static final String ID_WARNING_MESSAGE = "warningMessage"; private static final String ID_BUTTON_ADD = "addButton"; @@ -100,6 +104,11 @@ protected void onInitialize(){ } private void initLayout() { + MessagePanel warningMessage = new MessagePanel(ID_WARNING_MESSAGE, MessagePanel.MessagePanelType.WARN, getWarningMessageModel()); + warningMessage.setOutputMarkupId(true); + warningMessage.add(new VisibleBehaviour(() -> getWarningMessageModel() != null)); + add(warningMessage); + List supported = new ArrayList<>(); for (QName qname : supportedTypes) { supported.add(ObjectTypes.getObjectTypeFromTypeQName(qname)); @@ -218,6 +227,10 @@ private Collection> getOptions() { return null; } + protected IModel getWarningMessageModel(){ + return null; + } + @Override public int getWidth() { return 900; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index 51683c19258..fb27d6018c3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -14,14 +14,20 @@ import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.schema.constants.ExpressionConstants; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.MiscSchemaUtil; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.exception.*; import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; import com.evolveum.midpoint.web.component.search.*; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.SerializableSupplier; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.Component; @@ -336,27 +342,31 @@ protected List, String>> getCustomColumnsTransformed(L } IColumn, String> column; for (GuiObjectColumnType customColumn : customColumns) { - if (customColumn.getPath() == null) { + if (customColumn.getPath() == null && customColumn.getExpression() == null) { continue; } - ItemPath columnPath = customColumn.getPath().getItemPath(); + ItemPath columnPath = customColumn.getPath() == null ? null : customColumn.getPath().getItemPath(); // TODO this throws an exception for some kinds of invalid paths like e.g. fullName/norm (but we probably should fix prisms in that case!) - ItemDefinition itemDefinition = getPageBase().getPrismContext().getSchemaRegistry() - .findObjectDefinitionByCompileTimeClass(type.getClassDefinition()) - .findItemDefinition(columnPath); - if (itemDefinition == null) { - LOGGER.warn("Unknown path '{}' in a definition of column '{}'", columnPath, customColumn.getName()); - continue; + ExpressionType expression = customColumn.getExpression(); + if (columnPath != null) { + ItemDefinition itemDefinition = getPageBase().getPrismContext().getSchemaRegistry() + .findObjectDefinitionByCompileTimeClass(type.getClassDefinition()) + .findItemDefinition(columnPath); + if (itemDefinition == null && expression == null) { + LOGGER.warn("Unknown path '{}' in a definition of column '{}'", columnPath, customColumn.getName()); + continue; + } } if (WebComponentUtil.getElementVisibility(customColumn.getVisibility())) { IModel columnDisplayModel = customColumn.getDisplay() != null && customColumn.getDisplay().getLabel() != null ? Model.of(customColumn.getDisplay().getLabel().getOrig()) : - createStringResource(getItemDisplayName(customColumn)); + (customColumn.getPath() != null ? createStringResource(getItemDisplayName(customColumn)) : + Model.of(customColumn.getName())); if (customColumns.indexOf(customColumn) == 0) { // TODO what if a complex path is provided here? - column = createNameColumn(columnDisplayModel, customColumn.getPath().toString()); + column = createNameColumn(columnDisplayModel, customColumn.getPath() == null ? "" : customColumn.getPath().toString(), expression); } else { column = new AbstractExportableColumn, String>(columnDisplayModel, null) { private static final long serialVersionUID = 1L; @@ -373,7 +383,31 @@ public IModel> getDataModel(IModel> rowModel) { if (value == null) { return Model.of(""); } - Item, ?> item = value.asPrismContainerValue().findItem(columnPath); + Item, ?> item = null; + if (columnPath != null) { + item = value.asPrismContainerValue().findItem(columnPath); + } + Item object = value.asPrismObject(); + if (item != null) { + object = item; + } + if (expression != null) { + Task task = getPageBase().createSimpleTask("evaluate column expression"); + try { + ExpressionVariables expressionVariables = new ExpressionVariables(); + expressionVariables.put(ExpressionConstants.VAR_OBJECT, object, object.getClass()); + String stringValue = ExpressionUtil.evaluateStringExpression(expressionVariables, getPageBase().getPrismContext(), expression, + MiscSchemaUtil.getExpressionProfile(), getPageBase().getExpressionFactory(), "evaluate column expression", + task, task.getResult()).iterator().next(); + return Model.of(stringValue); + } catch (SchemaException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException + | ConfigurationException | SecurityViolationException e) { + LOGGER.error("Couldn't execute expression for name column"); + OperationResult result = task.getResult(); + OperationResultStatusPresentationProperties props = OperationResultStatusPresentationProperties.parseOperationalResultStatus(result.getStatus()); + return getPageBase().createStringResource(props.getStatusLabelKey()); + } + } if (item != null) { if (item.getDefinition() != null && item.getDefinition().getValueEnumerationRef() != null && item.getDefinition().getValueEnumerationRef().getOid() != null){ @@ -439,7 +473,7 @@ protected List, String>> initColumns() { IColumn, String> iconColumn = (IColumn) ColumnUtils.createIconColumn(getPageBase()); columns.add(iconColumn); - IColumn, String> nameColumn = createNameColumn(null, null); + IColumn, String> nameColumn = createNameColumn(null, null, null); columns.add(nameColumn); List, String>> others = createColumns(); @@ -854,7 +888,8 @@ protected IColumn, String> createIconColumn(){ return (IColumn) ColumnUtils.createIconColumn(getPageBase()); } - protected abstract IColumn, String> createNameColumn(IModel columnNameModel, String itemPath); + protected abstract IColumn, String> createNameColumn(IModel columnNameModel, String itemPath, + ExpressionType expression); protected abstract List, String>> createColumns(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java index 321c2e97290..84d12f69d88 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java @@ -12,11 +12,22 @@ import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.polystring.PolyString; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; +import com.evolveum.midpoint.schema.constants.ExpressionConstants; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.MiscSchemaUtil; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.exception.*; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.data.column.PolyStringPropertyColumn; import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; import com.evolveum.midpoint.web.component.util.SerializableSupplier; +import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -39,6 +50,8 @@ public abstract class PopupObjectListPanel extends ObjectListPanel { private static final long serialVersionUID = 1L; + private static final Trace LOGGER = TraceManager.getTrace(PopupObjectListPanel.class); + /** * @param defaultType specifies type of the object that will be selected by default */ @@ -80,13 +93,17 @@ protected IModel getEnabled(IModel> rowModel) { } @Override - protected IColumn, String> createNameColumn(IModel columnNameModel, String itemPath) { + protected IColumn, String> createNameColumn(IModel columnNameModel, String itemPath, ExpressionType expression) { if (!isMultiselect()) { + String propertyExpression = SelectableBeanImpl.F_VALUE + "." + (StringUtils.isEmpty(itemPath) ? "name" : itemPath); + String sortProperty = StringUtils.isEmpty(itemPath) ? ObjectType.F_NAME.getLocalPart() : itemPath; + if (expression != null) { + propertyExpression = SelectableBeanImpl.F_VALUE +(StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); + sortProperty = StringUtils.isEmpty(itemPath) ? "" : itemPath; + } return new LinkColumn>( columnNameModel == null ? createStringResource("ObjectType.name") : columnNameModel, - StringUtils.isEmpty(itemPath) ? ObjectType.F_NAME.getLocalPart() : itemPath, - SelectableBeanImpl.F_VALUE + "." + - (StringUtils.isEmpty(itemPath) ? "name" : itemPath)) { + sortProperty, propertyExpression) { private static final long serialVersionUID = 1L; @Override @@ -102,23 +119,67 @@ protected IModel createLinkModel(IModel> rowModel) { public void onClick(AjaxRequestTarget target, IModel> rowModel) { O object = rowModel.getObject().getValue(); onSelectPerformed(target, object); + } + @Override + public IModel getDataModel(IModel> rowModel) { + if (expression != null) { + Object object = new PropertyModel<>(rowModel, getPropertyExpression()).getObject(); + return evaluateColumnExpression(object, expression); + } else { + return super.getDataModel(rowModel); + } } }; } else { - if (StringUtils.isEmpty(itemPath) || ObjectType.F_NAME.getLocalPart().equals(itemPath)){ + if ((StringUtils.isEmpty(itemPath) || ObjectType.F_NAME.getLocalPart().equals(itemPath)) && expression == null){ return new PolyStringPropertyColumn>(columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel, ObjectType.F_NAME.getLocalPart(), "value.name"); } else { + String propertyExpression = SelectableBeanImpl.F_VALUE + "." + itemPath; + String sortProperty = itemPath; + if (expression != null) { + propertyExpression = SelectableBeanImpl.F_VALUE +(StringUtils.isEmpty(itemPath) ? "" : ("." + itemPath)); + sortProperty = StringUtils.isEmpty(itemPath) ? "" : itemPath; + } return new PropertyColumn( columnNameModel == null ? createStringResource("userBrowserDialog.name") : columnNameModel, - itemPath,SelectableBeanImpl.F_VALUE + "." + itemPath); + sortProperty, propertyExpression){ + + @Override + public IModel> getDataModel(IModel rowModel) { + if (expression != null) { + Object object = new PropertyModel<>(rowModel, getPropertyExpression()).getObject(); + return evaluateColumnExpression(object, expression); + } else { + return super.getDataModel(rowModel); + } + } + }; } } } + private IModel evaluateColumnExpression(Object object, ExpressionType expression) { + Task task = getPageBase().createSimpleTask("evaluate column expression"); + try { + ExpressionVariables expressionVariables = new ExpressionVariables(); + expressionVariables.put(ExpressionConstants.VAR_OBJECT, object, object.getClass()); + String stringValue = ExpressionUtil.evaluateStringExpression(expressionVariables, getPageBase().getPrismContext(), expression, + MiscSchemaUtil.getExpressionProfile(), getPageBase().getExpressionFactory(), "evaluate column expression", + task, task.getResult()).iterator().next(); + return Model.of(stringValue); + } catch (SchemaException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException + | ConfigurationException | SecurityViolationException e) { + LOGGER.error("Couldn't execute expression for name column"); + OperationResult result = task.getResult(); + OperationResultStatusPresentationProperties props = OperationResultStatusPresentationProperties.parseOperationalResultStatus(result.getStatus()); + return getPageBase().createStringResource(props.getStatusLabelKey()); + } + } + @Override protected List, String>> createColumns() { return ColumnUtils.getDefaultColumns(getType()); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java index 076d451fcc4..fb46bb5ad33 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.OutputStream; +import java.util.ArrayList; import java.util.List; import com.evolveum.midpoint.util.logging.Trace; @@ -15,8 +16,11 @@ import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.data.SelectableBeanObjectDataProvider; +import com.evolveum.midpoint.web.component.dialog.SelectExportingColumnsPanel; + import org.apache.wicket.ajax.AjaxRequestTarget; 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.extensions.markup.html.repeater.data.table.export.CSVDataExporter; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.ExportToolbar; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn; @@ -39,6 +43,9 @@ public abstract class CsvDownloadButtonPanel extends BasePanel { private static final String ID_EXPORT_DATA = "exportData"; private final boolean canCountBeforeExporting; + List exportableColumnsIndex = new ArrayList<>(); + + private IModel> exportedColumnsIndex = Model.ofList(new ArrayList<>()); public CsvDownloadButtonPanel(String id, boolean canCountBeforeExporting) { super(id); @@ -64,7 +71,7 @@ public void exportData(IDataProvider dataProvider, List List> getExportableColumns() { + List> exportableColumns = new ArrayList<>(); + List extends IColumn, ?>> allColumns = getDataTable().getColumns(); + for (Integer index : exportableColumnsIndex) { + exportableColumns.add((IExportableColumn) allColumns.get(index)); + } + return exportableColumns; + } + protected abstract DataTable,?> getDataTable(); protected abstract String getFilename(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java index 26337a9e861..05dd5ce839d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java @@ -6,11 +6,12 @@ */ package com.evolveum.midpoint.gui.api.component.password; -import com.evolveum.midpoint.gui.api.factory.GuiComponentFactory; -import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel; -import com.evolveum.midpoint.gui.impl.prism.*; +import com.evolveum.midpoint.gui.impl.factory.panel.ItemRealValueModel; +import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings; +import com.evolveum.midpoint.gui.impl.prism.panel.PrismPropertyPanel; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; import com.evolveum.midpoint.web.component.prism.ValueStatus; -import com.evolveum.midpoint.web.page.admin.users.PageUser; import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; import org.apache.wicket.Component; import org.apache.wicket.markup.html.list.ListItem; @@ -19,7 +20,7 @@ /** * Created by honchar */ -public class PasswordPropertyPanel extends PrismPropertyPanel{ +public class PasswordPropertyPanel extends PrismPropertyPanel { private static final long serialVersionUID = 1L; private static final String ID_PASSWORD_PANEL= "passwordPanel"; @@ -29,8 +30,7 @@ public PasswordPropertyPanel(String id, IModel> item, GuiComponentFactory factory, - ItemVisibilityHandler visibilityHandler, ItemEditabilityHandler editabilityHandler) { + protected Component createValuePanel(ListItem> item) { PasswordPanel passwordPanel = new PasswordPanel(ID_PASSWORD_PANEL, new ItemRealValueModel<>(item.getModel()), getModelObject() != null && getModelObject().isReadOnly(), @@ -54,9 +54,4 @@ protected void changePasswordPerformed(){ } - @Override - protected void createButtons(ListItem> item) { - //nothing to do - } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/AbstractGuiComponentFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/AbstractGuiComponentFactory.java index 109f71a667b..e897a95cd98 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/AbstractGuiComponentFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/AbstractGuiComponentFactory.java @@ -7,21 +7,16 @@ package com.evolveum.midpoint.gui.api.factory; -import java.util.ArrayList; import java.util.List; import com.evolveum.midpoint.common.LocalizationService; import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.polystring.PolyString; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType; -import org.apache.commons.lang3.StringUtils; + import org.apache.wicket.feedback.ComponentFeedbackMessageFilter; import org.apache.wicket.markup.html.panel.Panel; -import com.evolveum.midpoint.gui.impl.factory.PrismPropertyPanelContext; -import com.evolveum.midpoint.web.component.prism.InputPanel; -import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableRowType; +import com.evolveum.midpoint.gui.impl.factory.panel.PrismPropertyPanelContext; import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +34,7 @@ public GuiComponentRegistry getRegistry() { @Override public Panel createPanel(PrismPropertyPanelContext panelCtx) { Panel panel = getPanel(panelCtx); - +// panelCtx.getFeedback().setFilter(new ComponentFeedbackMessageFilter(panel)); return panel; } @@ -50,7 +45,5 @@ public Integer getOrder() { protected abstract Panel getPanel(PrismPropertyPanelContext panelCtx); - protected List prepareAutoCompleteList(String input, LookupTableType lookupTable, LocalizationService localizationService) { - return WebComponentUtil.prepareAutoCompleteList(lookupTable, input, localizationService); - } + } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/GuiComponentFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/GuiComponentFactory.java index 7c015e0fde4..397d8249597 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/GuiComponentFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/GuiComponentFactory.java @@ -7,10 +7,12 @@ package com.evolveum.midpoint.gui.api.factory; +import org.apache.wicket.Component; +import org.apache.wicket.feedback.ComponentFeedbackMessageFilter; import org.apache.wicket.markup.html.panel.Panel; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.factory.ItemPanelContext; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.impl.factory.panel.ItemPanelContext; public interface GuiComponentFactory{ // public void register(); @@ -21,6 +23,10 @@ public interface GuiComponentFactory{ Integer getOrder(); + default void configure(T panelCtx, Component component) { +// panelCtx.getFeedback().setFilter(new ComponentFeedbackMessageFilter(component)); + } + // Panel build(PanelContext panelContext); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ItemWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/ItemWrapperFactory.java similarity index 69% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ItemWrapperFactory.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/ItemWrapperFactory.java index 92001789ffa..ff639586b3e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ItemWrapperFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/ItemWrapperFactory.java @@ -4,12 +4,12 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.factory; +package com.evolveum.midpoint.gui.api.factory.wrapper; import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; @@ -24,7 +24,7 @@ public interface ItemWrapperFactory parent, ItemDefinition> def, WrapperContext context) throws SchemaException; - IW createWrapper(Item childContainer, ItemStatus status, WrapperContext context) throws SchemaException; + IW createWrapper(PrismContainerValueWrapper> parent, Item childContainer, ItemStatus status, WrapperContext context) throws SchemaException; VW createValueWrapper(IW parent, PV value, ValueStatus status, WrapperContext context) throws SchemaException; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismContainerWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismContainerWrapperFactory.java new file mode 100644 index 00000000000..18ea16ba52d --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismContainerWrapperFactory.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010-2019 Evolveum and contributors + * + * This work is dual-licensed under the Apache License 2.0 + * and European Union Public License. See LICENSE file for details. + */ +package com.evolveum.midpoint.gui.api.factory.wrapper; + +import com.evolveum.midpoint.gui.api.prism.ItemStatus; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.prism.Containerable; +import com.evolveum.midpoint.prism.Item; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.PrismContainerValue; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.web.component.prism.ValueStatus; + +/** + * @author katka + * + */ +public interface PrismContainerWrapperFactory extends ItemWrapperFactory, PrismContainerValueWrapper, PrismContainerValue> { + + + PrismContainerValueWrapper createContainerValueWrapper(PrismContainerWrapper objectWrapper, PrismContainerValue objectValue, ValueStatus status, WrapperContext context); + +// ItemWrapper, ?> createChildWrapper(ItemDefinition> def, PrismContainerValueWrapper> containerValueWrapper, WrapperContext context) throws SchemaException; +// ItemWrapper, ?> createChildWrapper(PrismContainerValueWrapper> parent, I childItem, ItemStatus status, WrapperContext context) throws SchemaException; + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismObjectWrapperFactory.java similarity index 82% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactory.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismObjectWrapperFactory.java index 1ddc6546578..71125a553ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/PrismObjectWrapperFactory.java @@ -4,12 +4,11 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.factory; +package com.evolveum.midpoint.gui.api.factory.wrapper; import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismObjectValue; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperContext.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperContext.java similarity index 97% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperContext.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperContext.java index 5ce5e23c750..5742a98f69e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperContext.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperContext.java @@ -4,7 +4,7 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.factory; +package com.evolveum.midpoint.gui.api.factory.wrapper; import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.prism.PrismObject; @@ -16,7 +16,8 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.VirtualContainerItemSpecificationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.VirtualContainersSpecificationType; -import javax.xml.namespace.QName; +import org.jetbrains.annotations.NotNull; + import java.util.Collection; import java.util.List; @@ -113,7 +114,6 @@ public void setShowEmpty(boolean showEmpty) { this.showEmpty = showEmpty; } - public ItemStatus getObjectStatus() { return objectStatus; } @@ -146,6 +146,7 @@ public List getVirtualItemSpecification() return virtualItemSpecification; } + @NotNull public PrismObject> getObject() { return object; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperFactory.java similarity index 89% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperFactory.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperFactory.java index 280f53e24b7..64163d591dc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/WrapperFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/factory/wrapper/WrapperFactory.java @@ -4,7 +4,7 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.factory; +package com.evolveum.midpoint.gui.api.factory.wrapper; import com.evolveum.midpoint.prism.ItemDefinition; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index 5073cf5730b..378781c8ab0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -15,6 +15,8 @@ import javax.management.ObjectName; import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismContainerWrapperFactory; +import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings; import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; import com.evolveum.midpoint.web.page.admin.certification.*; @@ -71,19 +73,18 @@ import com.evolveum.midpoint.gui.api.component.result.OpResult; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.impl.error.ErrorPanel; -import com.evolveum.midpoint.gui.impl.factory.ItemWrapperFactory; -import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; -import com.evolveum.midpoint.gui.impl.factory.WrapperContext; -import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValuePanel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.factory.wrapper.ItemWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; +import com.evolveum.midpoint.gui.impl.prism.panel.PrismContainerValuePanel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.model.api.*; import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile; import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView; @@ -2678,7 +2679,6 @@ public void reloadShoppingCartIcon(AjaxRequestTarget target) { public AsyncWebProcessManager getAsyncWebProcessManager() { return MidPointApplication.get().getAsyncWebProcessManager(); } - @Override public Locale getLocale() { return getSession().getLocale(); @@ -2697,7 +2697,7 @@ public PrismObjectWrapperFactory findObjectWrapperFact public VW createValueWrapper(IW parentWrapper, PV newValue, ValueStatus status, WrapperContext context) throws SchemaException { - ItemWrapperFactory factory = (ItemWrapperFactory) registry.findWrapperFactory(parentWrapper); + ItemWrapperFactory factory = registry.findWrapperFactory(parentWrapper); return factory.createValueWrapper(parentWrapper, newValue, status, context); @@ -2705,19 +2705,19 @@ public IW createItemWrapper(ID def, PrismContainerValueWrapper> parent, WrapperContext ctx) throws SchemaException { - ItemWrapperFactory factory = (ItemWrapperFactory) registry.findWrapperFactory(def); + PrismContainerWrapperFactory> factory = registry.findContainerWrapperFactory(parent.getDefinition()); ctx.setShowEmpty(true); ctx.setCreateIfEmpty(true); - return factory.createWrapper(parent, def, ctx); + return (IW) factory.createWrapper(parent, def, ctx); } public IW createItemWrapper(I item, ItemStatus status, WrapperContext ctx) throws SchemaException { - ItemWrapperFactory factory = (ItemWrapperFactory) registry.findWrapperFactory(item.getDefinition()); + ItemWrapperFactory factory = registry.findWrapperFactory(item.getDefinition()); ctx.setCreateIfEmpty(true); - return factory.createWrapper(item, status, ctx); + return factory.createWrapper(null, item, status, ctx); } @@ -2744,7 +2744,7 @@ public Panel initItemPanel(String panelId, QName typeNa } } - public , C extends Containerable> Panel initContainerValuePanel(String id, IModel model, + public Panel initContainerValuePanel(String id, IModel> model, ItemPanelSettings settings) { //TODO find from registry first return new PrismContainerValuePanel<>(id, model, settings); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemEditabilityHandler.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemEditabilityHandler.java similarity index 63% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemEditabilityHandler.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemEditabilityHandler.java index 69f2ff9aa00..bc8ef404d75 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemEditabilityHandler.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemEditabilityHandler.java @@ -4,14 +4,10 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.io.Serializable; -import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.web.component.prism.ItemVisibility; - /** * @author honchar * diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemMandatoryHandler.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemMandatoryHandler.java similarity index 64% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemMandatoryHandler.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemMandatoryHandler.java index 997130ffda7..3bfb47c8427 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemMandatoryHandler.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemMandatoryHandler.java @@ -4,15 +4,13 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; - -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.io.Serializable; @FunctionalInterface public interface ItemMandatoryHandler extends Serializable { - boolean isMandatory(ItemWrapper, ?, ?, ?> itemWrapper); + boolean isMandatory(ItemWrapper, ?> itemWrapper); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemVisibilityHandler.java similarity index 81% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemVisibilityHandler.java index d9ca35257ab..cd9d46aae01 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemVisibilityHandler.java @@ -4,11 +4,10 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.io.Serializable; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; import com.evolveum.midpoint.web.component.prism.ItemVisibility; /** diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ItemWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemWrapper.java similarity index 66% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ItemWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemWrapper.java index f453815ab48..21076df70f1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ItemWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ItemWrapper.java @@ -1,83 +1,88 @@ -/* - * Copyright (c) 2010-2018 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.api.prism; - -import java.io.Serializable; -import java.util.Collection; -import java.util.List; - -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.impl.prism.ItemVisibilityHandler; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; -import com.evolveum.midpoint.prism.Item; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismValue; -import com.evolveum.midpoint.prism.Revivable; -import com.evolveum.midpoint.prism.delta.ItemDelta; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.util.DebugDumpable; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserInterfaceElementVisibilityType; - -/** - * @author katka - * - */ -public interface ItemWrapper, ID extends ItemDefinition, VW extends PrismValueWrapper> extends ItemDefinition, Revivable, DebugDumpable, Serializable { - - - String debugDump(int indent); - - void setVisibleOverwrite(UserInterfaceElementVisibilityType visible); - boolean isVisible(PrismContainerValueWrapper parentContainer, ItemVisibilityHandler visibilityHandler); - - boolean checkRequired(PageBase pageBase); - - PrismContainerValueWrapper> getParent(); - - boolean isShowEmpty(); - - void setShowEmpty(boolean isShowEmpty, boolean recursive); - - boolean isShowInVirtualContainer(); - - void setShowInVirtualContainer(boolean showInVirtualContainer); - - ItemPath getPath(); - - //NEW - - boolean isReadOnly(); - - void setReadOnly(boolean readOnly); - - ExpressionType getFormComponentValidator(); - - List getValues(); - VW getValue() throws SchemaException; - - boolean isStripe(); - void setStripe(boolean stripe); - - I getItem(); - - boolean isColumn(); - void setColumn(boolean column); - - > void applyDelta(D delta) throws SchemaException; - - > Collection getDelta() throws SchemaException; - - ItemStatus findObjectStatus(); - - , O extends ObjectType> OW findObjectWrapper(); - - ItemStatus getStatus(); -} +/* + * Copyright (c) 2010-2018 Evolveum and contributors + * + * This work is dual-licensed under the Apache License 2.0 + * and European Union Public License. See LICENSE file for details. + */ +package com.evolveum.midpoint.gui.api.prism.wrapper; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; +import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; +import com.evolveum.midpoint.prism.Item; +import com.evolveum.midpoint.prism.ItemDefinition; +import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.prism.Revivable; +import com.evolveum.midpoint.prism.delta.ItemDelta; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.util.DebugDumpable; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.UserInterfaceElementVisibilityType; + +/** + * @author katka + * + */ +public interface ItemWrapper extends ItemDefinition, Revivable, DebugDumpable, Serializable { + + + String debugDump(int indent); + + void setVisibleOverwrite(UserInterfaceElementVisibilityType visible); + UserInterfaceElementVisibilityType getVisibleOverwrite(); + boolean isVisible(PrismContainerValueWrapper> parentContainer, ItemVisibilityHandler visibilityHandler); + + boolean checkRequired(PageBase pageBase); + + PrismContainerValueWrapper> getParent(); + + boolean isShowEmpty(); + + void setShowEmpty(boolean isShowEmpty, boolean recursive); + + boolean isShowInVirtualContainer(); + + void setShowInVirtualContainer(boolean showInVirtualContainer); + + ItemPath getPath(); + + //NEW + + boolean isReadOnly(); + + void setReadOnly(boolean readOnly); + + ExpressionType getFormComponentValidator(); + + List getValues(); + VW getValue() throws SchemaException; + + boolean isStripe(); + void setStripe(boolean stripe); + + I getItem(); + + boolean isColumn(); + void setColumn(boolean column); + + > Collection getDelta() throws SchemaException; + + ItemStatus findObjectStatus(); + + , O extends ObjectType> OW findObjectWrapper(); + + ItemStatus getStatus(); + + boolean isEmpty(); + + void remove(VW valueWrapper, ModelServiceLocator locator) throws SchemaException; + void removeAll(ModelServiceLocator locator) throws SchemaException; + + void add(PV newValueWrapper, ModelServiceLocator locator) throws SchemaException; +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerValueWrapper.java similarity index 89% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValueWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerValueWrapper.java index 2b82e1b8514..715a79e2bc5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValueWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerValueWrapper.java @@ -4,12 +4,10 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.util.List; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContainerValue; @@ -48,9 +46,9 @@ public interface PrismContainerValueWrapper extends Pri List> getContainers(); - List extends ItemWrapper,?,?,?>> getNonContainers(); + List extends ItemWrapper,?>> getNonContainers(); - List extends ItemWrapper,?,?,?>> getItems(); + List extends ItemWrapper,?>> getItems(); PrismContainerWrapper findContainer(ItemPath path) throws SchemaException; PrismPropertyWrapper findProperty(ItemPath propertyPath) throws SchemaException; @@ -83,4 +81,6 @@ public interface PrismContainerValueWrapper extends Pri void setVirtualContainerItems(List virtualItems); boolean isVirtual(); + PrismContainerDefinition getDefinition(); + } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerWrapper.java similarity index 73% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerWrapper.java index b672da35942..a4f282d41ba 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismContainerWrapper.java @@ -4,11 +4,9 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.api.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.util.exception.SchemaException; @@ -17,7 +15,7 @@ * @author katka * */ -public interface PrismContainerWrapper extends ItemWrapper, PrismContainer, PrismContainerDefinition, PrismContainerValueWrapper>, PrismContainerDefinition{ +public interface PrismContainerWrapper extends ItemWrapper, PrismContainerValueWrapper>, PrismContainerDefinition{ void setExpanded(boolean expanded); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectValueWrapper.java similarity index 88% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValueWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectValueWrapper.java index 16b27fb8b46..5a8de9c45f2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValueWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectValueWrapper.java @@ -4,7 +4,7 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismObjectWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectWrapper.java similarity index 87% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismObjectWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectWrapper.java index baf8b3ac34e..306b7b8a39f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismObjectWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismObjectWrapper.java @@ -4,9 +4,8 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.api.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismObjectValueWrapper; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.util.exception.SchemaException; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismPropertyWrapper.java similarity index 67% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismPropertyWrapper.java index 8c52afcc1f8..f537591b72b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismPropertyWrapper.java @@ -4,19 +4,18 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.PrismPropertyDefinition; -import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType; /** * @author katka * */ -public interface PrismPropertyWrapper extends ItemWrapper, PrismProperty, PrismPropertyDefinition, PrismPropertyValueWrapper>, PrismPropertyDefinition { +public interface PrismPropertyWrapper extends ItemWrapper, PrismPropertyValueWrapper>, PrismPropertyDefinition { LookupTableType getPredefinedValues(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferenceWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismReferenceWrapper.java similarity index 68% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferenceWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismReferenceWrapper.java index 76dd0e78b56..3e0bbe1f6ea 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferenceWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismReferenceWrapper.java @@ -4,16 +4,14 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.util.List; - import javax.xml.namespace.QName; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismReferenceValueWrapperImpl; import com.evolveum.midpoint.prism.PrismReference; import com.evolveum.midpoint.prism.PrismReferenceDefinition; -import com.evolveum.midpoint.prism.PrismReferenceValue; import com.evolveum.midpoint.prism.Referencable; import com.evolveum.midpoint.prism.query.ObjectFilter; @@ -21,7 +19,7 @@ * @author katka * */ -public interface PrismReferenceWrapper extends ItemWrapper>, PrismReferenceDefinition { +public interface PrismReferenceWrapper extends ItemWrapper>, PrismReferenceDefinition { ObjectFilter getFilter(); void setFilter(ObjectFilter filter); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismValueWrapper.java similarity index 75% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismValueWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismValueWrapper.java index 0251c0b4490..23a69128fe7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismValueWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/PrismValueWrapper.java @@ -4,11 +4,10 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import java.io.Serializable; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.delta.ItemDelta; @@ -32,7 +31,8 @@ public interface PrismValueWrapper extends Serializable V getOldValue(); IW getParent(); - , ID extends ItemDefinition> void addToDelta(D delta) throws SchemaException; + > void addToDelta(D delta) throws SchemaException; + + boolean isVisible(); -// void applyDelta(ID delta) throws SchemaException; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ResourceAttributeWrapper.java similarity index 88% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ResourceAttributeWrapper.java index 6c7b4bb7f03..de621952de5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ResourceAttributeWrapper.java @@ -4,7 +4,7 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.impl.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import com.evolveum.midpoint.common.refinery.RefinedAttributeDefinition; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ShadowWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ShadowWrapper.java similarity index 92% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ShadowWrapper.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ShadowWrapper.java index 1a56f7c371c..a0de21c0d0d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/ShadowWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/wrapper/ShadowWrapper.java @@ -4,7 +4,7 @@ * This work is dual-licensed under the Apache License 2.0 * and European Union Public License. See LICENSE file for details. */ -package com.evolveum.midpoint.gui.api.prism; +package com.evolveum.midpoint.gui.api.prism.wrapper; import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/registry/GuiComponentRegistry.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/registry/GuiComponentRegistry.java index 859e08bfa3a..36f103d1666 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/registry/GuiComponentRegistry.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/registry/GuiComponentRegistry.java @@ -12,13 +12,12 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.gui.api.factory.GuiComponentFactory; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.factory.ItemWrapperFactory; -import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismObjectDefinition; -import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismContainerWrapperFactory; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.factory.wrapper.ItemWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; +import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; public interface GuiComponentRegistry extends Serializable { @@ -33,6 +32,8 @@ public interface GuiComponentRegistry extends Serializable { ItemWrapperFactory findWrapperFactory(ItemDefinition> def); + PrismContainerWrapperFactory findContainerWrapperFactory(PrismContainerDefinition def); + PrismObjectWrapperFactory getObjectWrapperFactory(PrismObjectDefinition objectDef); void addToRegistry(ItemWrapperFactory factory); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java index d58be9062d6..564345fd313 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java @@ -8,11 +8,11 @@ import com.evolveum.midpoint.common.LocalizationService; import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; -import com.evolveum.midpoint.gui.impl.factory.WrapperContext; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.factory.wrapper.PrismObjectWrapperFactory; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.model.api.ModelInteractionService; import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 6261fcc826b..cc3eb9f4693 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -16,18 +16,16 @@ import com.evolveum.midpoint.gui.api.model.NonEmptyModel; import com.evolveum.midpoint.gui.api.model.ReadOnlyValueModel; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon; import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle; import com.evolveum.midpoint.gui.impl.component.icon.LayeredIconCssStyle; -import com.evolveum.midpoint.gui.impl.factory.WrapperContext; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; import com.evolveum.midpoint.model.api.*; import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView; import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile; @@ -57,11 +55,8 @@ import com.evolveum.midpoint.schema.util.*; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.security.api.MidPointPrincipal; -import com.evolveum.midpoint.security.enforcer.api.AuthorizationParameters; import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.task.api.TaskBinding; import com.evolveum.midpoint.task.api.TaskCategory; -import com.evolveum.midpoint.task.api.TaskExecutionStatus; import com.evolveum.midpoint.util.*; import com.evolveum.midpoint.util.exception.*; import com.evolveum.midpoint.util.logging.LoggingUtils; @@ -90,7 +85,6 @@ import com.evolveum.midpoint.web.component.util.Selectable; import com.evolveum.midpoint.web.component.util.SelectableBeanImpl; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; -import com.evolveum.midpoint.web.model.PrismPropertyWrapperModel; import com.evolveum.midpoint.web.page.PageDialog; import com.evolveum.midpoint.web.page.admin.archetype.PageArchetype; import com.evolveum.midpoint.web.page.admin.cases.PageCase; @@ -159,7 +153,6 @@ import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.request.IRequestHandler; import org.apache.wicket.request.cycle.RequestCycle; @@ -2642,7 +2635,7 @@ public static PolyStringType getCollectionLabel(DisplayType viewDisplayType, Col return null; } - public static ItemVisibility checkShadowActivationAndPasswordVisibility(ItemWrapper, ?, ?,?> itemWrapper, + public static ItemVisibility checkShadowActivationAndPasswordVisibility(ItemWrapper,?> itemWrapper, ShadowType shadowType) { ObjectReferenceType resourceRef = shadowType.getResourceRef(); if (resourceRef == null) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebPrismUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebPrismUtil.java index a576d5aeadd..9fd718c5015 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebPrismUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebPrismUtil.java @@ -1,147 +1,160 @@ -/* - * Copyright (c) 2010-2018 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.api.util; - -import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; -import com.evolveum.midpoint.gui.impl.prism.ItemPanel; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper; -import com.evolveum.midpoint.prism.*; -import com.evolveum.midpoint.prism.path.ItemPath; - -import com.evolveum.midpoint.schema.GetOperationOptions; -import com.evolveum.midpoint.util.QNameUtil; -import com.evolveum.midpoint.util.logging.LoggingUtils; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; - -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; - -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.impl.factory.WrapperContext; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.task.api.Task; -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.web.component.prism.ValueStatus; - -import javax.xml.namespace.QName; -import java.util.Collections; -import java.util.List; - -/** - * @author katka - * - */ -public class WebPrismUtil { - - private static final Trace LOGGER = TraceManager.getTrace(WebPrismUtil.class); - - private static final String DOT_CLASS = WebPrismUtil.class.getName() + "."; - private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue"; - - public static , I extends Item, V extends PrismValue> String getHelpText(ID def) { - if (def == null) { - return null; - } - String doc = def.getHelp(); - if (StringUtils.isEmpty(doc)) { - doc = def.getDocumentation(); - if (StringUtils.isEmpty(doc)) { - return null; - } - } - - return doc.replaceAll("\\s{2,}", " ").trim(); - } - - - public static VW createNewValueWrapper(IW itemWrapper, PV newValue, PageBase pageBase, AjaxRequestTarget target) { - LOGGER.debug("Adding value to {}", itemWrapper); - - OperationResult result = new OperationResult(OPERATION_CREATE_NEW_VALUE); - - VW newValueWrapper = null; - try { - - if (!(itemWrapper instanceof PrismContainerWrapper)) { - itemWrapper.getItem().add(newValue); - } - - Task task = pageBase.createSimpleTask(OPERATION_CREATE_NEW_VALUE); - - WrapperContext context = new WrapperContext(task, result); - context.setObjectStatus(itemWrapper.findObjectStatus()); - context.setShowEmpty(true); - context.setCreateIfEmpty(true); - - newValueWrapper = pageBase.createValueWrapper(itemWrapper, newValue, ValueStatus.ADDED, context); - itemWrapper.getValues().add(newValueWrapper); - result.recordSuccess(); - - } catch (SchemaException e) { - LOGGER.error("Cannot create new value for {}", itemWrapper, e); - result.recordFatalError(pageBase.createStringResource("WebPrismUtil.message.createNewValueWrapper.fatalError", newValue, e.getMessage()).getString(), e); - target.add(pageBase.getFeedbackPanel()); - } - - return newValueWrapper; - } - - public static IW findItemWrapper(ItemWrapper,?,?,?> child, ItemPath absoluthPathToFind, Class wrapperClass) { - PrismObjectWrapper> taskWrapper = child.findObjectWrapper(); - try { - return taskWrapper.findItem(ItemPath.create(absoluthPathToFind), wrapperClass); - } catch (SchemaException e) { - LoggingUtils.logUnexpectedException(LOGGER, "Cannot get obejct reference value, {}", e, e.getMessage()); - return null; - } - } - - public static PrismReferenceWrapper findReferenceWrapper(ItemWrapper,?,?,?> child, ItemPath pathToFind) { - return findItemWrapper(child, pathToFind, PrismReferenceWrapper.class); - } - - public static PrismPropertyWrapper findPropertyWrapper(ItemWrapper,?,?,?> child, ItemPath pathToFind) { - return findItemWrapper(child, pathToFind, PrismPropertyWrapper.class); - } - - public static PrismReferenceValue findSingleReferenceValue(ItemWrapper,?,?,?> child, ItemPath pathToFind) { - PrismReferenceWrapper objectRefWrapper = findReferenceWrapper(child, pathToFind); - if (objectRefWrapper == null) { - return null; - } - - try { - return objectRefWrapper.getValue().getNewValue(); - } catch (SchemaException e) { - LoggingUtils.logUnexpectedException(LOGGER, "Cannot get object reference value, {}", e, e.getMessage()); - return null; - } - } - - public static PrismPropertyValue findSinglePropertyValue(ItemWrapper,?,?,?> child, ItemPath pathToFind) { - PrismPropertyWrapper propertyWrapper = findPropertyWrapper(child, pathToFind); - if (propertyWrapper == null) { - return null; - } - - try { - return propertyWrapper.getValue().getNewValue(); - } catch (SchemaException e) { - LoggingUtils.logUnexpectedException(LOGGER, "Cannot get object reference value, {}", e, e.getMessage()); - return null; - } - } -} +/* + * Copyright (c) 2010-2018 Evolveum and contributors + * + * This work is dual-licensed under the Apache License 2.0 + * and European Union Public License. See LICENSE file for details. + */ +package com.evolveum.midpoint.gui.api.util; + +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; +import com.evolveum.midpoint.prism.*; +import com.evolveum.midpoint.prism.path.ItemPath; + +import com.evolveum.midpoint.util.logging.LoggingUtils; + +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.ajax.AjaxRequestTarget; + +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.task.api.Task; +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.web.component.prism.ValueStatus; + +/** + * @author katka + * + */ +public class WebPrismUtil { + + private static final Trace LOGGER = TraceManager.getTrace(WebPrismUtil.class); + + private static final String DOT_CLASS = WebPrismUtil.class.getName() + "."; + private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue"; + + public static , I extends Item,?>> String getHelpText(ID def) { + if (def == null) { + return null; + } + String doc = def.getHelp(); + if (StringUtils.isEmpty(doc)) { + doc = def.getDocumentation(); + if (StringUtils.isEmpty(doc)) { + return null; + } + } + + return doc.replaceAll("\\s{2,}", " ").trim(); + } + + + public static VW createNewValueWrapper(IW itemWrapper, PV newValue, PageBase pageBase, AjaxRequestTarget target) { + LOGGER.debug("Adding value to {}", itemWrapper); + + OperationResult result = new OperationResult(OPERATION_CREATE_NEW_VALUE); + + VW newValueWrapper = null; + try { + + if (!(itemWrapper instanceof PrismContainerWrapper)) { + itemWrapper.getItem().add(newValue); + } + + Task task = pageBase.createSimpleTask(OPERATION_CREATE_NEW_VALUE); + + WrapperContext context = new WrapperContext(task, result); + context.setObjectStatus(itemWrapper.findObjectStatus()); + context.setShowEmpty(true); + context.setCreateIfEmpty(true); + + newValueWrapper = pageBase.createValueWrapper(itemWrapper, newValue, ValueStatus.ADDED, context); + itemWrapper.getValues().add(newValueWrapper); + result.recordSuccess(); + + } catch (SchemaException e) { + LOGGER.error("Cannot create new value for {}", itemWrapper, e); + result.recordFatalError(pageBase.createStringResource("WebPrismUtil.message.createNewValueWrapper.fatalError", newValue, e.getMessage()).getString(), e); + target.add(pageBase.getFeedbackPanel()); + } + + return newValueWrapper; + } + + public static VW createNewValueWrapper(IW itemWrapper, PV newValue, ModelServiceLocator modelServiceLocator) throws SchemaException { + LOGGER.debug("Adding value to {}", itemWrapper); + + + + +// if (!(itemWrapper instanceof PrismContainerWrapper)) { +// itemWrapper.getItem().add(newValue); +// } + + Task task = modelServiceLocator.createSimpleTask(OPERATION_CREATE_NEW_VALUE); + OperationResult result = new OperationResult(OPERATION_CREATE_NEW_VALUE); + + WrapperContext context = new WrapperContext(task, result); + context.setObjectStatus(itemWrapper.findObjectStatus()); + context.setShowEmpty(true); + context.setCreateIfEmpty(true); + + VW newValueWrapper = modelServiceLocator.createValueWrapper(itemWrapper, newValue, ValueStatus.ADDED, context); + result.recordSuccess(); + + return newValueWrapper; + } + + public static IW findItemWrapper(ItemWrapper,?> child, ItemPath absoluthPathToFind, Class wrapperClass) { + PrismObjectWrapper> taskWrapper = child.findObjectWrapper(); + try { + return taskWrapper.findItem(ItemPath.create(absoluthPathToFind), wrapperClass); + } catch (SchemaException e) { + LoggingUtils.logUnexpectedException(LOGGER, "Cannot get obejct reference value, {}", e, e.getMessage()); + return null; + } + } + + public static PrismReferenceWrapper findReferenceWrapper(ItemWrapper,?> child, ItemPath pathToFind) { + return findItemWrapper(child, pathToFind, PrismReferenceWrapper.class); + } + + public static PrismPropertyWrapper findPropertyWrapper(ItemWrapper,?> child, ItemPath pathToFind) { + return findItemWrapper(child, pathToFind, PrismPropertyWrapper.class); + } + + public static PrismReferenceValue findSingleReferenceValue(ItemWrapper,?> child, ItemPath pathToFind) { + PrismReferenceWrapper objectRefWrapper = findReferenceWrapper(child, pathToFind); + if (objectRefWrapper == null) { + return null; + } + + try { + return objectRefWrapper.getValue().getNewValue(); + } catch (SchemaException e) { + LoggingUtils.logUnexpectedException(LOGGER, "Cannot get object reference value, {}", e, e.getMessage()); + return null; + } + } + + public static PrismPropertyValue findSinglePropertyValue(ItemWrapper,?> child, ItemPath pathToFind) { + PrismPropertyWrapper propertyWrapper = findPropertyWrapper(child, pathToFind); + if (propertyWrapper == null) { + return null; + } + + try { + return propertyWrapper.getValue().getNewValue(); + } catch (SchemaException e) { + LoggingUtils.logUnexpectedException(LOGGER, "Cannot get object reference value, {}", e, e.getMessage()); + return null; + } + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html index ab46bc94005..2e063fe32d3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html @@ -11,7 +11,9 @@ - + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java index 82c30b54710..2f5067455ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java @@ -6,9 +6,10 @@ */ package com.evolveum.midpoint.gui.impl.component; -import com.evolveum.midpoint.gui.impl.prism.ItemMandatoryHandler; -import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings; -import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemMandatoryHandler; + +import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings; +import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettingsBuilder; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.Panel; @@ -16,11 +17,9 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.component.DisplayNamePanel; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.prism.Containerable; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.prism.ItemVisibility; /** @@ -69,7 +68,6 @@ protected void addBasicContainerValuePanel(String idPanel){ protected Panel getBasicContainerValuePanel(String idPanel){ ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder() .visibilityHandler(wrapper -> getBasicTabVisibity(wrapper)) - .showOnTopLevel(true) .editabilityHandler(wrapper -> getBasicTabEditability(wrapper)); if (getMandatoryHandler() != null) { @@ -81,11 +79,11 @@ protected Panel getBasicContainerValuePanel(String idPanel){ return containerValue; } - protected ItemVisibility getBasicTabVisibity(ItemWrapper, ?, ?, ?> itemWrapper) { //, ItemPath parentPath) { + protected ItemVisibility getBasicTabVisibity(ItemWrapper, ?> itemWrapper) { //, ItemPath parentPath) { return ItemVisibility.AUTO; } - protected boolean getBasicTabEditability(ItemWrapper,?,?,?> itemWrapper) { + protected boolean getBasicTabEditability(ItemWrapper,?> itemWrapper) { return true; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsWithSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsWithSummaryPanel.java index b04e22b679b..6e58a1fec18 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsWithSummaryPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsWithSummaryPanel.java @@ -9,7 +9,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.prism.Containerable; /** diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java index e76b0ee58f6..bf7479c5949 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java @@ -30,11 +30,11 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebPrismUtil; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; import com.evolveum.midpoint.gui.impl.util.GuiImplUtil; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; @@ -44,7 +44,6 @@ import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.web.component.MultifunctionalButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; import com.evolveum.midpoint.web.component.data.Table; import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; @@ -518,7 +517,6 @@ public List getDefaultMenuActions() { menuItems.add(new ButtonInlineMenuItem(createStringResource("pageAdminFocus.button.delete")) { private static final long serialVersionUID = 1L; - @Override public CompositedIconBuilder getIconCompositedBuilder(){ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java index 725bb7ceb0a..ab398a263b4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java @@ -17,8 +17,8 @@ import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.util.logging.Trace; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumn.java index 9c44727fa4c..ee6f3fc4db4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumn.java @@ -12,19 +12,12 @@ import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.path.ItemPath; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumnPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumnPanel.java index e8a8819340d..b68507d300c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumnPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/AbstractItemWrapperColumnPanel.java @@ -16,9 +16,9 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.prism.path.ItemPath; /** diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/CompositedIconColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/CompositedIconColumn.java index 66b3cdf555e..d3928612a63 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/CompositedIconColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/CompositedIconColumn.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; @@ -19,7 +20,7 @@ /** * @author skublik */ -public abstract class CompositedIconColumn extends AbstractColumn implements IExportableColumn { +public abstract class CompositedIconColumn extends AbstractColumn implements IColumn { private static final long serialVersionUID = 1L; public CompositedIconColumn(IModel displayModel) { @@ -43,7 +44,6 @@ public void populateItem(Item> cellItem, String componentId, I protected abstract CompositedIcon getCompositedIcon(final IModel rowModel); - @Override public IModel getDataModel(IModel rowModel) { return Model.of(""); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/LinkPrismPropertyColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/LinkPrismPropertyColumn.java index b540f99b7bf..dd40af1cce8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/LinkPrismPropertyColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/LinkPrismPropertyColumn.java @@ -7,22 +7,7 @@ package com.evolveum.midpoint.gui.impl.component.data.column; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.table.export.IExportableColumn; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.model.IModel; - -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; import com.evolveum.midpoint.prism.Containerable; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.web.component.data.column.LinkPanel; /** * @author skublik diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumn.java index 2b27f863788..9d4ccf78125 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumn.java @@ -10,10 +10,10 @@ import org.apache.wicket.model.IModel; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerColumnHeaderPanel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; +import com.evolveum.midpoint.gui.impl.prism.panel.PrismContainerColumnHeaderPanel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.path.ItemPath; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumnPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumnPanel.java index c143c9e1535..ec4143f2d76 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumnPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismContainerWrapperColumnPanel.java @@ -6,7 +6,6 @@ */ package com.evolveum.midpoint.gui.impl.component.data.column; -import java.util.ArrayList; import java.util.List; import org.apache.commons.collections4.CollectionUtils; @@ -14,14 +13,13 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; -import com.ctc.wstx.util.StringUtil; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.schema.util.PolicyRuleTypeUtil; import com.evolveum.midpoint.util.exception.SchemaException; @@ -33,14 +31,10 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import com.evolveum.midpoint.xml.ns._public.common.common_3.LifecycleStateModelType; import com.evolveum.midpoint.xml.ns._public.common.common_3.LifecycleStateType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationExecutionStatusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.PendingOperationTypeType; import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyActionsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyConstraintsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectAssociationType; -import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType; /** * @author katka diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumn.java index 0b62dcaea4c..72d822fd1f5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumn.java @@ -13,11 +13,11 @@ import org.apache.wicket.model.Model; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyHeaderPanel; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.impl.prism.panel.PrismPropertyHeaderPanel; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.path.ItemPath; @@ -49,7 +49,18 @@ public IModel> getDataModel(IModel> rowModel) { @Override protected Component createHeader(String componentId, IModel extends PrismContainerDefinition> mainModel) { - return new PrismPropertyHeaderPanel<>(componentId, new PrismPropertyWrapperHeaderModel(mainModel, itemName, pageBase)); + return new PrismPropertyHeaderPanel(componentId, new PrismPropertyWrapperHeaderModel(mainModel, itemName, pageBase)) { + + @Override + protected boolean isAddButtonVisible() { + return false; + } + + @Override + protected boolean isButtonEnabled() { + return false; + } + }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumnPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumnPanel.java index d082958d109..bc3e08e1df5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumnPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismPropertyWrapperColumnPanel.java @@ -12,10 +12,10 @@ import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType; import com.evolveum.midpoint.gui.impl.error.ErrorPanel; -import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; +import com.evolveum.midpoint.gui.impl.factory.panel.ItemRealValueModel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismPropertyValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumn.java index 4e4d88a5b46..a5694982a59 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumn.java @@ -13,11 +13,11 @@ import org.apache.wicket.model.Model; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismReferenceHeaderPanel; -import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.impl.prism.panel.PrismReferenceHeaderPanel; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismReferenceValue; @@ -51,7 +51,17 @@ public IModel> getDataModel(IModel> rowModel) { @Override protected Component createHeader(String componentId, IModel extends PrismContainerDefinition> mainModel) { - return new PrismReferenceHeaderPanel<>(componentId, new PrismReferenceWrapperHeaderModel(mainModel, itemName, pageBase)); + return new PrismReferenceHeaderPanel(componentId, new PrismReferenceWrapperHeaderModel(mainModel, itemName, pageBase)) { + @Override + protected boolean isAddButtonVisible() { + return false; + } + + @Override + protected boolean isButtonEnabled() { + return false; + } + }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumnPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumnPanel.java index be898b96844..9e3317a0bd0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumnPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/data/column/PrismReferenceWrapperColumnPanel.java @@ -13,12 +13,9 @@ import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType; import com.evolveum.midpoint.gui.impl.error.ErrorPanel; -import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismReferenceWrapper; +import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper; import com.evolveum.midpoint.prism.PrismReferenceValue; import com.evolveum.midpoint.prism.Referencable; import com.evolveum.midpoint.util.exception.SchemaException; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ApprovalSchemaWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ApprovalSchemaWrapperFactoryImpl.java deleted file mode 100644 index ae2e03cb100..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ApprovalSchemaWrapperFactoryImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ApprovalSchemaType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Created by Kate Honchar - */ -@Component -public class ApprovalSchemaWrapperFactoryImpl extends PrismContainerWrapperFactoryImpl { - - @Autowired - private GuiComponentRegistry registry; - - @Override - public boolean match(ItemDefinition> def) { - return ApprovalSchemaType.COMPLEX_TYPE .equals(def.getTypeName()); - } - - @Override - public void register() { - registry.addToRegistry(this); - } - - @Override - public int getOrder() { - return 1000; - } - - @Override - protected PrismContainerValue createNewValue(PrismContainer item) { - throw new UnsupportedOperationException("New approval schema value should not be created while creating wrappers."); - } - - - @Override - protected boolean shouldCreateEmptyValue(PrismContainer item, WrapperContext context) { - return false; - } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/AssignmentWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/AssignmentWrapperFactoryImpl.java deleted file mode 100644 index dd21baed7e6..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/AssignmentWrapperFactoryImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismContainerDefinition; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.web.component.prism.ValueStatus; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; - -/** - * @author katka - * - */ -@Component -public class AssignmentWrapperFactoryImpl extends PrismContainerWrapperFactoryImpl { - - @Autowired private GuiComponentRegistry registry; - - @Override - public boolean match(ItemDefinition> def) { - return def instanceof PrismContainerDefinition && def.isMultiValue(); - } - - @Override - public void register() { - registry.addToRegistry(this); - } - - @Override - public int getOrder() { - return 1000; - } - - @Override - protected PrismContainerValue createNewValue(PrismContainer item) { - throw new UnsupportedOperationException("New assignment value should not be created while creating wrappers."); - } - - - @Override - protected boolean shouldCreateEmptyValue(PrismContainer item, WrapperContext context) { - return false; - } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseEventWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseEventWrapperFactoryImpl.java deleted file mode 100644 index d3775fbb0b8..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseEventWrapperFactoryImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.web.component.prism.ValueStatus; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseEventType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemCompletionEventType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemDelegationEventType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkItemEventType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Created by honchar - */ -@Component -public class CaseEventWrapperFactoryImpl extends PrismContainerWrapperFactoryImpl { - - @Autowired - private GuiComponentRegistry registry; - - @Override - public boolean match(ItemDefinition> def) { - return CaseEventType.COMPLEX_TYPE.equals(def.getTypeName()) || WorkItemEventType.COMPLEX_TYPE.equals(def.getTypeName()) || - WorkItemCompletionEventType.COMPLEX_TYPE.equals(def.getTypeName()) || WorkItemDelegationEventType.COMPLEX_TYPE.equals(def.getTypeName()); - } - - @Override - public void register() { - registry.addToRegistry(this); - } - - @Override - public int getOrder() { - return 1000; - } - - @Override - protected PrismContainerValue createNewValue(PrismContainer item) { - throw new UnsupportedOperationException("New case event value should not be created while creating wrappers."); - } - - - @Override - protected boolean shouldCreateEmptyValue(PrismContainer item, WrapperContext context) { - return false; - } - - @Override - public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper parent, - PrismContainerValue value, ValueStatus status, WrapperContext context) throws SchemaException { - context.setCreateIfEmpty(false); - return super.createValueWrapper(parent, value, status, context); - } - - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseWorkItemWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseWorkItemWrapperFactoryImpl.java deleted file mode 100644 index 10bd9c8fa8d..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/CaseWorkItemWrapperFactoryImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.prism.CaseWorkItemTypeWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.web.component.prism.ValueStatus; -import com.evolveum.midpoint.web.page.admin.workflow.WorkItemDetailsPanel; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseWorkItemType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Created by honchar - */ -@Component -public class CaseWorkItemWrapperFactoryImpl extends PrismContainerWrapperFactoryImpl { - - @Autowired - private GuiComponentRegistry registry; - - @Override - public boolean match(ItemDefinition> def) { - return CaseWorkItemType.COMPLEX_TYPE.equals(def.getTypeName()); - } - - @Override - public void register() { - registry.addToRegistry(this); - } - - @Override - public int getOrder() { - return 1000; - } - - @Override - protected PrismContainerValue createNewValue(PrismContainer item) { - throw new UnsupportedOperationException("New case work item value should not be created while creating wrappers."); - } - - - @Override - protected boolean shouldCreateEmptyValue(PrismContainer item, WrapperContext context) { - return false; - } - - @Override - protected PrismContainerWrapper createWrapper(PrismContainerValueWrapper> parent, PrismContainer item, - ItemStatus status, WrapperContext ctx) { - getRegistry().registerWrapperPanel(item.getDefinition().getTypeName(), WorkItemDetailsPanel.class); - CaseWorkItemTypeWrapper containerWrapper = new CaseWorkItemTypeWrapper(parent, item, status); - return containerWrapper; - } - - @Override - public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper parent, - PrismContainerValue value, ValueStatus status, WrapperContext context) throws SchemaException { - context.setCreateIfEmpty(false); - return super.createValueWrapper(parent, value, status, context); - } - - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ExpressionWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ExpressionWrapperFactory.java deleted file mode 100644 index b4272f8e8cd..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/ExpressionWrapperFactory.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.impl.prism.*; -import com.evolveum.midpoint.gui.impl.prism.component.ExpressionPropertyPanel; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismProperty; -import com.evolveum.midpoint.prism.path.ItemName; -import com.evolveum.midpoint.util.QNameUtil; -import com.evolveum.midpoint.gui.impl.prism.ExpressionWrapper; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType; -import net.sf.jasperreports.olap.mapping.Mapping; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; - -/** - * Created by honchar - */ -@Component -public class ExpressionWrapperFactory extends PrismPropertyWrapperFactoryImpl { - - @Override - public boolean match(ItemDefinition> def) { - return QNameUtil.match(ExpressionType.COMPLEX_TYPE, def.getTypeName()); - } - - @PostConstruct - @Override - public void register() { - getRegistry().addToRegistry(this); - } - - @Override - public int getOrder() { - return 100; - } - - @Override - protected PrismPropertyWrapper createWrapper(PrismContainerValueWrapper> parent, PrismProperty item, - ItemStatus status, WrapperContext ctx) { - - ExpressionWrapper propertyWrapper = new ExpressionWrapper(parent, item, status); - if (propertyWrapper.isConstructionExpression() || propertyWrapper.isAttributeExpression() || propertyWrapper.isAssociationExpression()) { - getRegistry().registerWrapperPanel(propertyWrapper.getTypeName(), ExpressionPropertyPanel.class); - } else { - return super.createWrapper(parent, item, status, ctx); - } - return propertyWrapper; - } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java deleted file mode 100644 index 0d919aadec7..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2010-2019 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.gui.impl.factory; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.xml.namespace.QName; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskPartitionDefinitionType; - -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskPartitionsDefinitionType; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.evolveum.midpoint.gui.api.prism.ItemStatus; -import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; -import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerPanel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapperImpl; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerWrapperImpl; -import com.evolveum.midpoint.prism.Containerable; -import com.evolveum.midpoint.prism.Item; -import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismContainerDefinition; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.prism.path.ItemName; -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.web.component.prism.ValueStatus; - -/** - * @author katka - */ -@Component -public class HeterogenousContainerWrapperFactory implements PrismContainerWrapperFactory { - - private static final Trace LOGGER = TraceManager.getTrace(HeterogenousContainerWrapperFactory.class); - - @Autowired private GuiComponentRegistry registry; - - @Override - public PrismContainerWrapper createWrapper(PrismContainerValueWrapper> parent, - ItemDefinition> def, WrapperContext context) throws SchemaException { - ItemName name = def.getItemName(); - - PrismContainer childItem = parent.getNewValue().findContainer(name); - ItemStatus status = ItemStatus.NOT_CHANGED; - if (childItem == null) { - childItem = (PrismContainer)parent.getNewValue().findOrCreateContainer(name); - status = ItemStatus.ADDED; - } - - PrismContainerWrapper itemWrapper = new PrismContainerWrapperImpl(parent, childItem, status); - registry.registerWrapperPanel(childItem.getDefinition().getTypeName(), PrismContainerPanel.class); - - List> valueWrappers = createValuesWrapper(itemWrapper, childItem, context); - LOGGER.trace("valueWrappers {}", itemWrapper.getValues()); - itemWrapper.getValues().addAll((Collection) valueWrappers); - - return itemWrapper; - } - - @Override - public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper parent, - PrismContainerValue value, ValueStatus status, WrapperContext context) - throws SchemaException { - PrismContainerValueWrapper containerValueWrapper = new PrismContainerValueWrapperImpl(parent, value, status); - containerValueWrapper.setShowEmpty(context.isShowEmpty()); - containerValueWrapper.setExpanded(shouldBeExpanded(parent, value, context)); - containerValueWrapper.setHeterogenous(true); - - List> wrappers = new ArrayList<>(); - - for (ItemDefinition> def : value.getDefinition().getDefinitions()) { - - Item,?> childItem = value.findItem(def.getItemName()); - - if (childItem == null && def instanceof PrismContainerDefinition) { - LOGGER.trace("Skipping creating wrapper for {}, only property and reference wrappers are created for heterogeneous containers.", def); - continue; - } - - ItemWrapperFactory,?,?> factory = registry.findWrapperFactory(def); - - ItemWrapper, ?, ?, ?> wrapper = factory.createWrapper(containerValueWrapper, def, context); - if (wrapper != null) { - wrappers.add(wrapper); - } - } - - containerValueWrapper.getItems().addAll((Collection) wrappers); - return containerValueWrapper; - } - - protected boolean shouldBeExpanded(PrismContainerWrapper parent, PrismContainerValue value, WrapperContext context) { - if (value.isEmpty()) { - return context.isShowEmpty() || containsEmphasizedItems(parent.getDefinitions()); - } - - return true; - } - - private boolean containsEmphasizedItems(List extends ItemDefinition> definitions) { - for (ItemDefinition def : definitions) { - if (def.isEmphasized()) { - return true; - } - } - - return false; - } - - protected List> createValuesWrapper(PrismContainerWrapper itemWrapper, PrismContainer item, WrapperContext context) throws SchemaException { - List> pvWrappers = new ArrayList<>(); - - if (item.getValues() == null || item.getValues().isEmpty()) { - PrismContainerValueWrapper valueWrapper = createValueWrapper(itemWrapper, item.createNewValue(), ValueStatus.ADDED, context); - pvWrappers.add(valueWrapper); - return pvWrappers; - } - - for (PrismContainerValue pcv : item.getValues()) { - PrismContainerValueWrapper