From dc3a1fef9328e0c40d86ddf0598534ed9c0abc3a Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Tue, 25 Sep 2012 13:28:10 +0000 Subject: [PATCH] Add progress reporting to Collection and Array predicates and data set graph construction SVN: 26797 --- .../openbis/generic/server/NewExternalDataDAG.java | 9 +++++++++ .../authorization/predicate/ArrayPredicate.java | 14 +++++++++++--- .../predicate/CollectionPredicate.java | 13 ++++++++++--- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/NewExternalDataDAG.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/NewExternalDataDAG.java index 577423a95c4..82082591dde 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/NewExternalDataDAG.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/NewExternalDataDAG.java @@ -21,6 +21,8 @@ import java.util.HashMap; import java.util.List; import ch.systemsx.cisd.common.collections.DAG; +import ch.systemsx.cisd.common.conversation.context.ServiceConversationsThreadContext; +import ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener; import ch.systemsx.cisd.openbis.generic.shared.dto.NewContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; @@ -78,6 +80,11 @@ public class NewExternalDataDAG */ private void constructGraph() { + IServiceConversationProgressListener listener = + ServiceConversationsThreadContext.getProgressListener(); + + int index = 0; + for (NewExternalData dataSet : dataSetRegistrations) { String dataSetCode = dataSet.getCode(); @@ -99,6 +106,8 @@ public class NewExternalDataDAG } dependencyGraph.put(dataSet.getCode(), dependents); + + listener.update("constructGraph", dataSetRegistrations.size(), ++index); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ArrayPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ArrayPredicate.java index cb264d749d4..70350e9c31f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ArrayPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ArrayPredicate.java @@ -18,6 +18,8 @@ package ch.systemsx.cisd.openbis.generic.server.authorization.predicate; import java.util.List; +import ch.systemsx.cisd.common.conversation.context.ServiceConversationsThreadContext; +import ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener; import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.exceptions.StatusFlag; import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider; @@ -31,6 +33,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; */ public final class ArrayPredicate<T> extends AbstractPredicate<T[]> { + private final IPredicate<T> predicate; public ArrayPredicate(final IPredicate<T> predicate) @@ -65,10 +68,14 @@ public final class ArrayPredicate<T> extends AbstractPredicate<T[]> } @Override - protected - final Status doEvaluation(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, - final T[] value) + protected final Status doEvaluation(final PersonPE person, + final List<RoleWithIdentifier> allowedRoles, final T[] value) { + IServiceConversationProgressListener listener = + ServiceConversationsThreadContext.getProgressListener(); + + int index = 0; + for (final T item : value) { final Status status = itemEvaluate(person, allowedRoles, item); @@ -76,6 +83,7 @@ public final class ArrayPredicate<T> extends AbstractPredicate<T[]> { return status; } + listener.update("authorize", value.length, ++index); } return Status.OK; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/CollectionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/CollectionPredicate.java index 17535d26475..ebef9212f1d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/CollectionPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/CollectionPredicate.java @@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.generic.server.authorization.predicate; import java.util.Collection; import java.util.List; +import ch.systemsx.cisd.common.conversation.context.ServiceConversationsThreadContext; +import ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener; import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.exceptions.StatusFlag; import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider; @@ -56,10 +58,14 @@ public final class CollectionPredicate<T> extends AbstractPredicate<Collection<T } @Override - protected - final Status doEvaluation(final PersonPE person, final List<RoleWithIdentifier> allowedRoles, - final Collection<T> value) + protected final Status doEvaluation(final PersonPE person, + final List<RoleWithIdentifier> allowedRoles, final Collection<T> value) { + IServiceConversationProgressListener listener = + ServiceConversationsThreadContext.getProgressListener(); + + int index = 0; + for (final T item : value) { final Status status = itemEvaluate(person, allowedRoles, item); @@ -67,6 +73,7 @@ public final class CollectionPredicate<T> extends AbstractPredicate<Collection<T { return status; } + listener.update("authorize", value.size(), ++index); } return Status.OK; } -- GitLab