
org.aksw.jena_sparql_api.views.PrefixSet Maven / Gradle / Ivy
package org.aksw.jena_sparql_api.views;
import java.util.Collection;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeSet;
import org.aksw.commons.util.strings.StringUtils;
/**
* TODO Switch to a trie data structure
*
* @author Claus Stadler
*
*/
public class PrefixSet
{
private NavigableSet prefixes;
public PrefixSet() {
this.prefixes = new TreeSet();
}
public PrefixSet(String ... strings) {
this.prefixes = new TreeSet();
for(String string : strings) {
prefixes.add(string);
}
}
public PrefixSet(NavigableSet prefixes)
{
this.prefixes = prefixes;
}
public PrefixSet(PrefixSet uriPrefixes) {
this(new TreeSet(uriPrefixes.prefixes));
}
public void addAll(Collection prefixes) {
this.prefixes.addAll(prefixes);
}
public void addAll(PrefixSet other) {
addAll(other.getSet());
}
public NavigableSet getSet() {
return prefixes;
}
public boolean isEmpty() {
return prefixes.isEmpty();
}
@Override
public String toString() {
return "PrefixSet [prefixes=" + prefixes + "]";
}
/**
* Tests whether the set constains a prefix for the given argument
*
* @param value
* @return
*/
public boolean containsPrefixOf(String value) {
return StringUtils.longestPrefixLookup(value, prefixes) != null;
}
/**
* Tests whether the argument is a prefix of one of the items
*
* @param value
* @return
*/
public boolean isPrefixForItem(String prefix) {
return getShortestMatch(prefix) != null;
}
/*
public Set getShortestMatches(String prefix) {
}*/
public String getShortestMatch(String prefix) {
return StringUtils.shortestMatchLookup(prefix, true, prefixes);
}
public static void main(String[] args) {
PrefixSet x = new PrefixSet();
x.getSet().add("aaa");
x.getSet().add("bbb");
x.getSet().add("b");
x.getSet().add("ccc");
x.getSet().add("cccd");
x.getSet().add("cccde");
//TODO Creata JUNIT Test case
//Assert.assertTrue(x.containsPrefixOf("cccd"));
//Assert.assertTrue(x.isPrefixForItem("bb"));
}
public void removeAll(Collection ps) {
prefixes.removeAll(ps);
}
public void add(String s) {
prefixes.add(s);
}
public Set getPrefixesOf(String s) {
return StringUtils.getAllPrefixes(s, true, prefixes);
}
public Set getPrefixesOf(String s, boolean inclusive) {
return StringUtils.getAllPrefixes(s, inclusive, prefixes);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((prefixes == null) ? 0 : prefixes.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
PrefixSet other = (PrefixSet) obj;
if (prefixes == null) {
if (other.prefixes != null)
return false;
} else if (!prefixes.equals(other.prefixes))
return false;
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy