Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Jun 17, 2016
2 parents 443e9bf + 5b5e33b commit 71b1a3c
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 24 deletions.
Expand Up @@ -24,9 +24,6 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.web.session.SessionStorage;
import net.sf.jasperreports.web.util.WebUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
Expand All @@ -44,7 +41,9 @@
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.delta.ReferenceDelta;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.OrgFilter;
import com.evolveum.midpoint.prism.query.OrgFilter.Scope;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.task.api.Task;
Expand All @@ -62,7 +61,6 @@
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.orgs.OrgTreeAssignablePanel;
import com.evolveum.midpoint.web.page.admin.orgs.OrgTreePanel;
Expand Down Expand Up @@ -114,6 +112,7 @@ public PageBase getPageBase() {
protected static final String OPERATION_UPDATE_OBJECT = DOT_CLASS + "updateObject";
protected static final String OPERATION_RECOMPUTE = DOT_CLASS + "recompute";
protected static final String OPERATION_SEARCH_MANAGERS = DOT_CLASS + "searchManagers";
protected static final String OPERATION_COUNT_CHILDREN = DOT_CLASS + "countChildren";

private static final String ID_TREE_PANEL = "treePanel";
private static final String ID_MEMBER_PANEL = "memberPanel";
Expand Down Expand Up @@ -234,7 +233,8 @@ public void onClick(AjaxRequestTarget target) {
@Override
public void onClick(AjaxRequestTarget target) {
try {
initObjectForAdd(ObjectTypeUtil.createObjectRef(getRowModel().getObject().getValue()),
initObjectForAdd(
ObjectTypeUtil.createObjectRef(getRowModel().getObject().getValue()),
OrgType.COMPLEX_TYPE, null, target);
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
Expand Down Expand Up @@ -264,7 +264,7 @@ private void initObjectForAdd(ObjectReferenceType parentOrgRef, QName type, QNam
PrismContext prismContext = TreeTablePanel.this.getPageBase().getPrismContext();
PrismObjectDefinition def = prismContext.getSchemaRegistry().findObjectDefinitionByType(type);
PrismObject obj = def.instantiate();

ObjectType objType = (ObjectType) obj.asObjectable();
if (FocusType.class.isAssignableFrom(obj.getCompileTimeClass())) {
AssignmentType assignment = new AssignmentType();
Expand All @@ -276,11 +276,9 @@ private void initObjectForAdd(ObjectReferenceType parentOrgRef, QName type, QNam
parentOrgRef = ObjectTypeUtil.createObjectRef(org);
parentOrgRef.setRelation(relation);
}

objType.getParentOrgRef().add(parentOrgRef);
}



Class newObjectPageClass = objectDetailsMap.get(obj.getCompileTimeClass());

Expand Down Expand Up @@ -320,6 +318,7 @@ private void moveRootPerformed(SelectableBean<OrgType> root, AjaxRequestTarget t
OrgTreeAssignablePanel orgAssignablePanel = new OrgTreeAssignablePanel(
parentPage.getMainPopupBodyId(), false, parentPage) {
private static final long serialVersionUID = 1L;

@Override
protected void onItemSelect(SelectableBean<OrgType> selected, AjaxRequestTarget target) {
moveConfirmPerformed(orgToMove, selected, target);
Expand Down Expand Up @@ -447,30 +446,51 @@ private void recomputePerformed(SelectableBean<OrgType> orgToRecompute, AjaxRequ
private void deleteRootPerformed(final SelectableBean<OrgType> orgToDelete, AjaxRequestTarget target) {

ConfirmationPanel confirmationPanel = new ConfirmationPanel(getPageBase().getMainPopupBodyId(),
new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {
return createStringResource("TreeTablePanel.message.deleteTreeObjectConfirm",
orgToDelete.getValue().getDisplayName() != null &&
StringUtils.isNotEmpty(orgToDelete.getValue().getDisplayName().getOrig())?
orgToDelete.getValue().getDisplayName() : orgToDelete.getValue().getName()).getString();
}
}) {
new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {
if (hasChildren(orgToDelete)) {
return createStringResource("TreeTablePanel.message.warn.deleteTreeObjectConfirm",
WebComponentUtil.getEffectiveName(orgToDelete.getValue(),
OrgType.F_DISPLAY_NAME)).getObject();
}
return createStringResource("TreeTablePanel.message.deleteTreeObjectConfirm",
WebComponentUtil.getEffectiveName(orgToDelete.getValue(),
OrgType.F_DISPLAY_NAME)).getObject();
}
}) {
private static final long serialVersionUID = 1L;

@Override
public void yesPerformed(AjaxRequestTarget target) {
deleteRootConfirmedPerformed(orgToDelete, target);
deleteRootConfirmedPerformed(orgToDelete, target);
}
};

confirmationPanel.setOutputMarkupId(true);
getPageBase().showMainPopup(confirmationPanel, target);
}

private boolean hasChildren(SelectableBean<OrgType> orgToDelete) {
OrgFilter childrenFilter = OrgFilter.createOrg(orgToDelete.getValue().getOid(), Scope.SUBTREE);
Task task = getPageBase().createSimpleTask(OPERATION_COUNT_CHILDREN);
OperationResult result = new OperationResult(OPERATION_COUNT_CHILDREN);
try {
int count = getPageBase().getModelService().countObjects(ObjectType.class,
ObjectQuery.createObjectQuery(childrenFilter), null, task, result);
return (count > 0);
} catch (SchemaException | ObjectNotFoundException | SecurityViolationException
| ConfigurationException | CommunicationException e) {
LoggingUtils.logException(LOGGER, e.getMessage(), e);
result.recordFatalError("Could not count members for org " + orgToDelete.getValue(), e);
return false;
}
}


private void deleteRootConfirmedPerformed(SelectableBean<OrgType> orgToDelete, AjaxRequestTarget target) {
getPageBase().hideMainPopup(target);
OperationResult result = new OperationResult(OPERATION_DELETE_OBJECT);
Expand Down
Expand Up @@ -2752,6 +2752,7 @@ TreeTablePanel.menu.enable=Enable
TreeTablePanel.menu.move=Move
TreeTablePanel.menu.recompute=Recompute
TreeTablePanel.menu.removeFromHierarchy=Remove from org. unit
TreeTablePanel.message.warn.deleteTreeObjectConfirm=Warning! {0} has members. Do you really want to delete this org. unit?
TreeTablePanel.message.deleteTreeObjectConfirm=Do you really want to delete org. unit "{0}"?
TreeTablePanel.message.deleteObjectConfirm=Do you really want to delete selected {0} object(s)?
TreeTablePanel.message.deleteRootConfirm=Do you really want to delete {0} ({1})?
Expand All @@ -2764,6 +2765,7 @@ TreeTablePanel.search.scope.one=One level
TreeTablePanel.search.scope.subtree=Subtree
TreeTablePanel.fullName.displayName=Fullname/Display name
TreeTablePanel.identifier.description=Identifier/Description
TreeTablePanel.warning.childrenExist=Organization which is going to be deleted has members. Do you really want to delete it?
Type.AUDIT=Audit
type.nullValid=Choose One
Type.RECONCILIATION=Reconciliation
Expand Down Expand Up @@ -3156,4 +3158,4 @@ PageResourceVisualization.seeOnlineLink=webgraphviz.com
PageResourceVisualization.copyInstruction=Simply paste the following DOT code into it.
OrgMemberPanel.editUserTitle=Edit manager
OrgMemberPanel.unlinkTitle=Unlink manager
OrgMemberPanel.deleteTitle=Delete manager
OrgMemberPanel.deleteTitle=Delete manager

0 comments on commit 71b1a3c

Please sign in to comment.