diff --git a/src/main/java/org/gcube/social_networking/socialutillibrary/Utils.java b/src/main/java/org/gcube/social_networking/socialutillibrary/Utils.java
index f32049b..6872f27 100644
--- a/src/main/java/org/gcube/social_networking/socialutillibrary/Utils.java
+++ b/src/main/java/org/gcube/social_networking/socialutillibrary/Utils.java
@@ -39,21 +39,25 @@ public class Utils {
/**
* Hashtag regex enhanced for ticket #4937
*/
+ @Deprecated
private static final String HASHTAG_REGEX = "^#\\w+([-_.]?\\w+)*|\\s#\\w+([-_.]?\\w+)*|(?<=[\\[({])#\\w+([-_.]?\\w+)";
/**
* IPv4 regex
*/
+ @Deprecated
public static final String IPV4_REGEX = "\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b";
/**
* IPV6 regex needs to be put in square brackets, see below
*/
+ @Deprecated
public static final String IPV6_REGEX = "\\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\b";
/**
* Pattern for URLS
*/
+ @Deprecated
private static final Pattern URL_PATTERN = Pattern.compile(
"\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" +
"(\\w+:\\w+@)?((([-\\w]+\\.)+(com|org|net|gov" +
@@ -174,6 +178,7 @@ public class Utils {
* @param feedText
* @return the text with the clickable url in it
*/
+ @Deprecated
public static String extractURL(String feedText) {
// separate input by spaces ( URLs have no spaces )
feedText = feedText.replaceAll("(\r\n|\n)","
");
@@ -271,6 +276,7 @@ public class Utils {
* @param item a text token
* @return the actual http link
*/
+ @Deprecated
public static String getHttpToken(String originalItem) {
// apply pattern
String item = null;
@@ -374,6 +380,7 @@ public class Utils {
* @param text
* @return a String without html tags
*/
+ @Deprecated
public static String removeHTMLFromText(String text){
if(text == null)
diff --git a/src/main/java/org/gcube/socialnetworking/socialtoken/SocialMessageParser.java b/src/main/java/org/gcube/socialnetworking/socialtoken/SocialMessageParser.java
index b84fb3c..a93f05a 100644
--- a/src/main/java/org/gcube/socialnetworking/socialtoken/SocialMessageParser.java
+++ b/src/main/java/org/gcube/socialnetworking/socialtoken/SocialMessageParser.java
@@ -23,7 +23,10 @@ public class SocialMessageParser {
private final String originalMessage;
private StringWriter stringWriter;
+
private List tokens;
+ private List tagTokens;
+ private List urlTokens;
private List hashtags;
@@ -34,12 +37,18 @@ public class SocialMessageParser {
public List getTokens() {
if(tokens==null){
tokens = new ArrayList<>();
+ tagTokens = new ArrayList<>();
+ urlTokens = new ArrayList<>();
+ hashtags = new ArrayList<>();
+
GCubeStringTokenizer socialStringTokenizer = new GCubeStringTokenizer(originalMessage);
for(Token token : socialStringTokenizer.getTokens()) {
String tokenString = token.getToken();
if(tokenString.startsWith("#")) {
TagToken tagToken = new TagToken(token);
tokens.add(tagToken);
+ tagTokens.add(tagToken);
+ hashtags.add(tagToken.getToken());
continue;
}
@@ -47,6 +56,7 @@ public class SocialMessageParser {
if(url!=null) {
URLToken urlToken = new URLToken(token);
tokens.add(urlToken);
+ urlTokens.add(urlToken);
continue;
}
@@ -60,13 +70,9 @@ public class SocialMessageParser {
public String getParsedMessage() {
if(stringWriter==null) {
stringWriter = new StringWriter();
- hashtags = new ArrayList<>();
for(ReplaceableToken token : getTokens()) {
stringWriter.append(token.getTokenReplacement());
stringWriter.append(token.getDelimiter());
- if(token instanceof TagToken) {
- hashtags.add(token.getToken());
- }
}
}
return stringWriter.toString();
@@ -108,9 +114,23 @@ public class SocialMessageParser {
}
public List getHashtags() {
- if(stringWriter==null) {
- getParsedMessage();
+ if(tokens==null){
+ getTokens();
}
return hashtags;
}
+
+ public List getTagTokens() {
+ if(tokens==null){
+ getTokens();
+ }
+ return tagTokens;
+ }
+
+ public List getURLTokens() {
+ if(tokens==null){
+ getTokens();
+ }
+ return urlTokens;
+ }
}
diff --git a/src/main/java/org/gcube/socialnetworking/socialtoken/URLToken.java b/src/main/java/org/gcube/socialnetworking/socialtoken/URLToken.java
index 0a582d6..8e45761 100644
--- a/src/main/java/org/gcube/socialnetworking/socialtoken/URLToken.java
+++ b/src/main/java/org/gcube/socialnetworking/socialtoken/URLToken.java
@@ -9,6 +9,8 @@ import org.gcube.socialnetworking.tokenization.Token;
public class URLToken extends ReplaceableToken {
+ protected SanitizedURL sanitizedURL;
+
public URLToken(String token, String delimiter, int start, int end) {
super(token, delimiter, start, end);
}
@@ -33,8 +35,7 @@ public class URLToken extends ReplaceableToken {
try {
Map anchorAttibutes = new HashMap<>(1);
anchorAttibutes.put("target", "_blank");
- SanitizedURL sanitizedURL = new SanitizedURL(token);
- String url = sanitizedURL.getURL().toString();
+ String url = getExtractedURL().toString();
tokenReplacement = sanitizedURL.getPrefix() + ReplaceableToken.createLink(url, url, anchorAttibutes) + sanitizedURL.getPostfix();
}catch(MalformedURLException e) {
tokenReplacement = token;
@@ -43,5 +44,12 @@ public class URLToken extends ReplaceableToken {
}
return tokenReplacement;
}
+
+ public URL getExtractedURL() throws MalformedURLException {
+ if(sanitizedURL==null) {
+ sanitizedURL = new SanitizedURL(token);
+ }
+ return sanitizedURL.getURL();
+ }
}
diff --git a/src/test/java/org/gcube/social_networking/socialutillibrary/TestUnit.java b/src/test/java/org/gcube/social_networking/socialutillibrary/TestUnit.java
index 37eb705..9341c8f 100644
--- a/src/test/java/org/gcube/social_networking/socialutillibrary/TestUnit.java
+++ b/src/test/java/org/gcube/social_networking/socialutillibrary/TestUnit.java
@@ -2,6 +2,7 @@ package org.gcube.social_networking.socialutillibrary;
import java.util.List;
+import org.gcube.socialnetworking.socialtoken.SocialMessageParser;
import org.gcube.socialnetworking.socialtoken.URLToken;
import org.junit.Test;
import org.slf4j.Logger;
@@ -38,5 +39,22 @@ public class TestUnit {
logger.debug(urlToken.getTokenReplacement());
}
}
+
+
+ protected String findFirstLink(String message) {
+ try {
+ SocialMessageParser messageParser = new SocialMessageParser(message);
+ List urlTokens = messageParser.getURLTokens();
+ return urlTokens.get(0).getExtractedURL().toString();
+ }catch (Exception e) {
+ return null;
+ }
+ }
+
+ @Test
+ public void testTest() {
+ String text = "Hello (https://doodle.com/poll/not-existing-poll)";
+ logger.debug(findFirstLink(text));
+ }
}