X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.procore%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fprocore%2Fcluster%2FCompleteTableSmall.java;fp=bundles%2Forg.simantics.db.procore%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fprocore%2Fcluster%2FCompleteTableSmall.java;h=21a4f23b2c9aa78872b49487b9fd0792d0eebc64;hp=c44558cbbf986911d5ee8b640249548e86a939ad;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.db.procore/src/org/simantics/db/procore/cluster/CompleteTableSmall.java b/bundles/org.simantics.db.procore/src/org/simantics/db/procore/cluster/CompleteTableSmall.java index c44558cbb..21a4f23b2 100644 --- a/bundles/org.simantics.db.procore/src/org/simantics/db/procore/cluster/CompleteTableSmall.java +++ b/bundles/org.simantics.db.procore/src/org/simantics/db/procore/cluster/CompleteTableSmall.java @@ -1,93 +1,93 @@ -package org.simantics.db.procore.cluster; - -import gnu.trove.set.hash.TIntHashSet; - -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.impl.ClusterI; -import org.simantics.db.impl.ClusterSupport; -import org.simantics.db.impl.ClusterTraitsBase; -import org.simantics.db.impl.Modifier; -import org.simantics.db.impl.TableSizeListener; - -public class CompleteTableSmall extends CompleteTable { - public CompleteTableSmall(TableSizeListener sizeListener, int[] header, int headerBase) { - super(sizeListener, header, headerBase); - } - public CompleteTableSmall(TableSizeListener sizeListener, int[] header, int headerBase, int[] ints) { - super(sizeListener, header, headerBase, ints); - } - - @Override - public boolean foreachPredicate(int setIndex, - ClusterI.PredicateProcedure procedure, - Context context, ClusterSupport support, Modifier modifier) - throws DatabaseException { - ForeachPredicate t = new ForeachPredicate(procedure, support, modifier); - return foreachComplete(setIndex, t, context, null, null); - } - - @Override - public boolean foreachObject(int setIndex, - ClusterI.ObjectProcedure procedure, - Context context, ClusterSupport support, Modifier modifier, - ClusterI.CompleteTypeEnum completeType) - throws DatabaseException { - ForeachObject t = new ForeachObject - (procedure, support, modifier, completeType); - return foreachComplete(setIndex, t, context, null, null); - } - - private static final class ForeachPredicate - implements ClusterI.ObjectProcedure { - private TIntHashSet completeTypes = new TIntHashSet(); - private ClusterI.PredicateProcedure procedure; - public ForeachPredicate(ClusterI.PredicateProcedure - procedure, ClusterSupport support, Modifier modifier) { - this.procedure = procedure; - } - @Override - public boolean execute(Context context, int completeRef) { - ClusterI.CompleteTypeEnum completeType = ClusterTraitsSmall.completeRefAndTypeGetType(completeRef); - if (!completeTypes.contains(completeType.getValue())) { - completeTypes.add(completeType.getValue()); - try { - int pKey = ClusterTraitsBase.getCompleteTypeResourceKeyFromEnum(completeType); - if (procedure.execute(context, pKey, 0)) - return true; // loop broken by procedure - } catch (DatabaseException e) { - e.printStackTrace(); - return false; - } - } - return false; // Continue looping. - } - - } - private static class ForeachObject - implements ClusterI.ObjectProcedure { - private ClusterI.ObjectProcedure procedure; - private Modifier modifier; - private ClusterI.CompleteTypeEnum completeType; - public ForeachObject(ClusterI.ObjectProcedure - procedure, ClusterSupport support, Modifier modifier, ClusterI.CompleteTypeEnum completeType) { - this.procedure = procedure; - this.modifier = modifier; - this.completeType = completeType; - } - @Override - public boolean execute(Context context, int completeRef) throws DatabaseException { - ClusterI.CompleteTypeEnum completeType2 = ClusterTraitsSmall.completeRefAndTypeGetType(completeRef); - if (completeType == completeType2) { // same predicate - int objectRef = ClusterTraitsSmall.completeRefAndTypeGetRef(completeRef); - int externalRef; - if (null == modifier) - externalRef = objectRef; - else - externalRef = modifier.execute(objectRef); - return procedure.execute(context, externalRef); - } - return false; // Continue looping. - } - - } -} +package org.simantics.db.procore.cluster; + +import gnu.trove.set.hash.TIntHashSet; + +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.impl.ClusterI; +import org.simantics.db.impl.ClusterSupport; +import org.simantics.db.impl.ClusterTraitsBase; +import org.simantics.db.impl.Modifier; +import org.simantics.db.impl.TableSizeListener; + +public class CompleteTableSmall extends CompleteTable { + public CompleteTableSmall(TableSizeListener sizeListener, int[] header, int headerBase) { + super(sizeListener, header, headerBase); + } + public CompleteTableSmall(TableSizeListener sizeListener, int[] header, int headerBase, int[] ints) { + super(sizeListener, header, headerBase, ints); + } + + @Override + public boolean foreachPredicate(int setIndex, + ClusterI.PredicateProcedure procedure, + Context context, ClusterSupport support, Modifier modifier) + throws DatabaseException { + ForeachPredicate t = new ForeachPredicate(procedure, support, modifier); + return foreachComplete(setIndex, t, context, null, null); + } + + @Override + public boolean foreachObject(int setIndex, + ClusterI.ObjectProcedure procedure, + Context context, ClusterSupport support, Modifier modifier, + ClusterI.CompleteTypeEnum completeType) + throws DatabaseException { + ForeachObject t = new ForeachObject + (procedure, support, modifier, completeType); + return foreachComplete(setIndex, t, context, null, null); + } + + private static final class ForeachPredicate + implements ClusterI.ObjectProcedure { + private TIntHashSet completeTypes = new TIntHashSet(); + private ClusterI.PredicateProcedure procedure; + public ForeachPredicate(ClusterI.PredicateProcedure + procedure, ClusterSupport support, Modifier modifier) { + this.procedure = procedure; + } + @Override + public boolean execute(Context context, int completeRef) { + ClusterI.CompleteTypeEnum completeType = ClusterTraitsSmall.completeRefAndTypeGetType(completeRef); + if (!completeTypes.contains(completeType.getValue())) { + completeTypes.add(completeType.getValue()); + try { + int pKey = ClusterTraitsBase.getCompleteTypeResourceKeyFromEnum(completeType); + if (procedure.execute(context, pKey, 0)) + return true; // loop broken by procedure + } catch (DatabaseException e) { + e.printStackTrace(); + return false; + } + } + return false; // Continue looping. + } + + } + private static class ForeachObject + implements ClusterI.ObjectProcedure { + private ClusterI.ObjectProcedure procedure; + private Modifier modifier; + private ClusterI.CompleteTypeEnum completeType; + public ForeachObject(ClusterI.ObjectProcedure + procedure, ClusterSupport support, Modifier modifier, ClusterI.CompleteTypeEnum completeType) { + this.procedure = procedure; + this.modifier = modifier; + this.completeType = completeType; + } + @Override + public boolean execute(Context context, int completeRef) throws DatabaseException { + ClusterI.CompleteTypeEnum completeType2 = ClusterTraitsSmall.completeRefAndTypeGetType(completeRef); + if (completeType == completeType2) { // same predicate + int objectRef = ClusterTraitsSmall.completeRefAndTypeGetRef(completeRef); + int externalRef; + if (null == modifier) + externalRef = objectRef; + else + externalRef = modifier.execute(objectRef); + return procedure.execute(context, externalRef); + } + return false; // Continue looping. + } + + } +}