-
Notifications
You must be signed in to change notification settings - Fork 467
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
205 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
dotCMS/src/main/java/com/dotcms/analytics/query/OrderParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package com.dotcms.analytics.query; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
/** | ||
* Order parser | ||
* @author jsanca | ||
*/ | ||
public class OrderParser { | ||
|
||
// Expression for order | ||
private static final String ORDER_REGEX = "(\\w+\\.\\w+)\\s+(ASC|DESC)"; | ||
|
||
public static class ParsedOrder { | ||
private String term; | ||
private String order; | ||
|
||
public ParsedOrder(final String term, final String order) { | ||
this.term = term; | ||
this.order = order; | ||
} | ||
|
||
public String getTerm() { | ||
return term; | ||
} | ||
|
||
public String getOrder() { | ||
return order; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "Term: " + term + ", Order: " + order; | ||
} | ||
} | ||
|
||
public static ParsedOrder parseOrder(final String expression) throws IllegalArgumentException { | ||
|
||
// this should be cached and checked | ||
final Pattern pattern = Pattern.compile(ORDER_REGEX, Pattern.CASE_INSENSITIVE); | ||
final Matcher matcher = pattern.matcher(expression.trim()); | ||
|
||
if (matcher.matches()) { | ||
String term = matcher.group(1); // Ex: Events.day | ||
String order = matcher.group(2).toUpperCase(); // Ex: ASC o DESC | ||
|
||
return new ParsedOrder(term, order); | ||
} else { | ||
throw new IllegalArgumentException("The expression is not valid. The format should be 'Term ASC' or 'Term DESC'."); | ||
} | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
dotCMS/src/main/java/com/dotcms/analytics/query/TimeDimensionParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package com.dotcms.analytics.query; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
/** | ||
* Time Dimension Parser | ||
* @author jsanca | ||
*/ | ||
public class TimeDimensionParser { | ||
|
||
private static final String FIELD_REGEX = "(\\w+\\.\\w+)\\s+(\\w+)"; | ||
|
||
public static class TimeDimension { | ||
private String term; | ||
private String field; | ||
|
||
public TimeDimension(final String term, final String field) { | ||
this.term = term; | ||
this.field = field; | ||
} | ||
|
||
public String getTerm() { | ||
return term; | ||
} | ||
|
||
public String getField() { | ||
return field; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "Term: " + term + ", Field: " + field; | ||
} | ||
} | ||
|
||
public static TimeDimension parseTimeDimension(final String expression) throws IllegalArgumentException { | ||
// cache and checked | ||
final Pattern pattern = Pattern.compile(FIELD_REGEX); | ||
final Matcher matcher = pattern.matcher(expression.trim()); | ||
|
||
if (matcher.matches()) { | ||
|
||
final String term = matcher.group(1); // Ex: Events.day | ||
final String field = matcher.group(2); // Ex: day | ||
|
||
return new TimeDimension(term, field); | ||
} else { | ||
throw new IllegalArgumentException("The expression is not valid. This should be the format 'Term Field'."); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters