/*
 * ManorDatabase.java 
 * Nadeem Abdul Hamid - Fall 2004 - CSC120 - Berry College
 *
 * The manor database program representing a list of facts
 *
 * Based on a program developed in "Great Ideas in Computer Science 
 * with Java" by Biermann and Ramm.
 *
 */

import java.io.*;

public class ManorDatabase {

    final static int MAXFACTS = 100;

    Fact[] facts;
    int numfacts;

    public ManorDatabase() {
        facts = new Fact[MAXFACTS];
        numfacts = 0;
    }


    public int numOfFacts() { return numfacts; }


    public void readFacts(BufferedReader inFile) {
        try {
            String line = inFile.readLine();
            while (line != null) {
            facts[numfacts] = new Fact(inFile);
            numfacts++;
            line = inFile.readLine();
            }
        } catch (IOException e) {
            System.out.println("Error reading facts from file.");
            // e.printStackTrace();
        }
    }


    public void inputFact() {
        System.out.println("Enter a new fact (nounA/relation/nounB - one per line): ");
        try {
            BufferedReader kybd 
            = new BufferedReader(new InputStreamReader(System.in));
            facts[numfacts] = new Fact(kybd);
            numfacts++;
        } catch (IOException e) {
            System.out.println("Error in fact input. Fact was not stored.");
            // e.printStackTrace();
        }
    }


    public void printFacts() {
        if (numfacts == 0) {
            System.out.println("NO FACTS AVAILABLE");
        } else {
            System.out.println("ALL AVAILABLE FACTS");
            for (int i = 0; i < numfacts; i++) {
            System.out.println(facts[i]);
            }
        }
    }


    public void saveFacts(PrintWriter outFile) {
        for (int i = 0; i < numfacts; i++) {
            facts[i].printToFile(outFile);
        }
    }

    
    public void searchFacts(Fact query) {
        boolean found = false;
        System.out.println("QUERYING FACTS...");
        for (int i = 0; i < numfacts; i++) {
            if (facts[i].compare(query)) {
            found = true;
            System.out.println(facts[i]);
            }
        }
    
        if (!found) 
            System.out.println("Sorry, no relevant facts found.");
    }
    
}
