All pastes #258410 Raw Edit

Someone

public text v1 · immutable
#258410 ·published 2006-11-26 14:11 UTC
rendered paste body
/*
 * Operator.java
 *
 * Created on 22. November 2006, 19:49
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package javaapplication5;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author kj09
 */
public class Operator { //Extrahiert die gewünschten Informationen aus dem Sourcecode.
    
    
    
    /** Creates a new instance of Operator */
    public Operator(String source, Workpool pool, Storage stor, int id) throws IOException {
        System.out.println("Analyzing...");
         List <String> data = Collections.synchronizedList(new ArrayList<String>());
         List <String> findata = Collections.synchronizedList(new ArrayList<String>());
         
       String result = dobetween("<strong>Amtliche Bezeichnung</strong></td>    <td width=\"73%\">&nbsp;", "</td>", source);
       if(result == ""){  System.out.println("Not found."); } else { System.out.println("Schoolname extracted: "+result); data.add(result);}
       
       
       
       
       
       String result2 = dobetween("<strong>Stra&szlig;e</strong></td>    <td width=\"73%\">&nbsp;", "</td>", source);
       if(result2 == ""){  System.out.println("Not found."); } else { System.out.println("Street extracted: "+result2); data.add(result2);}
       
       
       
       
       String result3 = dobetween("<strong>Plz Ort</strong></td>    <td width=\"73%\">&nbsp;", "</td>", source);
       if(result3 == ""){  System.out.println("Not found."); } else { System.out.println("Location extracted: "+result3); data.add(result3);}
       
       
       
       String result4 = dobetween("<strong>Telefon</strong></td>    <td width=\"73%\">&nbsp;", "</td>", source);
       if(result4 == ""){  System.out.println("Not found."); } else { System.out.println("Telephone extracted: "+result4); data.add(result4);}
       
       
       
       String result5 = dobetween("<strong>Fax</strong></td>    <td width=\"73%\">&nbsp;", "</td>", source);
       if(result5 == ""){  System.out.println("Not found."); } else { System.out.println("Fax extracted: "+result5);  data.add(result5);}
      
       
       
       String result6 = dobetween("<strong>E-Mail-Adresse</strong></td>    <td width=\"73%\">&nbsp;<a href=mailto:", ">", source);
       if(result6 == ""){  System.out.println("Not found."); } else { System.out.println("E-Mail extracted: "+result6); data.add(result6);}
       
       
       
      
       ////////////ID-VERGABE!////////////////////////
       //Link zur Schul-Homepage.
       String result8 = dobetween("<strong>Internet</strong></td>    <td width=\"73%\">&nbsp;<a href=", ">", source);
       if(result8 == ""){  System.out.println("Homepage not found."); } else { System.out.println("Homepage extracted: "+result8);   
       URLentry result8p = new URLentry(result8, stor.lastrowID() );
       pool.add(result8p);}
       ///////////////////////////////////////////////
       
     
       
       ///////////////////////////////////////////////
       //Falls dies eine Schul-Homepage ist, dann werden wir mal einen Blick in das Impressum werfen.
       //Link vom Impressum extrahieren:
       String result9 = doRegex("<a(.*)href=\"(.*)\"(.*)>(.*)Impressum(.*)</a>", source, 2, true);
       if(result9 == ""){ System.out.println("Impressum not found."); } else { System.out.println("Impressum-Link extracted: "+result9);    
       URLentry result9p = new URLentry(result9, id );
       pool.add(result9p); }
       //////////////////////////////////////////////
       
       
       
       //Link von der Kontaktseite extrahieren:
       String result10 = doRegex("<a(.*)href=\"(.*)\"(.*)>(.*)Kontakt(.*)</a>", source, 2, true);
       if(result10 == ""){ } else { System.out.println("Kontakt-Link extracted: "+result10);    
       URLentry result10p = new URLentry(result10, id );
       pool.add(result10p); }
       ////////////
       
       
      /*
       ////////////
       //Falls dies die Impressum oder Kontakt-Site ist:
       //Rektor / in .. aus der Seite extrahieren:
       String result11 = doRegex("<a(.*)href=\"(.*?)\"(.*)>(.*?)Kontakt(.*?)</a>", source, 2, true);
       if(result11 == ""){ } else { System.out.println("Rektor extracted: "+result11);    
       
       findata.add(result11);
       }
       ////////////
       */
       //Überführe die Informationen (NICHT die Links für den Pool) in die Storage:
       String[] dataarr = data.toArray(new String[0]);
       String[] findataarr = findata.toArray(new String[0]);
       if(dataarr.length > 0){
       stor.add(dataarr);
       }
       //Falls diese Daten zu einem schon existierenden Datensatz hinzugefügt werden sollen.
       if(findataarr.length > 0){
       stor.add(findataarr, id);
       }
       
       System.out.println("Analyses done.");
    }
    
    private String dobetween(String begin, String end, String source){
        //First of all we will create a single-line-doc:
        
        source = source.replace("\n", "");
        source = source.replace("\r\n", "");
        
        Pattern p = null;
        Matcher m = null;
        String result = "";
        try {
          p = Pattern.compile(begin+"(.*?)"+end);
        m = p.matcher(source);
        }catch(IllegalStateException ex){
           result = "";
           
        }
          if(m.find()){   result = m.group(1);   
          return(transformHTML(result)); } else { return(""); }
        
        
    }
    
    private String doRegex(String Regex, String source, int group, boolean ignoreCase){
    //First of all we will create a single-line-doc:
        source = source.replace("\n", "");
        source = source.replace("\r\n", "");
        
        Pattern p = null;
        Matcher m = null;
        String result = "";
        try {
            if(ignoreCase){
          p = Pattern.compile(Regex, p.CASE_INSENSITIVE);
          System.out.println("Ignoring case");
            } else { p = Pattern.compile(Regex);  }
          m = p.matcher(source);
          m.find();
          result = m.group(group);   
          return(transformHTML(result)); 
        }catch(IllegalStateException ex){
            ex.printStackTrace();
           result = "";
        }
        return(result);
    }
        
        
        
    
       private String transformHTML(String input){
       input=input.replace("&auml;", "ä");
       input=input.replace("&ouml;", "ö");
       input=input.replace("&uuml;", "ü");
       input=input.replace("&Auml;", "Ä");
       input=input.replace("&Ouml;", "Ö");
       input=input.replace("&Uuml;", "Ü");
       input=input.replace("&szlig;", "ß");
       return(input);
        }
        
}