基于管道过滤器的KWIC系统实现(4)
来源:互联网 发布:新星星知我心1998全集 编辑:程序博客网 时间:2024/04/28 22:19
package lws;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
public class LineTransformer extends Filter{
public LineTransformer(Pipe input, Pipe output) {
super(input, output);
}
@Override
protected void transform(){
try{
ArrayList<String> lines = new ArrayList<String>();
CharArrayWriter writer = new CharArrayWriter();
//To get formed lines of String
int c = input_.read();
while(c != -1){
writer.write(c);
if(((char) c) == '\n'){
String line = writer.toString();
lines.add(line);
writer.reset();
}
c = input_.read();
}
Iterator<String> iterator = lines.iterator();
while(iterator.hasNext()){
boolean flag=true;
char[] chars = ((String) iterator.next()).toCharArray();
for(int i = 0; i < chars.length; i++){
if((chars[i]!=' ')&&flag==true){
if((chars[i]>='a')&&(chars[i]<='z')){
chars[i]-=32;
}
}else{
flag=false;
}
output_.write(chars[i]);
}
}
output_.closeWriter();
}catch(IOException exc){
exc.printStackTrace();
System.err.println("KWIC Error: Could not sort circular shifts.");
System.exit(1);
}
}
}
package lws;
import java.io.IOException;
public class Output extends Filter{
public Output(Pipe input){
super(input, null);
}
protected void transform(){
try{
int c = input_.read();
while(c != -1){
System.out.print((char) c);
c = input_.read();
}
}catch(IOException exc){
exc.printStackTrace();
System.err.println("KWIC Error: Broken pipe");
System.exit(1);
}
}
}
package lws;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;
public class ShiftFilter extends Filter{
private ArrayList<String> noiseWords;
public ShiftFilter(Pipe input,Pipe output,ArrayList<String> al){
super(input,output);
noiseWords=al;
}
protected void transform(){
try{
ArrayList<String> lines = new ArrayList<String>();
CharArrayWriter writer = new CharArrayWriter();
//To get formed lines of String
int c = input_.read();
while(c != -1){
writer.write(c);
if(((char) c) == '\n'){
String line = writer.toString();
lines.add(line);
writer.reset();
}
c = input_.read();
}
//To delete the noisy lines of String
deleteNoise(lines);
//To output the operated Strings
Iterator<String> iterator = lines.iterator();
while(iterator.hasNext()){
char[] chars = ((String) iterator.next()).toCharArray();
for(int i = 0; i < chars.length; i++)
output_.write(chars[i]);
}
output_.closeWriter();
}catch(IOException exc){
exc.printStackTrace();
System.err.println("KWIC Error: Could not sort circular shifts.");
System.exit(1);
}
}
//The method to implements the function of delete lines starting by a noisy word
private void deleteNoise(ArrayList<String> lines){
for(int i=0;i<lines.size();i++){
String line=new String(lines.get(i));
StringTokenizer tokenizer = new StringTokenizer(line);
String firstWord=tokenizer.nextToken();
for(int j=0;j<noiseWords.size();j++){
if(firstWord.equals(noiseWords.get(j))){
lines.remove(i);
i--;//If a line is deleted ,the index i must to be reduced by 1
break;
}
}
}
}
}
- 基于管道过滤器的KWIC系统实现(4)
- 基于管道过滤器的KWIC系统实现(1)
- 基于管道过滤器的KWIC系统实现(2)
- 基于管道过滤器的KWIC系统实现(3)
- 基于KWIC 的关键字匹配算法(管道+过滤器模式下实现)
- KWIC:管道-过滤器模式.
- KWIC:基于主程序/子程序风格的实现
- KWIC问题的实现
- KWIC系统之事件架构实现(主程序)
- 管道过滤器的实现---java语言
- 基于java过滤器实现web系统的IP访问控制
- 基于java过滤器实现web系统的IP访问控制
- KWIC系统之事件架构实现(排序模块,拆分模块,输入模块)
- KWIC系统之事件架构实现(输出模块,单词统计类,单词存储类)
- kwic系统模拟
- 软件体系结构上机实验 面向对象体系结构风格的 KWIC 关键词索引系统设计与实现 java
- KWIC-C/C++实现
- KWIC系统之事件架构实现(行存储类,行存储包装类,行存储改变事件)
- Java编写的多线程端口扫描器
- compile and execute cpp file in ubuntu
- 基于管道过滤器的KWIC系统实现(1)
- 基于管道过滤器的KWIC系统实现(2)
- 基于管道过滤器的KWIC系统实现(3)
- 基于管道过滤器的KWIC系统实现(4)
- poj1207-the 3n+1 problems
- poj1401 Factorial
- poj1405-Heritage
- 关于Java中的对象数组初始化
- 关于逻辑与与按位与
- Eclipse 的Debug使用
- C++中的指针与引用
- 分布式环境下用zookeeoer实现领导者选举、共享锁、同步队列