Skip to content

Commit

Permalink
Merge branch 'feature/gui-wrapper' of https://github.com/Evolveum/mid…
Browse files Browse the repository at this point in the history
…point into feature/gui-wrapper
  • Loading branch information
katkav committed Jun 6, 2019
2 parents 6d1e845 + 7964772 commit 3314c01
Show file tree
Hide file tree
Showing 13 changed files with 211 additions and 101 deletions.
Expand Up @@ -23,12 +23,12 @@ public class CenterForColumnIconCssStyle implements LayeredIconCssStyle {

@Override
public String getBasicCssClass() {
return "icon-basic-transparent";
return "icon-basic-transparent-for-column";
}

@Override
public String getBasicLayerCssClass() {
return "icon-basic-layer";
return "icon-basic-layer-for-column";
}

@Override
Expand Down
Expand Up @@ -23,17 +23,17 @@ public class CenterIconCssStyle implements LayeredIconCssStyle {

@Override
public String getBasicCssClass() {
return "icon-basic-transparent-for-column";
return "icon-basic-transparent";
}

@Override
public String getBasicLayerCssClass() {
return "icon-basic-layer-for-column";
return "icon-basic-layer";
}

@Override
public String getLayerCssClass() {
return "center-layer-for-column";
return "center-layer";
}

@Override
Expand Down
Expand Up @@ -115,7 +115,6 @@ public PrismContainerValueWrapper<C> createValueWrapper(PrismContainerWrapper<C>
}

containerValueWrapper.getItems().addAll((Collection) wrappers);
containerValueWrapper.sort();
return containerValueWrapper;
}

Expand Down
Expand Up @@ -96,7 +96,7 @@ public PrismContainerValueWrapper<C> createValueWrapper(PrismContainerWrapper<C>
}

containerValueWrapper.getItems().addAll((Collection) wrappers);
containerValueWrapper.sort();
// containerValueWrapper.sort();
return containerValueWrapper;
}

Expand Down
Expand Up @@ -15,7 +15,11 @@
*/
package com.evolveum.midpoint.gui.impl.prism;

import java.text.Collator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;

import javax.xml.namespace.QName;

Expand All @@ -40,6 +44,8 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton;
import com.evolveum.midpoint.gui.api.prism.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.factory.WrapperContext;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.Item;
Expand Down Expand Up @@ -144,7 +150,43 @@ private <PV extends PrismValue, I extends Item<PV, ID>, ID extends ItemDefinitio
propertiesLabel.setOutputMarkupId(true);

ListView<IW> properties = new ListView<IW>("properties",
new PropertyModel<>(getModel(), "nonContainers")) {
new IModel<List<IW>>() {

@Override
public List<IW> getObject() {
List<? extends ItemWrapper<?, ?, ?, ?>> nonContainers = getModelObject().getNonContainers();

Locale locale = WebModelServiceUtils.getLocale();
if (locale == null) {
locale = Locale.getDefault();
}
Collator collator = Collator.getInstance(locale);
collator.setStrength(Collator.SECONDARY); // e.g. "a" should be different from "á"
collator.setDecomposition(Collator.FULL_DECOMPOSITION);
ItemWrapperComparator<?> comparator = new ItemWrapperComparator<>(collator, getModelObject().isSorted());
if (CollectionUtils.isNotEmpty(nonContainers)) {
nonContainers.sort((Comparator) comparator);

int visibleProperties = 0;

for (ItemWrapper<?,?,?,?> item : nonContainers) {
if (item.isVisible(null)) {
visibleProperties++;
}

if (visibleProperties % 2 == 0) {
item.setStripe(false);
} else {
item.setStripe(true);
}

}
}

return (List<IW>) nonContainers;
}
}) {
// new PropertyModel<>(getModel(), "nonContainers")) {
private static final long serialVersionUID = 1L;

@Override
Expand Down Expand Up @@ -182,7 +224,7 @@ public boolean isVisible() {


};
properties.setReuseItems(true);
// properties.setReuseItems(true);
properties.setOutputMarkupId(true);
add(propertiesLabel);
propertiesLabel.add(properties);
Expand Down
Expand Up @@ -102,8 +102,8 @@ public void setCaseStateInRepository(CaseType aCase, String newState, OperationR
*/
public void checkDependentCases(String rootOid, OperationResult result)
throws SchemaException, ObjectNotFoundException, ObjectAlreadyExistsException, PreconditionViolationException {
CaseType aCase = repositoryService.getObject(CaseType.class, rootOid, null, result).asObjectable();
if (CaseTypeUtil.isClosed(aCase)) {
CaseType rootCase = repositoryService.getObject(CaseType.class, rootOid, null, result).asObjectable();
if (CaseTypeUtil.isClosed(rootCase)) {
return;
}
List<CaseType> subcases = miscHelper.getSubcases(rootOid, result);
Expand All @@ -117,7 +117,7 @@ public void checkDependentCases(String rootOid, OperationResult result)
.collect(Collectors.toList());
LOGGER.debug("open cases OIDs: {}", openOids);
if (openOids.isEmpty()) {
closeCaseInRepository(aCase, result);
closeCaseInRepository(rootCase, result);
} else {
ObjectQuery query = prismContext.queryFor(TaskType.class)
.item(TaskType.F_OBJECT_REF).ref(openOids.toArray(new String[0]))
Expand Down
Expand Up @@ -456,6 +456,12 @@ public void onProcessEnd(EngineInvocationContext ctx, OperationResult result)

private void submitExecutionTask(CaseType aCase, boolean waiting, OperationResult result)
throws SchemaException, ObjectNotFoundException, ObjectAlreadyExistsException {

// We must do this before the task is started, because as part of task completion we set state to CLOSED.
// So if we set state to EXECUTING after the task is started, the case might be already closed at that point.
// (If task is fast enough.)
executionHelper.setCaseStateInRepository(aCase, SchemaConstants.CASE_STATE_EXECUTING, result);

Task task = taskManager.createTaskInstance("execute");
task.setName("Execution of " + aCase.getName().getOrig());
task.setOwner(getExecutionTaskOwner(result));
Expand All @@ -465,8 +471,6 @@ private void submitExecutionTask(CaseType aCase, boolean waiting, OperationResul
task.setInitialExecutionStatus(TaskExecutionStatus.WAITING);
}
taskManager.switchToBackground(task, result);

executionHelper.setCaseStateInRepository(aCase, SchemaConstants.CASE_STATE_EXECUTING, result);
}

private PrismObject<UserType> getExecutionTaskOwner(OperationResult result) throws SchemaException, ObjectNotFoundException {
Expand Down

0 comments on commit 3314c01

Please sign in to comment.