/** * Copyright (c) 2015 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.web.page.admin; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto; import com.evolveum.midpoint.web.component.prism.ObjectWrapper; import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import java.util.ArrayList; import java.util.Collections; import java.util.List; public abstract class PageAdminAbstractRole<T extends AbstractRoleType> extends PageAdminFocus<T> { private LoadableModel<List<AssignmentEditorDto>> inducementsModel; public LoadableModel<List<AssignmentEditorDto>> getInducementsModel() { return inducementsModel; } @Override protected void prepareObjectDeltaForModify(ObjectDelta<T> focusDelta) throws SchemaException { super.prepareObjectDeltaForModify(focusDelta); PrismObject<T> abstractRole = getObjectWrapper().getObject(); PrismContainerDefinition<AssignmentType> def = abstractRole.getDefinition() .findContainerDefinition(AbstractRoleType.F_INDUCEMENT); handleAssignmentDeltas(focusDelta, inducementsModel.getObject(), def); } @Override protected void prepareObjectForAdd(PrismObject<T> focus) throws SchemaException { super.prepareObjectForAdd(focus); handleAssignmentForAdd(focus, AbstractRoleType.F_INDUCEMENT, inducementsModel.getObject()); } @Override protected void initializeModel(final PrismObject<T> objectToEdit) { super.initializeModel(objectToEdit); inducementsModel = new LoadableModel<List<AssignmentEditorDto>>(false) { @Override protected List<AssignmentEditorDto> load() { return loadInducements(); } }; } // TODO unify with loadAssignments private List<AssignmentEditorDto> loadInducements() { List<AssignmentEditorDto> list = new ArrayList<AssignmentEditorDto>(); ObjectWrapper focusWrapper = getObjectWrapper(); PrismObject<T> focus = focusWrapper.getObject(); List<AssignmentType> inducements = focus.asObjectable().getInducement(); for (AssignmentType inducement : inducements) { list.add(new AssignmentEditorDto(UserDtoStatus.MODIFY, inducement, this)); } Collections.sort(list); return list; } }