/*
* Hason.java
* file-ok :SorOlvasó-val történő összehasonlító rutinjai
* by pts@fazekas.hu at Fri Mar 30 21:02:36 CEST 2001
* további doksi: a README-ben és e file legkülső class-ának fejkommentjében
*
* Kincskereső Kisgömböc (C) Early May 2001 by eNTitánok (Rév Szilvia,
* Szabó Péter <pts@inf.bme.hu>, Szurdi Miklós, Weizengruber Attila).
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package eNTitanok.util;
import java.io.FileInputStream;
import java.io.IOException;
// import eNTitanok.util.SorOlvaso;
/**
* File-ok :SorOlvasó-val történő összehasonlító rutinjai.
* @see eNTitanok.util.SorOlvaso
*/
public class Hason {
/**
* A megadott két file-t :SorOlvasó-val olvasva hasonlítja össze
* @return pontosan akkor igaz, ha megegyeznek
* @see eNTitanok.util.SorOlvaso
* @see eNTitanok.util.Hason#hasonlit_mester
* @see eNTitanok.util.Hason#hasonlit_prefix
*/
public static boolean hasonlit(String nev1, String nev2) throws IOException {
// Imp: sorszám/karakterpozíció visszadása
SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1));
SorOlvaso s2=new SorOlvaso(new FileInputStream(nev2));
String sor1, sor2;
while (true) {
sor1=s1.readLine(); sor2=s2.readLine();
if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; }
if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; }
if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; }
}
}
/**
* A megadott két file-t :SorOlvasó-val olvasva hasonlítja össze, de az első
* file-nak csak a prefix-szel kezdődő sorait veszi figyelembe, levágva
* belőlük prefix-et.
* @return pontosan akkor igaz, ha a file-ok megegyeznek
* @see eNTitanok.util.SorOlvaso
* @see eNTitanok.util.Hason#hasonlit
*/
public static boolean hasonlit_prefix(String nev1, String nev2, String prefix) throws IOException {
// Imp: sorszám/karakterpozíció visszadása
SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1));
SorOlvaso s2=new SorOlvaso(new FileInputStream(nev2));
String sor1, sor2;
while (true) {
while (true) {
sor1=s1.readLine();
if (sor1==null || sor1.startsWith(prefix)) break;
}
sor1=sor1.substring(prefix.length());
sor2=s2.readLine();
if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; }
if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; }
if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; }
}
}
/**
* A megadott file <TT>fn_prefix</TT>-szel kezdődő sorából veszi a másik
* file nevét, amivel a megadott file <TT>sor_prefix</TT>-szel kezdődő sorait
* :SorOlvasó-val olvasva hasonlítja össze. fn_prefix egyszer szerepelhet,
* mégpedig az első sor_prefix előtt.
* @return pontosan akkor igaz, ha a file-ok megegyeznek
* @see eNTitanok.util.SorOlvaso
* @see eNTitanok.util.Hason#hasonlit
* @see eNTitanok.util.Hason#hasonlit_prefix
*/
public static boolean hasonlit_mester(String nev1, String fn_prefix, String sor_prefix) throws IOException {
// Imp: sorszám/karakterpozíció visszadása
SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1));
String sor1, sor2;
while ((sor1=s1.readLine())!=null && !sor1.startsWith(fn_prefix));
// System.out.println(sor1);
if (null==sor1) return false; // Imp: többféle visszatérési kód
SorOlvaso s2=new SorOlvaso(new FileInputStream(sor1.substring(fn_prefix.length())));
while (true) {
while (true) {
sor1=s1.readLine();
if (sor1==null || sor1.startsWith(sor_prefix)) break;
}
if (sor1!=null) sor1=sor1.substring(sor_prefix.length());
sor2=s2.readLine();
// System.out.println("ZZZ"); // DEBUG
// System.out.println(sor1); // DEBUG
// System.out.println(sor2); // DEBUG
if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; }
if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; }
if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; }
} /// WHILE
} /// hasonlit_mester()
} /// class Hason