import java.io.*;

public class Inregistrare {
  private String name = "";
  private String address = "";
  private String phone = "";

  Inregistrare(String nme, String addr, String ph) {
    name = nme;  
    address = addr; 
    phone = ph; 
  }

  public String getName() {
    return name; 
  } 

  public String getAddress() {
    return address; 
  }

  public String getPhone() {
    return phone; 
  }

  public String toString() {
    return name + " @ " + address + " Ph: " + phone; 
  }

  public void saveData(PrintWriter out) { 
    out.println("---- Inregistrare: ----");
    out.println(name);
    out.println(address);  
    out.println(phone); 
  }

  public static Inregistrare retrieveDataItem(BufferedReader br) {
    String nme;
    String addr;
    String ph; 
  
    try { 
      nme = br.readLine(); 
    }
    catch (IOException e) {
      System.out.println("Citirea numelui a esuat."); 
      return null; 
    }
    try { 
      addr = br.readLine(); 
    }
    catch (IOException e) {
      System.out.println("Citirea adresei a esuat."); 
      return null; 
    } 
    try { 
      ph = br.readLine(); 
    }
    catch (IOException e) {
      System.out.println("Citirea numarului de telefon a esuat."); 
      return null; 
    }
     
    System.out.println("Inregistrare: " + nme + addr + ph); 

    if (nme != null && addr != null && ph != null) {
      return new Inregistrare(nme,addr,ph); 
    } 
    else {
      System.out.println("Anumite date au fost vide"); 
      return null; 
    } 
  }

  public boolean matches(String nme, String addr, String ph) {
    boolean res = false;
    res = matchString(name,nme) && 
          matchString(address,addr) &&
          matchString(phone,ph);
    return res;
  }

  private static boolean matchString(String v, String v1) {
    String searchfor;
    if (v1.equals("*"))  { return true; }
    if (v1.length() == 0)  { return v.equals(""); } 
    if (v1.charAt(0) == '*') {
      if (v1.charAt(v1.length() - 1) == '*') {
        searchfor = v1.substring(1,v1.length() - 1);
        int found = v.indexOf(searchfor); 
        return (found != -1);
      }
      else {
        return v.endsWith(v1.substring(1)); 
      }
    }
    else {
      if (v1.charAt(v1.length() - 1) == '*') {
        searchfor = v1.substring(0,v1.length() - 1); 
        return v.startsWith(searchfor); 
      }
      else { 
        return v.equals(v1); 
      }
    }
  }

  public static void main(String[] args) {
    System.out.println(Inregistrare.matchString("test1","*"));
    System.out.println(Inregistrare.matchString("test2","*es*"));
    System.out.println(Inregistrare.matchString("test3","*se*"));
    System.out.println(Inregistrare.matchString("test4","*st4"));
    System.out.println(Inregistrare.matchString("test5","*xxc"));
    System.out.println(Inregistrare.matchString("test6","t*"));
    System.out.println(Inregistrare.matchString("test7","1*"));
    System.out.println(Inregistrare.matchString("test8","test8"));
    System.out.println(Inregistrare.matchString("test9","test8"));  
  }
} 



