Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 17, 2019
2 parents 33c110f + dd0daa5 commit aa78a65
Show file tree
Hide file tree
Showing 88 changed files with 914 additions and 4,986 deletions.
Expand Up @@ -33,6 +33,7 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto;
import com.evolveum.midpoint.web.page.admin.roles.MemberOperationsHelper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ActionExpressionType;
Expand Down Expand Up @@ -68,9 +69,9 @@ public abstract class ChooseMemberPopup<O extends ObjectType, T extends Abstract
private static final String ID_FORM = "form";

private List<OrgType> selectedOrgsList = new ArrayList<>();
protected List<QName> availableRelationList;
protected AvailableRelationDto availableRelationList;

public ChooseMemberPopup(String id, List<QName> availableRelationList){
public ChooseMemberPopup(String id, AvailableRelationDto availableRelationList){
super(id);
this.availableRelationList = availableRelationList;
}
Expand Down
Expand Up @@ -16,6 +16,7 @@

import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
Expand All @@ -30,7 +31,7 @@
public abstract class ChooseOrgMemberPopup<O extends ObjectType> extends ChooseMemberPopup<O, OrgType> {
private static final long serialVersionUID = 1L;

public ChooseOrgMemberPopup(String id, List<QName> availableRelationList){
public ChooseOrgMemberPopup(String id, AvailableRelationDto availableRelationList){
super(id, availableRelationList);
}

Expand Down
Expand Up @@ -16,6 +16,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.input.RelationDropDownChoicePanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.wicket.markup.html.WebMarkupContainer;
Expand All @@ -37,9 +38,9 @@ public abstract class MemberPopupTabPanel<O extends ObjectType> extends Abstract
private static final String ID_RELATION = "relation";

private PageBase pageBase;
private List<QName> supportedRelationList = new ArrayList<>();
private AvailableRelationDto supportedRelationList = new AvailableRelationDto();

public MemberPopupTabPanel(String id, List<QName> supportedRelationList){
public MemberPopupTabPanel(String id, AvailableRelationDto supportedRelationList){
super(id);
this.supportedRelationList = supportedRelationList;
}
Expand All @@ -59,17 +60,18 @@ protected void initParametersPanel(Fragment parametersPanel){

@Override
public boolean isVisible(){
return CollectionUtils.isNotEmpty(supportedRelationList);
return CollectionUtils.isNotEmpty(supportedRelationList.getAvailableRelationList());
}

@Override
public boolean isEnabled(){
return CollectionUtils.isNotEmpty(supportedRelationList) && supportedRelationList.size() > 1;
return CollectionUtils.isNotEmpty(supportedRelationList.getAvailableRelationList())
&& supportedRelationList.getAvailableRelationList().size() > 1;
}
});
parametersPanel.add(relationContainer);

relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, null, supportedRelationList, false));
relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, supportedRelationList.getDefaultRelation(), supportedRelationList.getAvailableRelationList(), false));
}

protected ObjectDelta prepareDelta(){
Expand Down
Expand Up @@ -14,6 +14,7 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -41,7 +42,7 @@ public abstract class MultiTypesMemberPopupTabPanel<O extends ObjectType> extend

private ObjectTypes defaultObjectType = ObjectTypes.OBJECT_COLLECTION;

public MultiTypesMemberPopupTabPanel(String id, List<QName> supportedRelationsList){
public MultiTypesMemberPopupTabPanel(String id, AvailableRelationDto supportedRelationsList){
super(id, supportedRelationsList);
}

Expand Down
Expand Up @@ -424,12 +424,12 @@ protected List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam

@Override
public boolean isOrderingDisabled() {
GuiObjectListPanelConfigurationType additionalPanelConfig = getAdditionalPanelConfig();
if (additionalPanelConfig != null && additionalPanelConfig.isDisableSorting() != null) {
return additionalPanelConfig.isDisableSorting();
} else {
return super.isOrderingDisabled();
}
return ObjectListPanel.this.isOrderingDisabled();
}

@Override
public boolean isUseObjectCounting(){
return isCountingEnabled();
}
};
if (options == null){
Expand Down Expand Up @@ -469,6 +469,42 @@ protected GuiObjectListPanelConfigurationType getAdditionalPanelConfig(){
return null;
}

protected boolean isOrderingDisabled(){
CompiledObjectCollectionView guiObjectListViewType = getGuiObjectListViewType();
if (isAdditionalPanel()){
if (guiObjectListViewType != null && guiObjectListViewType.getAdditionalPanels() != null &&
guiObjectListViewType.getAdditionalPanels().getMemberPanel() != null &&
guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableSorting() != null){
return guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableSorting();
}
} else {
if (guiObjectListViewType != null && guiObjectListViewType.isDisableSorting() != null){
return guiObjectListViewType.isDisableSorting();
}
}
return true;
}

protected boolean isCountingEnabled(){
CompiledObjectCollectionView guiObjectListViewType = getGuiObjectListViewType();
if (isAdditionalPanel()){
if (guiObjectListViewType != null && guiObjectListViewType.getAdditionalPanels() != null &&
guiObjectListViewType.getAdditionalPanels().getMemberPanel() != null &&
guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableCounting() != null){
return guiObjectListViewType.getAdditionalPanels().getMemberPanel().isDisableCounting();
}
} else {
if (guiObjectListViewType != null && guiObjectListViewType.isDisableCounting() != null){
return !guiObjectListViewType.isDisableCounting();
}
}
return true;
}

protected boolean isAdditionalPanel(){
return false;
}

private SearchFormPanel initSearch(String headerId) {
SearchFormPanel searchPanel = new SearchFormPanel(headerId, searchModel) {

Expand Down
Expand Up @@ -11,6 +11,7 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.TreeSelectableBean;
import com.evolveum.midpoint.web.page.admin.orgs.OrgTreeAssignablePanel;
import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
Expand All @@ -29,7 +30,7 @@ public abstract class OrgTreeMemberPopupTabPanel extends MemberPopupTabPanel<Org

private static final String ID_ORG_TREE_VIEW_PANEL = "orgTreeViewPanel";

public OrgTreeMemberPopupTabPanel(String id, List<QName> availableRelationList){
public OrgTreeMemberPopupTabPanel(String id, AvailableRelationDto availableRelationList){
super(id, availableRelationList);
}

Expand Down
Expand Up @@ -2715,6 +2715,13 @@ public static List<QName> getCategoryRelationChoices(AreaCategoryType category,
return relationsList;
}

public static QName getCategoryDefaultRelation(AreaCategoryType category){
if (AreaCategoryType.GOVERNANCE.equals(category)) {
return RelationTypes.APPROVER.getRelation();
}
return null;
}

public static List<QName> getAllRelations(ModelServiceLocator pageBase) {
List<RelationDefinitionType> allRelationDefinitions = getRelationDefinitions(pageBase);
List<QName> allRelationsQName = new ArrayList<>(allRelationDefinitions.size());
Expand Down
Expand Up @@ -267,7 +267,7 @@ public void setType(Class<O> type) {
clearCache();
}

public boolean isUseObjectCounting(){
protected boolean isUseObjectCounting(){
return useObjectCounting;
}

Expand Down
Expand Up @@ -654,7 +654,7 @@ public IModel<String> getDataModel(IModel<PrismContainerValueWrapper<CaseWorkIte
return columns;
}

public static List<IColumn<SelectableBean<CaseType>, String>> getDefaultCaseColumns(PageBase pageBase) {
public static List<IColumn<SelectableBean<CaseType>, String>> getDefaultCaseColumns(PageBase pageBase, boolean isDashboard) {

List<IColumn<SelectableBean<CaseType>, String>> columns = new ArrayList<IColumn<SelectableBean<CaseType>, String>>();

Expand All @@ -678,36 +678,21 @@ public String getObject() {
}
};
columns.add(column);

column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.actors")){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
String actors = null;
SelectableBean<CaseType> caseModel = rowModel.getObject();
if (caseModel != null) {
CaseType caseIntance = caseModel.getValue();
if (caseIntance != null) {
List<CaseWorkItemType> caseWorkItemTypes = caseIntance.getWorkItem();
List<String> actorsList = new ArrayList<String>();
for (CaseWorkItemType caseWorkItem : caseWorkItemTypes) {
List<ObjectReferenceType> assignees = caseWorkItem.getAssigneeRef();
for (ObjectReferenceType actor : assignees) {
actorsList.add(WebComponentUtil.getEffectiveName(actor, AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseActorsNames"));
}
}
actors = String.join(", ", actorsList);
}

if (!isDashboard) {
column = new AbstractColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.actors")){
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> item, String componentId, IModel<SelectableBean<CaseType>> rowModel) {
item.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return getActorsForCase(rowModel, pageBase);
}
return actors;
}
}));
}
};
columns.add(column);
}));
}
};
columns.add(column);
}

column = new AbstractColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.openTimestamp"),
Expand Down Expand Up @@ -736,60 +721,101 @@ public String getObject() {
}
}));
}

@Override
public String getCssClass() {
return isDashboard ? "col-sm-2 col-lg-1" : super.getCssClass();
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.closeTimestamp"), CaseType.F_CLOSE_TIMESTAMP.getLocalPart(), "value.closeTimestamp") {
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
XMLGregorianCalendar closedCal = object != null ? object.getCloseTimestamp() : null;
final Date closed;
if (closedCal != null) {
closed = closedCal.toGregorianCalendar().getTime();
cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(closed, DateLabelComponent.LONG_MEDIUM_STYLE)));
cellItem.add(new TooltipBehavior());
} else {
closed = null;
}
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(closed, pageBase);
if (!isDashboard) {
column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.closeTimestamp"), CaseType.F_CLOSE_TIMESTAMP.getLocalPart(), "value.closeTimestamp") {
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, final IModel<SelectableBean<CaseType>> rowModel) {
CaseType object = rowModel.getObject().getValue();
XMLGregorianCalendar closedCal = object != null ? object.getCloseTimestamp() : null;
final Date closed;
if (closedCal != null) {
closed = closedCal.toGregorianCalendar().getTime();
cellItem.add(AttributeModifier.replace("title", WebComponentUtil.getLocalizedDate(closed, DateLabelComponent.LONG_MEDIUM_STYLE)));
cellItem.add(new TooltipBehavior());
} else {
closed = null;
}
}));
cellItem.add(new Label(componentId, new IModel<String>() {
@Override
public String getObject() {
return WebComponentUtil.getShortDateTimeFormattedValue(closed, pageBase);
}
}));
}

@Override
public String getCssClass() {
return isDashboard ? "col-sm-2 col-lg-1" : super.getCssClass();
}
};
columns.add(column);
}

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.state"), CaseType.F_STATE.getLocalPart(), "value.state"){
@Override
public String getCssClass() {
return isDashboard ? "col-md-1 col-sm-2" : super.getCssClass();
}
};
columns.add(column);

column = new PropertyColumn<SelectableBean<CaseType>, String>(createStringResource("pageCases.table.state"), CaseType.F_STATE.getLocalPart(), "value.state");
columns.add(column);

column = new AbstractExportableColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.workitems")) {
if (!isDashboard) {
column = new AbstractExportableColumn<SelectableBean<CaseType>, String>(
createStringResource("pageCases.table.workitems")) {

@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, IModel<SelectableBean<CaseType>> model) {
cellItem.add(new Label(componentId,
model.getObject().getValue() != null && model.getObject().getValue().getWorkItem() != null ?
model.getObject().getValue().getWorkItem().size() : null));
}
@Override
public void populateItem(Item<ICellPopulator<SelectableBean<CaseType>>> cellItem,
String componentId, IModel<SelectableBean<CaseType>> model) {
cellItem.add(new Label(componentId,
model.getObject().getValue() != null && model.getObject().getValue().getWorkItem() != null ?
model.getObject().getValue().getWorkItem().size() : null));
}

@Override
public IModel<String> getDataModel(IModel<SelectableBean<CaseType>> rowModel) {
return Model.of(rowModel.getObject().getValue() != null && rowModel.getObject().getValue().getWorkItem() != null ?
Integer.toString(rowModel.getObject().getValue().getWorkItem().size()) : "");
}
@Override
public IModel<String> getDataModel(IModel<SelectableBean<CaseType>> rowModel) {
return Model.of(rowModel.getObject().getValue() != null && rowModel.getObject().getValue().getWorkItem() != null ?
Integer.toString(rowModel.getObject().getValue().getWorkItem().size()) : "");
}


};
columns.add(column);
};
columns.add(column);
}

return columns;
}

public static <C extends Containerable> C unwrapRowModel(IModel<PrismContainerValueWrapper<C>> rowModel){
return rowModel.getObject().getRealValue();
}

public static String getActorsForCase(IModel<SelectableBean<CaseType>> rowModel, PageBase pageBase) {
String actors = null;
SelectableBean<CaseType> caseModel = rowModel.getObject();
if (caseModel != null) {
CaseType caseIntance = caseModel.getValue();
if (caseIntance != null) {
List<CaseWorkItemType> caseWorkItemTypes = caseIntance.getWorkItem();
List<String> actorsList = new ArrayList<String>();
for (CaseWorkItemType caseWorkItem : caseWorkItemTypes) {
List<ObjectReferenceType> assignees = caseWorkItem.getAssigneeRef();
for (ObjectReferenceType actor : assignees) {
actorsList.add(WebComponentUtil.getEffectiveName(actor, AbstractRoleType.F_DISPLAY_NAME, pageBase,
pageBase.getClass().getSimpleName() + "." + "loadCaseActorsNames"));
}
}
actors = String.join(", ", actorsList);
}
}
return actors;
}
}

0 comments on commit aa78a65

Please sign in to comment.