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(){