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); } }