package net.varkhan.base.management.util;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 1/2/15
* @time 7:58 PM
*/
public class Prefix {
/** Protected constructor to prevent instantiation */
protected Prefix() { }
public static Iterable<String> enumeratePrefixesAsc(final char sep, final String key) {
return new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
private int dot=Integer.MAX_VALUE;
@Override
public boolean hasNext() {
return key!=null && dot>0;
}
@Override
public String next() {
if(key==null) throw new NoSuchElementException();
if(dot>key.length()) {
dot=key.length();
return key;
}
dot=key.lastIndexOf(sep, dot-1);
if(dot<0) return "";
return key.substring(0, dot);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
public static Iterable<String> enumeratePrefixesDes(final char sep, final String key) {
return new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
private int dot=-1;
@Override
public boolean hasNext() {
return key!=null && dot<key.length();
}
@Override
public String next() {
if(key==null) throw new NoSuchElementException();
if(dot<0) {
dot = 0;
return "";
}
dot=key.indexOf(sep, dot+1);
if(dot<0) {
dot=key.length();
return key;
}
return key.substring(0, dot);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
}