package GeDBIT.web; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; 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 DNAAction extends ActionSupport { private String dnastr; // 输入DNA串 private Map<String, String> result = new LinkedHashMap<String, String>(); // 用于JSP显示 private String resdna = "";// 返回的总串 private int dnanum = 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 getDnanum() { return dnanum; } public void setDnanum(int dnanum) { this.dnanum = dnanum; } public String getDnastr() { return dnastr; } public void setDnastr(String dnastr) { this.dnastr = dnastr; } public Map<String, String> getResult() { return result; } public void setResult(Map<String, String> result) { this.result = result; } @SuppressWarnings("unused") public void setSour() { int count = 0; String res; Pattern patt = Pattern.compile("data:.+"); // 这里生成txt文件 String fileR = "d:/data/dna/arab/arab1_out.con"; // 文件路径 String fileS = "D:/data/dna/arab/arab1.con"; // 文件路径 try // 这里读取txt文件 { count = 0; File file = new File(fileS); if (file.isFile() && file.exists()) { InputStreamReader read = new InputStreamReader( new FileInputStream(file), "GBK"); BufferedReader buffreader = new BufferedReader(read); String lineTxt = null; lineTxt = buffreader.readLine(); FileWriter fileW = new FileWriter(fileR); fileW.write(lineTxt + " "); fileW.write(dnastr + "\n"); try { while ((lineTxt = buffreader.readLine()) != null) { fileW.write(lineTxt + "\n"); } } catch (IOException e1) { System.out.println("Writer Error"); e1.printStackTrace(); } buffreader.close(); fileW.flush(); fileW.close(); read.close(); } else System.out.println("Open Error"); } catch (Exception e) { System.out.println("Error"); } } public void setRes() { int count = 1; int evpg = 10; // 每一页的数量 String res; Pattern patt = Pattern.compile("fragment:.+source"); try // 这里读取txt文件 { File file = new File("D:/data/dna/dresult.txt"); if (file.isFile() && file.exists()) { InputStreamReader read = new InputStreamReader( new FileInputStream(file), "GBK"); BufferedReader buffreader = new BufferedReader(read); String lineTxt = null; 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", ""); if ((count > (page * evpg)) && (count <= (page + 1) * evpg)) { result.put(String.valueOf(count), res); } // System.out.println(res); ++count; } } allpage = ((count - 1) / evpg) - 1; // System.out.println(page); // System.out.println(allpage); dnanum = count - 1; buffreader.close(); read.close(); } else System.out.println("Open Error"); } catch (Exception e) { System.out.println("Error"); } } public String execute() throws Exception { String[] tp = dnastr.split(","); dnastr = tp[0]; r = Double.valueOf(tp[1]); setSour(); new DNAQuery().runQuery(r); setRes(); dnastr = dnastr + "," + r; allcount = 101; time = 0.001; return SUCCESS; } }