Skip to content

Commit

Permalink
Cleanup and more testing.
Browse files Browse the repository at this point in the history
  • Loading branch information
codingwhatever committed Nov 24, 2015
1 parent 24c4fa7 commit d536a9e
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import com.metamx.common.StringUtils;

import java.nio.ByteBuffer;
import java.util.regex.Pattern;

Expand All @@ -32,13 +32,15 @@ public class RegexSearchQuerySpec implements SearchQuerySpec
private static final byte CACHE_TYPE_ID = 0x3;

private final String pattern;
private Pattern compiled;

@JsonCreator
public RegexSearchQuerySpec(
@JsonProperty("pattern") String pattern
)
{
this.pattern = pattern;
compiled = Pattern.compile(pattern);
}

@JsonProperty
Expand All @@ -47,15 +49,36 @@ public String getPattern()
return pattern;
}

@Override
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (!(o instanceof RegexSearchQuerySpec)) {
return false;
}

RegexSearchQuerySpec that = (RegexSearchQuerySpec) o;

return !(pattern != null ? !pattern.equals(that.pattern) : that.pattern != null);

}

@Override
public int hashCode()
{
return pattern != null ? pattern.hashCode() : 0;
}

@Override
public boolean accept(String dimVal)
{
if (dimVal == null || pattern == null) {
return false;
}

Pattern compiled = Pattern.compile(pattern);
return compiled.matcher(dimVal).find();
return compiled.matcher(dimVal).find();
}

@Override
Expand All @@ -81,28 +104,4 @@ public String toString()
"pattern=" + pattern + "}";
}

@Override
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

RegexSearchQuerySpec that = (RegexSearchQuerySpec) o;

if (pattern == null && that.pattern == null) {
return true;
}

return pattern != null && pattern.equals(that.pattern);
}

@Override
public int hashCode()
{
return Objects.hashCode(pattern);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import io.druid.jackson.DefaultObjectMapper;
import io.druid.query.Druids;
import io.druid.query.Query;
import io.druid.query.QueryRunnerTestHelper;
import io.druid.query.dimension.DefaultDimensionSpec;
import io.druid.query.dimension.LegacyDimensionSpec;
import io.druid.query.search.search.RegexSearchQuerySpec;
import org.junit.Assert;
import org.junit.Test;
Expand All @@ -37,16 +32,19 @@ public class RegexSearchQueryTest
@Test
public void testQuerySerialization() throws IOException
{
Query query = Druids.newSearchQueryBuilder()
.dataSource(QueryRunnerTestHelper.dataSource)
.granularity(QueryRunnerTestHelper.allGran)
.intervals(QueryRunnerTestHelper.fullOnInterval)
.query(new RegexSearchQuerySpec("(upfront|total_market)"))
.build();
RegexSearchQuerySpec spec = new RegexSearchQuerySpec("(upfront|total_market)");

String json = jsonMapper.writeValueAsString(query);
Query serdeQuery = jsonMapper.readValue(json, Query.class);
String json = jsonMapper.writeValueAsString(spec);
RegexSearchQuerySpec serdeQuery = jsonMapper.readValue(json, RegexSearchQuerySpec.class);

Assert.assertEquals(query, serdeQuery);
Assert.assertEquals(spec, serdeQuery);
}

@Test
public void testRegexCompare()
{
RegexSearchQuerySpec rsq = new RegexSearchQuerySpec("^a.*b");
Assert.assertTrue(rsq.accept("aabb"));
Assert.assertFalse(rsq.accept("babba"));
}
}

0 comments on commit d536a9e

Please sign in to comment.