import java.io.*;
import java.util.*;
/**
*Trida Text
*analyzuje a pracuje s textem
*@author M.Kales
*/
public class Text{
public String soubor;
public Strom strom;
public BufferedReader bfr;
public String chyba;
public PrintWriter pw;
public char pismeno;
private static String platneZnakySlova = "[^A-Za-z켾]+";
public int maxCetnost;
public PrvekCetnost[] cetnost;
public PrvekCetnost nynejsi;
public Prvek ukazatel;
public String[] Vysledky, pomoc;
/**
*konstruktor tridy Text
*@param bfr otevreny vstupni soubor
*/
public Text(BufferedReader bfr){
this.strom=zpracujText(bfr);
maxCetnost=0;
cetnost = new PrvekCetnost[0];
}
/**
*metoda na zpracovani textu,
*projde cely vstupni soubor, rozdeli na slova a prida do BVS
*@param text otevreny vstupni soubor
*@return zpracovany text v BVS
*/
public Strom zpracujText(BufferedReader text){
try{
String radka, slovo;
int a=0;
int b=0;
Strom textStrom=new Strom();
String[] slova;
while((radka=text.readLine())!=null){
radka=radka.toLowerCase();
slova = radka.split(platneZnakySlova);
for (int i = 0; i < slova.length; i++) {
slova[i] = slova[i].trim().toLowerCase();
if (slova[i].length() != 0)
{
textStrom.pridejPrvek(new Prvek(slova[i]));
}
}
}
return textStrom;
}
catch (Exception e) {
System.out.println("Chyba ve vstupnim souboru!!!");
e.printStackTrace();
}
return null;
}
/**
*metoda pro vypis prvku abecedne s cetnosti,
*vypisuje do HTML
*/
public void SeraditAbecedne(){
try{
pw = new PrintWriter(new BufferedWriter(new FileWriter("out_"+soubor+".html")));
pw.println("
" + soubor + "etnost | Slovo |
");
inOrder(strom.koren);
pw.println("
");
pw.close();
}
catch(IOException e){
}
return;
}
/**
*metoda pro prohledavani BVS - inOrder
*vypisuje do HTML (podle abecedy)
*@param pointer prvek od ktereho zacne prohledavani
*/
public void inOrder(Prvek pointer) {
if (pointer == null){
return;
}
inOrder(pointer.vlevo);
pismeno=pointer.hodnota.charAt(0);
pw.println("" + pointer.cetnost + " | " + pointer.hodnota + " |
");
inOrder(pointer.vpravo);
}
/**
*metoda pro vypis prvku podle cetnosti,
* prevadi prvky z BVS do Hash tabulky
*vypisuje do HTML
*/
public void SeraditCetnost(){
inOrderCetMax(strom.koren);
cetnost = new PrvekCetnost[maxCetnost];
inOrderCetnost(strom.koren);
try{
pw = new PrintWriter(new BufferedWriter(new FileWriter("out_Cetnost_"+soubor+".html")));
pw.println("" + soubor + "etnost | Slovo |
");
for (int i=maxCetnost-1; i>=0; i--){
if (cetnost[i]!=null){
nynejsi=cetnost[i];
while (nynejsi!=null){
pw.println("" + nynejsi.prvek.cetnost + " | " + nynejsi.prvek.hodnota + " |
");
nynejsi=nynejsi.dalsi;
}
}
}
pw.println("
");
pw.close();
}
catch(IOException e){
}
return;
}
/**
*metoda pro prohledavani BVS - inOrder
*zjistuje nejvetsi cetnost
*@param pointer prvek od ktereho zacne prohledavani
*/
public void inOrderCetMax(Prvek pointer) {
if (pointer == null){
return;
}
inOrderCetMax(pointer.vlevo);
if (maxCetnost