📄 operator_modtime.java
字号:
/**
*
*/
package cn.edu.nju.software.ruse;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author spring
*
*/
public class Operator_ModTime extends Operator {
/*
* (non-Javadoc)
*
* @see cn.edu.nju.software.ruse.Operator#getPRI()
*/
public Operator_ModTime() {
desription = "MODTIME";
PRI = PRI_MODTIME;
}
public int getPRI() {
return PRI;
}
public HashSet<File> getFileSet(String expre, Index index) {
//System.err.println("@Operator_ModTime Starting to getFileSet from the index!");
expre = expre.trim();
HashMap<String, HashSet<File>> modTimeIndex = index.getModTimeIndex();
if (expre.charAt(0) != '[' && expre.charAt(0) != '{') {
/**
* case1: modTime: 20081111111111
*/
if(modTimeIndex.containsKey(expre)) {
return modTimeIndex.get(expre);
} else {
return new HashSet<File>();
}
} else {
/**
* case2: modTime:[] OR modTime:{} OR modTime:[} OR modTime:{]
*/
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(expre);
ArrayList<String> date = new ArrayList<String>();
HashSet<File> temp = new HashSet<File>();
int i = -1;
while (m.find()) {
i++;
date.add(i, m.group());
}
/**
* case2.1: modTime:[A]
*/
if (date.size() == 1) {
String s = date.get(0);
if(modTimeIndex.containsKey(s)) {
return modTimeIndex.get(s);
} else {
return new HashSet<File>();
}
} else {
if (expre.charAt(0) == '['
&& expre.charAt(expre.length() - 1) == ']') {
Iterator<String> it = modTimeIndex.keySet().iterator();
while (it.hasNext()) {
String dateFromIndex = it.next();
if (dateFromIndex.compareTo(date.get(0)) >= 0
&& dateFromIndex.compareTo(date.get(1)) <= 0) {
temp.addAll(modTimeIndex.get(dateFromIndex));
}
}
return temp;
}
if (expre.charAt(0) == '{'
&& expre.charAt(expre.length() - 1) == ']') {
Iterator<String> it = modTimeIndex.keySet().iterator();
while (it.hasNext()) {
String dateFromIndex = it.next();
if (dateFromIndex.compareTo(date.get(0)) > 0
&& dateFromIndex.compareTo(date.get(1)) <= 0) {
temp.addAll(modTimeIndex.get(dateFromIndex));
}
}
return temp;
}
if (expre.charAt(0) == '['
&& expre.charAt(expre.length() - 1) == '}') {
Iterator<String> it = modTimeIndex.keySet().iterator();
while (it.hasNext()) {
String dateFromIndex = it.next();
if (dateFromIndex.compareTo(date.get(0)) >= 0
&& dateFromIndex.compareTo(date.get(1)) < 0) {
temp.addAll(modTimeIndex.get(dateFromIndex));
}
}
return temp;
} else {
Iterator<String> it = modTimeIndex.keySet().iterator();
while (it.hasNext()) {
String dateFromIndex = it.next();
if (dateFromIndex.compareTo(date.get(0)) > 0
&& dateFromIndex.compareTo(date.get(1)) < 0) {
temp.addAll(modTimeIndex.get(dateFromIndex));
}
}
return temp;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -