You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wayang.apache.org by be...@apache.org on 2021/09/22 15:21:52 UTC

[incubator-wayang] 11/15: [WAYANG-28] change the list for set when it handle the collections of tags

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 <be...@scalytics.io>
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(){