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)); + } }