-1

trying to write a java class named Algebra that will have static methods representing the relational algebra and one additional method which displays the contents of a tilde table and works with any tilde table. table will have the following attributes and limitations:

-at most 12 columns

-first row represents column names

-all columns are strings

-column values and column names are limited to 16 characters

But cannot load all the rows into an array or other collection. All methods except for the display method return a string indicating success or an error message and for every successful operation a new tilde table is produced on disk. So I need to write the method to show the table, the project operation, the join operation, the restrict operation (restriction condition can be limited to a single condition (so no ANDs and ORs) and comparitors can be limited to these six: =, >, <, >=, <=, !=).

So the main body of a driver program might look like this:

//restrict the cars table to toyotas producing a table named toyotas

Algebra.Restrict("cars","MAKE='Toyota'","toyotas");

//project just three columns from the toyotas table producing a table named answer

Algebra.Project("Toyotas","Make,Model,Price","answer");

//display the contents of the answer table

Algebra.Display("answer");

output would be:

MAKE MODEL PRICE

---------------- ---------------- ----------------

Toyota Camry 18000

Toyota Tacoma 19000

Toyota Highlander 35000

cars.txt file containing the tilde table

MAKE~MODEL~TYPE~PRICE

Toyota~Camry~Sedan~18000

Toyota~Tacoma~Truck~19000

Ford~Mustang~Sport~21000

Chevrolet~Corvette~Sport~48000

Ford~F150~Truck~25000

Toyota~Highlander~SUV~35000

What I have so far

import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;
 import javax.swing.JTable;
import javax.swing.table.DefaultTableModel; 


public class Algebra {
    public void readData() throws FileNotFoundException, IOException{


    BufferedReader in = new BufferedReader(new FileReader
        ("cars.txt"));

    String line;
    while((line = in.readLine()) !=null){
        System.out.println(line);

    }

    in.close();


    }
    /*Method used to restrict data--Using WHERE clause*/
    public void Restrict(){

    }
    /*Method used to project data--Using SELECT clause*/
    public void Project(){

    }
    /*Method used to join the data--Using JOIN clause*/
    public void Join(){

    }
    /*Display results from combination of previous methods*/
    public void Display(){

    }
}

1 Answers1

0

If the only requirement is to print file line-by-line, the existing readData() method is sufficient, assuming that the correct file path is supplied to the FileReader object created.

If, in addition, each line has to be split in 4 fields, using ~ as the separator, the following statement (inside the while loop) produces an array of 4 fields per line:

String[] fields = line.split("~");

Spaces at the start or end of the line, or around the ~ separator, can be removed via the String trim() method. For the separator, they can also be removed by enhancing the regular expression in the split() method to split("\\s*~\\s*").

PNS
  • 19,295
  • 32
  • 96
  • 143