package GeDBIT.web;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ProteinAction extends ActionSupport {
private String prostr; // 输入DNA串
private Map<String, String> result = new LinkedHashMap<String, String>(); // 用于JSP显示
private String resdna = "";// 返回的总串
private int pronum = 0; // 结果数量
private double time = 0.0001; // 搜索时间
private int allcount = 10000; // 搜索数据库的大小
private int page = 0; // 显示当前页数
private int allpage = 0; // 总页数
private double r = 0;
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public void setAllpage(int allpage) {
this.allpage = allpage;
}
public int getAllpage() {
return allpage;
}
public void setPage(int page) {
this.page = page;
}
public int getPage() {
return page;
}
public void setTime(double time) {
this.time = time;
}
public double getTime() {
return time;
}
public void setAllcount(int allcount) {
this.allcount = allcount;
}
public int getAllcount() {
return allcount;
}
public String getResdna() {
return resdna;
}
public void setResdna(String resdna) {
this.resdna = resdna;
}
public int getPronum() {
return pronum;
}
public void setPronum(int pronum) {
this.pronum = pronum;
}
public String getProstr() {
return prostr;
}
public void setProstr(String prostr) {
this.prostr = prostr;
}
public Map<String, String> getResult() {
return result;
}
public void setResult(Map<String, String> result) {
this.result = result;
}
public void setRes() {
int count = 1;
int evpg = 10; // 每一页的数量 用于演示可修改
String res;
Pattern patt = Pattern.compile("fragment:.+source"); // 这里生成txt文件
@SuppressWarnings("unused")
Pattern pattend = Pattern.compile(" source: >([^'])+");
try // 这里读取txt文件
{
File file = new File("D:/data/protein/presult.txt");
if (file.isFile() && file.exists()) {
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), "GBK");
BufferedReader buffreader = new BufferedReader(read);
String lineTxt = null;
String tpo;
buffreader.readLine();
while ((lineTxt = buffreader.readLine()) != null) {
Matcher matcher = patt.matcher(lineTxt);
// System.out.println("OPEN OK");
while (matcher.find()) {
res = matcher.group().toString()
.replaceFirst("fragment: ", "");
res = res.replaceFirst(" source", "");
tpo = lineTxt.replace(res,
"<strong style='color:blue'>" + res
+ "</strong>");
tpo = tpo.replace("source:",
"<strong style='color:red'>source:</strong>");
tpo = tpo.replace("fragment:",
"<strong style='color:red'>fragment:</strong>");
tpo = tpo.replace("offset:",
"<strong style='color:red'>offset:</strong>");
if ((count > (page * evpg))
&& (count <= (page + 1) * evpg)) {
result.put(String.valueOf(count), tpo);
}
// System.out.println(res);
++count;
}
}
allpage = ((count - 1) / evpg) - 1;
pronum = count - 1;
read.close();
} else
System.out.println("Open Error");
} catch (Exception e) {
System.out.println("Error");
}
}
public String execute() throws Exception {
String[] tp = prostr.split(",");
prostr = tp[0];
r = Double.valueOf(tp[1]);
new ProteinQuery().runQuery(r);
setRes();
// System.out.println(prostr);
allcount = 100000;
time = 0.001;
prostr = prostr + "," + r;
return SUCCESS;
}
}