Skip to content

Commit

Permalink
creating tab for GlobalPolicyRules
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Jul 17, 2018
1 parent e2783ca commit fbc0124
Show file tree
Hide file tree
Showing 12 changed files with 575 additions and 338 deletions.
Expand Up @@ -1487,6 +1487,8 @@ private void createConfigurationMenu(SideBarMenuItem item) {
PageSystemConfigurationNew.CONFIGURATION_TAB_BASIC);
addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.objectPolicy",
PageSystemConfigurationNew.CONFIGURATION_TAB_OBJECT_POLICY);
addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.globalPolicyRule",
PageSystemConfigurationNew.CONFIGURATION_TAB_GLOBAL_POLICY_RULE);
addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.globalAccountSynchronization",
PageSystemConfigurationNew.CONFIGURATION_TAB_GLOBAL_ACCOUNT_SYNCHRONIZATION);
addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.cleanupPolicy",
Expand Down
Expand Up @@ -34,6 +34,7 @@
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.impl.util.GuiImplUtil;
import com.evolveum.midpoint.prism.Containerable;
Expand All @@ -49,6 +50,8 @@
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
Expand Down Expand Up @@ -411,4 +414,17 @@ private void deleteItemPerformed(AjaxRequestTarget target, List<ContainerValueWr
refreshTable(target);
reloadSavePreviewButtons(target);
}

public List<InlineMenuItem> getDefaultMenuActions() {
List<InlineMenuItem> menuItems = new ArrayList<>();
PrismObject obj = getFocusObject();
menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
new Model<>(true), false, createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));

menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true),
new Model<>(true), false, createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString()));
return menuItems;
}
}
@@ -0,0 +1,28 @@
<!--
~ Copyright (c) 2010-2013 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="globalPolicyRule">
</div>
<wicket:fragment wicket:id="searchFragment">
</wicket:fragment>
<wicket:fragment wicket:id="specificContainersFragment">
<!-- <div wicket:id="specificContainers" /> -->
</wicket:fragment>
</wicket:panel>
</html>

Large diffs are not rendered by default.

Expand Up @@ -95,37 +95,20 @@
/**
* @author skublik
*/
public class ObjectPolicyConfigurationTabPanel extends BasePanel<ObjectWrapper<SystemConfigurationType>> {
public class ObjectPolicyConfigurationTabPanel extends BasePanel<ContainerWrapper<ObjectPolicyConfigurationType>> {

private static final long serialVersionUID = 1L;

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

private static final String ID_OBJECTS_POLICY = "objectsPolicy";
private static final String ID_SEARCH_FRAGMENT = "searchFragment";
protected static final String ID_SPECIFIC_CONTAINERS_FRAGMENT = "specificContainersFragment";
protected static final String ID_SPECIFIC_CONTAINER = "specificContainers";
private static final String ID_SPECIFIC_CONTAINERS_FRAGMENT = "specificContainersFragment";

private LoadableModel<ContainerWrapper<ObjectPolicyConfigurationType>> model;
private List<ContainerValueWrapper<ObjectPolicyConfigurationType>> detailsPanelObjectPoliciesList = new ArrayList<>();

public ObjectPolicyConfigurationTabPanel(String id, IModel<ObjectWrapper<SystemConfigurationType>> model) {
public ObjectPolicyConfigurationTabPanel(String id, IModel<ContainerWrapper<ObjectPolicyConfigurationType>> model) {
super(id, model);
this.model = new LoadableModel<ContainerWrapper<ObjectPolicyConfigurationType>>(false) {

private static final long serialVersionUID = 1L;

@Override
protected ContainerWrapper<ObjectPolicyConfigurationType> load() {

ContainerWrapperFromObjectWrapperModel<ObjectPolicyConfigurationType, SystemConfigurationType> model = new ContainerWrapperFromObjectWrapperModel<>(getModel(),
new ItemPath(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION));

return model.getObject();
}

};

}

@Override
Expand All @@ -140,7 +123,7 @@ protected void initLayout() {
int itemPerPage = (int) ((PageBase)ObjectPolicyConfigurationTabPanel.this.getPage()).getItemsPerPage(UserProfileStorage.TableId.OBJECT_POLICIES_TAB_TABLE);
PageStorage pageStorage = ((PageBase)ObjectPolicyConfigurationTabPanel.this.getPage()).getSessionStorage().getObjectPoliciesConfigurationTabStorage();

MultivalueContainerListPanel<ObjectPolicyConfigurationType> multivalueContainerListPanel = new MultivalueContainerListPanel<ObjectPolicyConfigurationType>(ID_OBJECTS_POLICY, model,
MultivalueContainerListPanel<ObjectPolicyConfigurationType> multivalueContainerListPanel = new MultivalueContainerListPanel<ObjectPolicyConfigurationType>(ID_OBJECTS_POLICY, getModel(),
tableId, itemPerPage, pageStorage) {

private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -194,8 +177,8 @@ protected MultivalueContainerDetailsPanel<ObjectPolicyConfigurationType> getMult
}

protected void newObjectPolicyClickPerformed(AjaxRequestTarget target) {
PrismContainerValue<ObjectPolicyConfigurationType> newObjectPolicy = model.getObject().getItem().createNewValue();
ContainerValueWrapper<ObjectPolicyConfigurationType> newObjectPolicyWrapper = getMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, model);
PrismContainerValue<ObjectPolicyConfigurationType> newObjectPolicy = getModel().getObject().getItem().createNewValue();
ContainerValueWrapper<ObjectPolicyConfigurationType> newObjectPolicyWrapper = getMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, getModel());
newObjectPolicyWrapper.setShowEmpty(true, false);
newObjectPolicyWrapper.computeStripes();
getMultivalueContainerListPanel().itemDetailsPerformed(target, Arrays.asList(newObjectPolicyWrapper));
Expand Down Expand Up @@ -225,65 +208,25 @@ public ObjectPolicyConfigurationType getObject() {
@Override
protected Fragment getSpecificContainers(String contentAreaId) {
Fragment specificContainers = new Fragment(contentAreaId, ID_SPECIFIC_CONTAINERS_FRAGMENT, ObjectPolicyConfigurationTabPanel.this);

// Form form = this.findParent(Form.class);
//
// ContainerWrapper constraintsContainer = item.getModelObject().findContainerWrapper(new ItemPath(item.getModelObject().getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT));
//// if (constraintsContainer != null){
//// constraintsContainer.getValues().forEach(value ->
//// ((ContainerValueWrapper)value).getItems().forEach(
//// constraintContainerItem -> {
//// if (constraintContainerItem instanceof ContainerWrapper && ((ContainerWrapper) constraintContainerItem).getItemDefinition().isMultiValue()){
//// ((ContainerWrapper) constraintContainerItem).setRemoveContainerButtonVisible(true);
//// }
//// }
//// ));
//// }
// constraintsContainer.setShowEmpty(true, false);
// constraintsContainer.setAddContainerButtonVisible(true);
//
//
// IModel<ContainerWrapper<ConflictResolutionType>> conflictResolutionModel = new AbstractReadOnlyModel<ContainerWrapper<ConflictResolutionType>>() {
//
// private static final long serialVersionUID = 1L;
//
// @Override
// public ContainerWrapper<ConflictResolutionType> getObject() {
// return constraintsContainer;
// }
//
// };
//
// PrismContainerPanel<ConflictResolutionType> specificContainer = new PrismContainerPanel<ConflictResolutionType>(ID_SPECIFIC_CONTAINER, conflictResolutionModel, true, form, null, getPageBase());
// specificContainer.setVisible(true);
//// PrismPanel<SystemConfigurationType> panel = new PrismPanel<SystemConfigurationType>(ID_SYSTEM_CONFIG,
//// new ContainerWrapperListFromObjectWrapperModel(getModel(), getVisibleContainers()), null, form, null, getPageBase());
//// add(panel);
////
//// ItemPath assignmentPath = getModelObject().getContainerValue().getValue().asPrismContainerValue().getPath();
//// ContainerWrapperFromObjectWrapperModel<ActivationType, FocusType> activationModel = new ContainerWrapperFromObjectWrapperModel<>(((PageAdminObjectDetails<FocusType>)getPageBase()).getObjectModel(), assignmentPath.append(AssignmentType.F_ACTIVATION));
//// PrismContainerPanel<ActivationType> acitvationContainer = new PrismContainerPanel(ID_ACTIVATION_PANEL, Model.of(activationModel), true, form, itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath), getPageBase());
// specificContainers.add(specificContainer);

return specificContainers;
}

@Override
protected ContainerValuePanel<ObjectPolicyConfigurationType> getBasicContainerValuePanel(
String idPanel) {

Form form = new Form<>("form");
ItemPath itemPath = getModelObject().getPath();
ContainerValueWrapper<ObjectPolicyConfigurationType> modelObject = item.getModelObject();
modelObject.setShowEmpty(true, true);

ContainerWrapper<PropertyConstraintType> propertyConstraintModel = modelObject.findContainerWrapper(new ItemPath(modelObject.getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT));
propertyConstraintModel.setShowEmpty(true, false);
// propertyConstraintModel.setAddContainerButtonVisible(true);

return new ContainerValuePanel<ObjectPolicyConfigurationType>(idPanel, Model.of(modelObject), true, form,
itemWrapper -> super.getBasicTabVisibity(itemWrapper, itemPath), getPageBase());
}
// @Override
// protected ContainerValuePanel<ObjectPolicyConfigurationType> getBasicContainerValuePanel(
// String idPanel) {
//
// Form form = new Form<>("form");
// ItemPath itemPath = getModelObject().getPath();
// ContainerValueWrapper<ObjectPolicyConfigurationType> modelObject = item.getModelObject();
// modelObject.setShowEmpty(true, true);
//
// ContainerWrapper<PropertyConstraintType> propertyConstraintModel = modelObject.findContainerWrapper(new ItemPath(modelObject.getPath(), ObjectPolicyConfigurationType.F_PROPERTY_CONSTRAINT));
// propertyConstraintModel.setShowEmpty(true, false);
//// propertyConstraintModel.setAddContainerButtonVisible(true);
//
// return new ContainerValuePanel<ObjectPolicyConfigurationType>(idPanel, Model.of(modelObject), true, form,
// itemWrapper -> super.getBasicTabVisibity(itemWrapper, itemPath), getPageBase());
// }

};
return detailsPanel;
Expand Down Expand Up @@ -383,7 +326,7 @@ public void populateItem(Item<ICellPopulator<ContainerValueWrapper<ObjectPolicyC
}
});

List<InlineMenuItem> menuActionsList = getObjectPolicyMenuActions();
List<InlineMenuItem> menuActionsList = getMultivalueContainerListPanel().getDefaultMenuActions();
columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));

return columns;
Expand Down Expand Up @@ -448,19 +391,5 @@ public void populateItem(Item<ICellPopulator<ContainerValueWrapper<ObjectPolicyC
//
// return searchContainer;
// }

private List<InlineMenuItem> getObjectPolicyMenuActions() {
List<InlineMenuItem> menuItems = new ArrayList<>();
PrismObject obj = getMultivalueContainerListPanel().getFocusObject();
// LOGGER.info("XXXXXXXXXXXXXXXXXXX obj.name: " + obj.getName().toString());
menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
new Model<>(true), false, getMultivalueContainerListPanel().createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));

menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true),
new Model<>(true), false, getMultivalueContainerListPanel().createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString()));
return menuItems;
}
}

@@ -0,0 +1,60 @@
/*
* Copyright (c) 2010-2017 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.gui.impl.session;

import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.session.PageStorage;

/**
* @author skublik
*/
public class GlobalPolicyRulesTabStorage implements PageStorage{

private ObjectPaging globalPolicyRulesPaging;


@Override
public Search getSearch() {
return null;
}

@Override
public void setSearch(Search search) {
}

@Override
public ObjectPaging getPaging() {
return globalPolicyRulesPaging;
}

@Override
public void setPaging(ObjectPaging globalPolicyRulesPaging) {
this.globalPolicyRulesPaging = globalPolicyRulesPaging;
}

@Override
public String debugDump() {
return debugDump(0);
}

@Override
public String debugDump(int indent) {
return "";
}

}
Expand Up @@ -21,7 +21,7 @@
import com.evolveum.midpoint.web.session.PageStorage;

/**
* Created by honchar.
* @author skublik
*/
public class ObjectPoliciesTabStorage implements PageStorage{

Expand Down
Expand Up @@ -176,7 +176,6 @@ private void setRemoveContainerButtonVisibility(ContainerWrapper<PolicyRuleType>
((ContainerValueWrapper)value).getItems().forEach(
constraintContainerItem -> {
if (constraintContainerItem instanceof ContainerWrapper && ((ContainerWrapper) constraintContainerItem).getItemDefinition().isMultiValue()){
// ((ContainerWrapper) constraintContainerItem).setRemoveContainerButtonVisible(true);
}
}
));
Expand All @@ -186,7 +185,6 @@ private void setRemoveContainerButtonVisibility(ContainerWrapper<PolicyRuleType>
private void setAddContainerButtonVisibility(ContainerWrapper<PolicyRuleType> policyRulesContainer){
ContainerWrapper constraintsContainer = policyRulesContainer.findContainerWrapper(new ItemPath(policyRulesContainer.getPath(), PolicyRuleType.F_POLICY_CONSTRAINTS));
constraintsContainer.setShowEmpty(true, false);
// constraintsContainer.setAddContainerButtonVisible(true);
}

@Override
Expand Down

0 comments on commit fbc0124

Please sign in to comment.