package Cases;
import java.io.File;
import java.io.IOException;
import neustore.base.DBIndex;//because we create a object of index.java
import neustore.base.LRUBuffer;//because we create an object of it
import XMLContent.*;
import neustore.base.DiskAddress;
import AttributeIndex.*;
import ElementIndex.*;
import StructureIndex.*;
// This test case emulates inserting a small XML document
/*
The document is:
1
2
Hello, world!
The quick brown fox
*/
public class TestCase5 {
public static void main(String[] args)throws IOException {
// create files
String filenameEI="TEST_EI";
String filenameSI="TEST_SI";
String filenameCI="TEST_CI";
String filenameAI="TEST_AI";
File fileEI= new File(filenameEI);
File fileSI= new File(filenameSI);
File fileCI= new File(filenameCI);
File fileAI= new File(filenameAI);
if(fileEI.delete()|| fileSI.delete()||fileCI.delete()||fileAI.delete())
{
System.out.println("The old file with that name has been deleted");
}
else
{
System.out.println("The file was not found");
}
// create system buffer: 8 pages, 2K each
LRUBuffer buffer= new LRUBuffer(8,2048);
// Create all structures
ElementIndex elements = new ElementIndex(buffer,filenameEI,1);
AttributeIndex atts = new AttributeIndex(buffer,filenameAI,1);
StructureIndex structure = new StructureIndex(buffer, filenameSI,1);
XMLContent content = new XMLContent(buffer, filenameCI, 1);
// Commence insertions
//
int rootIdx = elements.insertElementName("root");
StructureIndexRecord rootRecord = new
StructureIndexRecord(1,rootIdx,1,0,0,1,-1,0, null);
DiskAddress rootAddy = structure.insert(rootRecord);
int flag = elements.nsertElementEntry(rootIdx, rootAddy);
// 1
int aIdx = elements.nsertElementName("a");
DiskAddress aContAddy = content.insertContent("1");
StructureIndexRecord aRecord_1 = new
StructureIndexRecord(2,aIdx,2,3,1,2,1,1, aContAddy);
DiskAddress aAddy_1 = structure.insert(aRecord_1);
flag = elements.insertElementEntry(aIdx, aAddy_1);
// 2
aContAddy = content.insertContent("2");
StructureIndexRecord aRecord_2 = new
StructureIndexRecord(3,aIdx,4,5,2,2,1,1, aContAddy);
DiskAddress aAddy_2 = structure.insert(aRecord_2);
flag = elements.insertElementEntry(aIdx, aAddy_2);
attributes.insertEntry(3,"foo","1");
//
int bIdx = elements.nsertElementName("b");
StructureIndexRecord bRecord = new
StructureIndexRecord(4,bIdx,6,0,3,2,1,0, new DiskAddress(0,0));
DiskAddress bAddy = structure.insert(bRecord);
flag = elements.insertElementEntry(bIdx, bAddy);
attributes.insertEntry(4,"foo","2");
attributes.insertEntry(4,"bar","3");
// Hello, world!
int cIdx = elements.nsertElementName("c");
DiskAddress cContAddy = content.insertContent("Hello, World!");
StructureIndexRecord cRecord_1 = new
StructureIndexRecord(5,cIdx,7,8,1,3,4,1, cContAddy);
DiskAddress cAddy_1 = structure.insert(cRecord_1);
flag = elements.insertElementEntry(cIdx, cAddy_1);
//
StructureIndexRecord cRecord_2 = new
StructureIndexRecord(6,aIdx,9,0,2,3,4,0, new DiskAddress(0,0));
DiskAddress cAddy_2 = structure.insert(cRecord_2);
flag = elements.insertElementEntry(cIdx, cAddy_2);
// the quick brown
int dIdx = elements.nsertElementName("d");
DiskAddress dContAddy = content.insertContent("The quick brown ");
StructureIndexRecord dRecord_1 = new
StructureIndexRecord(7,dIdx,10,11,1,4,6,1, dContAddy);
DiskAddress dAddy_1 = structure.insert(dRecord_1);
flag = elements.insertElementEntry(dIdx, dAddy_1);
// fox
dContAddy = content.insertContent("fox");
StructureIndexRecord dRecord_2 = new
StructureIndexRecord(8,dIdx,12,13,2,4,6,1, dContAddy);
DiskAddress dAddy_2 = structure.insert(dRecord_2);
flag = elements.insertElementEntry(dIdx, dAddy_2);
// Fix postorders
structure.updatePostOrder(6,14);
structure.updatePostOrder(4,15);
structure.updatePostOrder(1,16);
}
}