📄 rangequerycreator.java
字号:
package queries;
public class RangeQueryCreator extends QueryCreator {
private static RangeQueryCreator uniqueInstance;
private String[] bounds;
private RangeQueryCreator(){
}
@Override
public Query buildQuery(String token) {
RangeQuery query = null;
if(token.startsWith("modtime:")){
token = ":" + token;
}
bounds = token.substring(10, token.length() - 1).split("-");
Comparable left = bounds[0];
Comparable right = bounds[1];
if(token.startsWith("filesize:")){
left = new Long(bounds[0]);
right = new Long(bounds[1]);
}
if(token.charAt(9) == '{'){
if(token.charAt(token.length() - 1) == '}'){
query = createRangeQuery(token);
query.setState(new LeftOpenRightOpenState(left,right));
}
else if(token.charAt(token.length() - 1) == ']'){
query = createRangeQuery(token);
query.setState(new LeftOpenRightCloseState(left,right));
}
}
else if(token.charAt(9) == '['){
if(token.charAt(token.length() - 1) == '}'){
query = createRangeQuery(token);
query.setState(new LeftCloseRightOpenState(left,right));
}
else if(token.charAt(token.length() - 1) == ']'){
query = createRangeQuery(token);
query.setState(new LeftCloseRightCloseState(left,right));
}
}
return query;
}
public static RangeQueryCreator getInstance(){
if(uniqueInstance == null){
synchronized(RangeQueryCreator.class){
if(uniqueInstance == null){
uniqueInstance = new RangeQueryCreator();
}
}
}
return uniqueInstance;
}
private RangeQuery createRangeQuery(String token){
if(token.startsWith("filesize:")){
return new SizeRangeQuery();
}
else if(token.startsWith(":modtime:")){
addDigits(bounds);
return new TimeRangeQuery();
}
else if(token.startsWith("filename:")){
return new NameRangeQuery();
}
return null;
}
private void addDigits(String[] bounds){
if(bounds.length == 2){
StringBuffer sb1 = new StringBuffer(bounds[0]);
StringBuffer sb2 = new StringBuffer(bounds[1]);
for(int i = bounds[0].length();i < 14;i++){
sb1.append("0");
}
for(int i = bounds[1].length();i < 14;i++){
sb2.append("0");
}
bounds[0] = sb1.toString();
bounds[1] = sb2.toString();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -