From df157ff23a63626487b850386b2e47f9669223af Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Mon, 25 Oct 2021 17:13:29 +0200 Subject: Improved sonar report --- .../query/building/PredicateBuilder_string.java | 107 --------------------- .../refinery/store/query/internal/DNF2PQuery.java | 21 ++-- .../store/query/internal/ModelUpdateListener.java | 10 +- .../store/query/internal/QueriableModelImpl.java | 1 - .../query/internal/RelationalRuntimeContext.java | 10 +- .../refinery/store/query/internal/ViewUpdate.java | 30 ++++++ .../store/query/internal/ViewUpdateTranslator.java | 2 +- .../refinery/store/query/view/RelationView.java | 3 +- 8 files changed, 46 insertions(+), 138 deletions(-) delete mode 100644 store/src/main/java/tools/refinery/store/query/building/PredicateBuilder_string.java diff --git a/store/src/main/java/tools/refinery/store/query/building/PredicateBuilder_string.java b/store/src/main/java/tools/refinery/store/query/building/PredicateBuilder_string.java deleted file mode 100644 index b99407a3..00000000 --- a/store/src/main/java/tools/refinery/store/query/building/PredicateBuilder_string.java +++ /dev/null @@ -1,107 +0,0 @@ -package tools.refinery.store.query.building; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; - -import tools.refinery.store.query.view.RelationView; - -public class PredicateBuilder_string { - private PredicateBuilder_string() {} - - public static PredicateBuild1 predicate(String name) { - return new PredicateBuild1(name); - } - public static class PredicateBuild1 { - private String name; - public PredicateBuild1(String name) { - this.name = name; - } - public PredicateBuild2 parameters(String... parameters) { - return new PredicateBuild2(name, parameters); - } - } - public static class PredicateBuild2 { - private String name; - private String[] parameters; - public PredicateBuild2(String name, String[] parameters) { - this.name = name; - this.parameters = parameters; - } - - public PredicateBuild3 clause(DNFAtom...constraints) { - return new PredicateBuild3(name,parameters,List.of(constraints)); - } - } - public static class PredicateBuild3 { - String name; - String[] parameters; - List clauses; - public PredicateBuild3(String name, String[] parameters, List clauses) { - super(); - this.name = name; - this.parameters = parameters; - this.clauses = clauses; - } - - public PredicateBuild3 clause(DNFAtom...constraints) { - List newClauses = new ArrayList<>(); - newClauses.addAll(clauses); - newClauses.add(constraints); - return new PredicateBuild3(name, parameters, newClauses); - } - public DNFPredicate build() { - List newParameters = new ArrayList<>(this.parameters.length); - for(int i = 0; i newClauses = new ArrayList<>(this.clauses.size()); - for(DNFAtom[] clause : this.clauses) { - List constraints = new ArrayList<>(clause.length); - Collections.addAll(constraints, clause); - newClauses.add(new DNFAnd(new HashSet<>(), constraints)); - } - - return new DNFPredicate(name,newParameters,newClauses); - } - } - - private static Variable stringToVariable(String name) { - if(name != null) { - return new Variable(name); - } else { - return null; - } - } - private static List stringToVariable(String[] names) { - List variables = new ArrayList<>(); - for(int i = 0; i view, String... variables) { - - return new RelationAtom(view, stringToVariable(variables)); - } - - public static PredicateAtom cInPredicate(DNFPredicate referred, String... variables) { - return new PredicateAtom(true, false, referred, stringToVariable(variables)); - } - public static PredicateAtom cInTransitivePredicate(DNFPredicate referred, String... variables) { - return new PredicateAtom(true, true, referred, stringToVariable(variables)); - } - public static PredicateAtom cNotInPredicate(DNFPredicate referred, String... variables) { - return new PredicateAtom(false, false, referred, stringToVariable(variables)); - } -} diff --git a/store/src/main/java/tools/refinery/store/query/internal/DNF2PQuery.java b/store/src/main/java/tools/refinery/store/query/internal/DNF2PQuery.java index c72e0234..bcc03fb4 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/DNF2PQuery.java +++ b/store/src/main/java/tools/refinery/store/query/internal/DNF2PQuery.java @@ -35,10 +35,9 @@ import tools.refinery.store.query.building.RelationAtom; import tools.refinery.store.query.building.Variable; public class DNF2PQuery { - //private static Map DNF2PQueryMap = new HashMap<>(); - public static SimplePQuery translate(DNFPredicate predicate, Map DNF2PQueryMap) { - SimplePQuery query = DNF2PQueryMap.get(predicate); + public static SimplePQuery translate(DNFPredicate predicate, Map dnf2PQueryMap) { + SimplePQuery query = dnf2PQueryMap.get(predicate); if (query != null) { return query; } @@ -61,14 +60,14 @@ public class DNF2PQuery { body.setSymbolicParameters(symbolicParameters); query.addBody(body); for (DNFAtom constraint : clause.getConstraints()) { - translateDNFAtom(constraint, body, DNF2PQueryMap); + translateDNFAtom(constraint, body, dnf2PQueryMap); } } - DNF2PQueryMap.put(predicate, query); + dnf2PQueryMap.put(predicate, query); return query; } - private static void translateDNFAtom(DNFAtom constraint, PBody body, Map DNF2PQueryMap) { + private static void translateDNFAtom(DNFAtom constraint, PBody body, Map dnf2PQueryMap) { if (constraint instanceof EquivalenceAtom equivalence) { translateEquivalenceAtom(equivalence, body); } @@ -76,7 +75,7 @@ public class DNF2PQuery { translateRelationAtom(relation, body); } if (constraint instanceof PredicateAtom predicate) { - translatePredicateAtom(predicate, body, DNF2PQueryMap); + translatePredicateAtom(predicate, body, dnf2PQueryMap); } } @@ -101,7 +100,7 @@ public class DNF2PQuery { new TypeConstraint(body, Tuples.flatTupleOf(variables), relation.getView()); } - private static void translatePredicateAtom(PredicateAtom predicate, PBody body, Map DNF2PQueryMap) { + private static void translatePredicateAtom(PredicateAtom predicate, PBody body, Map dnf2PQueryMap) { Object[] variables = new Object[predicate.getSubstitution().size()]; for (int i = 0; i < predicate.getSubstitution().size(); i++) { variables[i] = body.getOrCreateVariableByName(predicate.getSubstitution().get(i).getName()); @@ -112,17 +111,17 @@ public class DNF2PQuery { throw new IllegalArgumentException("Transitive Predicate Atoms must be binary."); } new BinaryTransitiveClosure(body, Tuples.flatTupleOf(variables), - DNF2PQuery.translate(predicate.getReferred(), DNF2PQueryMap)); + DNF2PQuery.translate(predicate.getReferred(), dnf2PQueryMap)); } else { new PositivePatternCall(body, Tuples.flatTupleOf(variables), - DNF2PQuery.translate(predicate.getReferred(), DNF2PQueryMap)); + DNF2PQuery.translate(predicate.getReferred(), dnf2PQueryMap)); } } else { if (predicate.isTransitive()) { throw new InputMismatchException("Transitive Predicate Atoms cannot be negative."); } else { new NegativePatternCall(body, Tuples.flatTupleOf(variables), - DNF2PQuery.translate(predicate.getReferred(), DNF2PQueryMap)); + DNF2PQuery.translate(predicate.getReferred(), dnf2PQueryMap)); } } } diff --git a/store/src/main/java/tools/refinery/store/query/internal/ModelUpdateListener.java b/store/src/main/java/tools/refinery/store/query/internal/ModelUpdateListener.java index c784cb3c..aa80985f 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/ModelUpdateListener.java +++ b/store/src/main/java/tools/refinery/store/query/internal/ModelUpdateListener.java @@ -35,17 +35,11 @@ public class ModelUpdateListener { Relation relation = view.getRepresentation(); // 1. register views to relations, if necessary - var views = relation2View.get(relation); - if (views == null) { - views = new HashSet<>(); - relation2View.put(relation, views); - } + var views = relation2View.computeIfAbsent(relation, x->new HashSet<>()); views.add(view); // 2. register notifier map to views, if necessary - if (!view2Buffers.containsKey(view)) { - view2Buffers.put(view, new HashSet<>()); - } + view2Buffers.computeIfAbsent(view, x->new HashSet<>()); } boolean containsRelationalView(RelationView relationalKey) { diff --git a/store/src/main/java/tools/refinery/store/query/internal/QueriableModelImpl.java b/store/src/main/java/tools/refinery/store/query/internal/QueriableModelImpl.java index f30b947a..0f4d609f 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/QueriableModelImpl.java +++ b/store/src/main/java/tools/refinery/store/query/internal/QueriableModelImpl.java @@ -174,7 +174,6 @@ public class QueriableModelImpl implements QueriableModel { } @Override public void flushChanges() { - //this.initEngine(); this.scope.flush(); } diff --git a/store/src/main/java/tools/refinery/store/query/internal/RelationalRuntimeContext.java b/store/src/main/java/tools/refinery/store/query/internal/RelationalRuntimeContext.java index d5112128..a186b5dd 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/RelationalRuntimeContext.java +++ b/store/src/main/java/tools/refinery/store/query/internal/RelationalRuntimeContext.java @@ -70,7 +70,7 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { throw new IllegalStateException("Engine tries to index a new key " +key); } } - + @SuppressWarnings("squid:S1452") RelationView checkKey(IInputKey key) { if(key instanceof RelationView) { RelationView relationViewKey = (RelationView) key; @@ -121,14 +121,6 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { } return true; } -// private Object[] toObjectMask(RelationViewKey relationalViewKey, TupleMask seedMask, ITuple seed) { -// final int arity = relationalViewKey.getArity(); -// Object[] result = new Object[arity]; -// for(int i = 0; i enumerateValues(IInputKey key, TupleMask seedMask, ITuple seed) { diff --git a/store/src/main/java/tools/refinery/store/query/internal/ViewUpdate.java b/store/src/main/java/tools/refinery/store/query/internal/ViewUpdate.java index d4a295f8..7d1a4c05 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/ViewUpdate.java +++ b/store/src/main/java/tools/refinery/store/query/internal/ViewUpdate.java @@ -1,4 +1,34 @@ package tools.refinery.store.query.internal; +import java.util.Arrays; +import java.util.Objects; + record ViewUpdate (Object[] tuple, boolean isInsertion) { + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Arrays.deepHashCode(tuple); + result = prime * result + Objects.hash(isInsertion); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ViewUpdate other = (ViewUpdate) obj; + return isInsertion == other.isInsertion && Arrays.deepEquals(tuple, other.tuple); + } + + @Override + public String toString() { + return "ViewUpdate [" + Arrays.toString(tuple) + "insertion= "+this.isInsertion+"]"; + } + } diff --git a/store/src/main/java/tools/refinery/store/query/internal/ViewUpdateTranslator.java b/store/src/main/java/tools/refinery/store/query/internal/ViewUpdateTranslator.java index 4596b9c1..1c210c5f 100644 --- a/store/src/main/java/tools/refinery/store/query/internal/ViewUpdateTranslator.java +++ b/store/src/main/java/tools/refinery/store/query/internal/ViewUpdateTranslator.java @@ -28,7 +28,7 @@ public class ViewUpdateTranslator { public Object[] isMatching(Tuple tuple, D value){ return isMatching(key.getWrappedKey().transform(tuple, value), filter); } - + @SuppressWarnings("squid:S1168") private Object[] isMatching(Object[] tuple, ITuple filter) { for(int i = 0; i extends BaseInputKeyWrapper