This is an automated email from the ASF dual-hosted git repository. bertty pushed a commit to branch WAYANG-28 in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git
commit 6c51e71cc8a7e4fa858fd9908be676fceeaef374 Author: Bertty Contreras-Rojas <[email protected]> AuthorDate: Mon May 17 12:19:12 2021 -0400 [WAYANG-28] change the list for set when it handle the collections of tags --- .../plugin/hackit/core/tagger/HackitTagger.java | 16 +++++++-------- .../plugin/hackit/core/tuple/HackitTuple.java | 10 ++++++++++ .../plugin/hackit/core/tuple/header/Header.java | 23 ++++++++++++++++++++-- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tagger/HackitTagger.java b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tagger/HackitTagger.java index bb171ef..e172903 100644 --- a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tagger/HackitTagger.java +++ b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tagger/HackitTagger.java @@ -24,8 +24,10 @@ import org.apache.wayang.plugin.hackit.core.tuple.header.Header; import java.io.Serializable; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * HackitTagger is class where is allocated all the logic that need to be perform during the @@ -39,15 +41,13 @@ public class HackitTagger implements Serializable { * {@link List} of {@link HackitTag} that are added previous of the execution of the * original function */ - //TODO: It may change by a set - protected List<HackitTag> pre_tags; + protected Set<HackitTag> pre_tags; /** * {@link List} of {@link HackitTag} that are added after of the execution of the * original function */ - //TODO: It may change by a set - protected List<HackitTag> post_tags; + protected Set<HackitTag> post_tags; /** * Default Construct @@ -62,7 +62,7 @@ public class HackitTagger implements Serializable { */ public HackitTagger addPreTag(HackitTag tag){ if(this.pre_tags == null){ - this.pre_tags = new ArrayList<>(); + this.pre_tags = new HashSet<>(); } this.pre_tags.add(tag); return this; @@ -76,7 +76,7 @@ public class HackitTagger implements Serializable { */ public HackitTagger addPostTag(HackitTag tag){ if(this.post_tags == null){ - this.post_tags = new ArrayList<>(); + this.post_tags = new HashSet<>(); } this.post_tags.add(tag); return this; @@ -108,9 +108,9 @@ public class HackitTagger implements Serializable { * @param tuple is {@link HackitTuple} where the tags will be added * @param tags {@link List} of {@link HackitTag}'s that will add to {@link HackitTuple} */ - public void taggingTuple(HackitTuple tuple, List<HackitTag> tags){ + public void taggingTuple(HackitTuple tuple, Set<HackitTag> tags){ //TODO: change this code for an efficient one - tags.stream().forEach(tag -> tuple.addTag(tag.getInstance())); + tuple.addTag(tags); } /** diff --git a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/HackitTuple.java b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/HackitTuple.java index 8c2cc51..7e36fa0 100644 --- a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/HackitTuple.java +++ b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/HackitTuple.java @@ -24,6 +24,7 @@ import org.apache.wayang.plugin.hackit.core.tuple.header.HeaderBuilder; import java.io.Serializable; import java.util.Iterator; +import java.util.Set; /** * HackitTuple is the base of Hackit because is the basic structure where the needed elements are added @@ -123,6 +124,15 @@ public class HackitTuple<K, T> implements Serializable, ActionGroup { } /** + * add a {@link Set} of {@lin HackitTag} on the {@link Header} + * + * @param tags {@link HackitTag} that it will need at some point on the process + */ + public void addTag(Set<HackitTag> tags){ + this.header.addTag(tags); + } + + /** * get a {@link Iterator} of the currents {@link HackitTag} that are inside of the {@link Header} * @return {@link Iterator} of tags */ diff --git a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/header/Header.java b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/header/Header.java index 2d3577b..c08a2f0 100644 --- a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/header/Header.java +++ b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/tuple/header/Header.java @@ -23,8 +23,10 @@ import org.apache.wayang.plugin.hackit.core.tags.HackitTag; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * Header is the container of the metadata asociated to one {@link org.apache.wayang.plugin.hackit.core.tuple.HackitTuple} @@ -49,7 +51,7 @@ public abstract class Header<K> implements Serializable, ActionGroup { * tags added to the header, this describe some action that need to be apply to the * {@link org.apache.wayang.plugin.hackit.core.tuple.HackitTuple} */ - private List<HackitTag> tags; + private Set<HackitTag> tags; /** * during the process of adding news {@link HackitTag} could add a new {@link org.apache.wayang.plugin.hackit.core.action.Action} at the header, and this @@ -121,7 +123,7 @@ public abstract class Header<K> implements Serializable, ActionGroup { public void addTag(HackitTag tag){ //TODO: could be better to use an Set because it just saving uniques elements if(this.tags == null){ - this.tags = new ArrayList<>(); + this.tags = new HashSet<>(); } this.tags.add(tag); //update all the possible actions on the {@link ActionGroup} @@ -130,6 +132,23 @@ public abstract class Header<K> implements Serializable, ActionGroup { } /** + * do exactly the same of {@link #addTag(HackitTag)} but adding all the element at the same time + * + * @param tags {@link Set} of {@link HackitTag} that will be added + */ + public void addTag(Set<HackitTag> tags){ + if(this.tags == null){ + this.tags = new HashSet<>(); + } + this.tags.addAll(tags); + tags.stream() + .forEach( + this::updateActionVector + ) + ; + } + + /** * remove all the tags from the header, and set all the possible options as false */ public void clearTags(){
