Skip to content

Commit

Permalink
MID-9255 Archetype buttons does not work correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Jan 21, 2024
1 parent 2977205 commit 6e2dc1c
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -217,20 +217,21 @@ protected List<ITab> createAssignmentTabs(AssignmentObjectRelation relationSpec)
relationSpec.getObjectTypes() : getAvailableObjectTypes();
List<ObjectReferenceType> archetypeRefList = relationSpec != null && !CollectionUtils.isEmpty(relationSpec.getArchetypeRefs()) ?
relationSpec.getArchetypeRefs() : getArchetypeRefList();
List<QName> relationList = relationSpec != null ? relationSpec.getRelations() : null;

if (objectTypes != null && objectTypes.size() == 1) {
QName objectType = objectTypes.get(0);
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, objectType));
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, objectType, relationList));
return tabs;
}

tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, UserType.COMPLEX_TYPE));
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, UserType.COMPLEX_TYPE, relationList));

tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, RoleType.COMPLEX_TYPE));
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, RoleType.COMPLEX_TYPE, relationList));

tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, OrgType.COMPLEX_TYPE));
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, OrgType.COMPLEX_TYPE, relationList));

tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, ServiceType.COMPLEX_TYPE));
tabs.add(createCountablePanelTab(objectTypes, archetypeRefList, ServiceType.COMPLEX_TYPE, relationList));

if (archetypeRefList == null || archetypeRefList.isEmpty()) {
tabs.add(new CountablePanelTab(createStringResource("TypedAssignablePanel.orgTreeView"),
Expand Down Expand Up @@ -272,7 +273,7 @@ public String getCount() {
}

private CountablePanelTab createCountablePanelTab(List<QName> objectTypes, List<ObjectReferenceType> archetypeRefList,
QName complexType) {
QName complexType, List<QName> relationList) {
ObjectTypes objectType = ObjectTypes.getObjectType(complexType.getLocalPart());
return new CountablePanelTab(createStringResource("ObjectTypes." + objectType),
new VisibleBehaviour(() -> objectTypes == null || QNameUtil.contains(objectTypes, complexType))) {
Expand All @@ -281,7 +282,7 @@ private CountablePanelTab createCountablePanelTab(List<QName> objectTypes, List<

@Override
public WebMarkupContainer createPanel(String panelId) {
return createMemberPopup(panelId, objectType, archetypeRefList);
return createMemberPopup(panelId, objectType, archetypeRefList, relationList);
}

@Override
Expand All @@ -291,7 +292,8 @@ public String getCount() {
};
}

private WebMarkupContainer createMemberPopup(String panelId, ObjectTypes objectType, List<ObjectReferenceType> archetypeRefList) {
private WebMarkupContainer createMemberPopup(String panelId, ObjectTypes objectType,
List<ObjectReferenceType> archetypeRefList, List<QName> relationList) {
return new MemberPopupTabPanel(panelId, search, archetypeRefList) {
private static final long serialVersionUID = 1L;

Expand All @@ -315,7 +317,18 @@ protected T getAbstractRoleTypeObject() {

@Override
protected QName getDefaultRelation() {
return getRelationIfIsStable() != null ? getRelationIfIsStable() : super.getDefaultRelation();
if (getRelationIfIsStable() != null) {
return getRelationIfIsStable();
}
if (relationList != null && relationList.size() == 1) {
return relationList.get(0);
}
return super.getDefaultRelation();
}

@Override
protected List<QName> getSupportedRelations() {
return CollectionUtils.isNotEmpty(relationList) ? relationList : super.getSupportedRelations();
}

@Override
Expand Down Expand Up @@ -415,8 +428,13 @@ protected List<CompositedIconButtonDto> load() {

private List<CompositedIconButtonDto> getAssignButtonDescription() {
List<CompositedIconButtonDto> buttons = new ArrayList<>();
List<AssignmentObjectRelation> loadedRelations = loadMemberRelationsList();
boolean addDefaultObjectRelation = false;
if (CollectionUtils.isEmpty(loadedRelations)) {
addDefaultObjectRelation = true;
}
List<AssignmentObjectRelation> assignmentObjectRelations =
WebComponentUtil.divideAssignmentRelationsByAllValues(loadMemberRelationsList(), true);
WebComponentUtil.divideAssignmentRelationsByAllValues(loadedRelations, addDefaultObjectRelation);
if (assignmentObjectRelations != null) {
assignmentObjectRelations.forEach(relation -> {
DisplayType additionalDispayType = GuiDisplayTypeUtil.getAssignmentObjectRelationDisplayType(ChooseMemberPopup.this.getPageBase(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected void onInitialize() {
pageBase = getPageBase();
}

private List<QName> getSupportedRelations() {
protected List<QName> getSupportedRelations() {
AbstractRoleSearchItemWrapper memberSearchItem = getMemberSearchItem();
return memberSearchItem != null ? memberSearchItem.getSupportedRelations() : new ArrayList<>();
// return search.getSupportedRelations();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2842,7 +2842,7 @@ public static List<AssignmentObjectRelation> divideAssignmentRelationsByRelation
* This will simplify creating of a new_assignment_button
*/
public static List<AssignmentObjectRelation> divideAssignmentRelationsByAllValues(
List<AssignmentObjectRelation> initialAssignmentRelationsList, boolean isMemberAssignment) {
List<AssignmentObjectRelation> initialAssignmentRelationsList, boolean addDefaultObjectRelations) {
if (initialAssignmentRelationsList == null) {
return null;
}
Expand All @@ -2852,7 +2852,7 @@ public static List<AssignmentObjectRelation> divideAssignmentRelationsByAllValue
if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getObjectTypes())) {
assignmentObjectRelation.getObjectTypes().forEach(objectType -> {
if (CollectionUtils.isNotEmpty(assignmentObjectRelation.getArchetypeRefs())) {
if (isMemberAssignment) {
if (addDefaultObjectRelations) {
//add at first type+relation combination without archetypeRef to cover default views (e.g. all users)
AssignmentObjectRelation defaultViewRelation = new AssignmentObjectRelation();
defaultViewRelation.setObjectTypes(Collections.singletonList(objectType));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,17 +426,19 @@ protected MultiFunctinalButtonDto load() {
for (Map.Entry<IconCssStyle, IconType> icon : layerIcons.entrySet()) {
builder.appendLayerIcon(icon.getValue(), icon.getKey());
}
CompositedIconButtonDto mainButton = createCompositedIconButtonDto(mainButtonDisplayType, null, builder.build());
CompositedIconButtonDto mainButton = createCompositedIconButtonDto(mainButtonDisplayType, null, null);
multiFunctinalButtonDto.setMainButton(mainButton);

List<AssignmentObjectRelation> loadedRelations = loadMemberRelationsList();
boolean addDefaultObjectRelation = false;
if (CollectionUtils.isEmpty(loadedRelations) && useDefaultObjectRelations) {
addDefaultObjectRelation = true;
loadedRelations.addAll(getDefaultNewMemberRelations());
}
List<CompositedIconButtonDto> additionalButtons = new ArrayList<>();
if (CollectionUtils.isNotEmpty(loadedRelations)) {
List<AssignmentObjectRelation> relations =
WebComponentUtil.divideAssignmentRelationsByAllValues(loadedRelations, true);
WebComponentUtil.divideAssignmentRelationsByAllValues(loadedRelations, addDefaultObjectRelation);
relations.forEach(relation -> {
DisplayType additionalButtonDisplayType = GuiDisplayTypeUtil.getAssignmentObjectRelationDisplayType(getPageBase(), relation,
"abstractRoleMemberPanel.menu.createMember");
Expand Down

0 comments on commit 6e2dc1c

Please sign in to comment.