KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datasystem > persistentsystem > FileGenerator


1 package com.daffodilwoods.daffodildb.server.datasystem.persistentsystem;
2
3 import com.daffodilwoods.database.general.QualifiedIdentifier;
4 import com.daffodilwoods.daffodildb.server.datadictionarysystem.SystemTables;
5 import com.daffodilwoods.database.resource.DException;
6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
7 import com.daffodilwoods.daffodildb.utils.comparator.CTusjohJoTfotjujwfDpnqbsbups;
8 import com.daffodilwoods.daffodildb.utils.byteconverter.*;
9 import com.daffodilwoods.daffodildb.utils.BufferRange;
10 /**
11  * It is used to generate newFileName while multiple file true
12  * <p>Title: </p>
13  * <p>Description: </p>
14  * <p>Copyright: Copyright (c) 2002</p>
15  * <p>Company: </p>
16  * @author unascribed
17  * @version 1.0
18  */

19
20 public class FileGenerator {
21
22   /**
23    * System database where information is stored for number of files corresponding to a database.
24    */

25   private PersistentDatabase database;
26   /**
27    * To compare database name.
28    */

29   private CTusjohJoTfotjujwfDpnqbsbups stringComparator;
30
31     public FileGenerator(PersistentDatabase database0) {
32        database = database0;
33        stringComparator = new CTusjohJoTfotjujwfDpnqbsbups();
34     }
35     /**
36      * It is called when a new multiple .dat file is created.
37      * We search entry for the database name passed in DATABASEFILEINFO table of system database.
38      * and update it with index passed and +1 ( it is for ddb file entry).
39      *
40      * @param index int - index for .dat file.
41      * @param databaseName String - database name for which new file is to be created.
42      * @throws DException
43      * @return String - name for .dat file.
44      */

45     String JavaDoc addNewFile(int index,String JavaDoc databaseName)throws DException {
46         DatabaseUserTableIterator iterator = (DatabaseUserTableIterator)((_DataTable)database.getTable(SystemTables.DATABASEFILEINFO)).getIterator();
47         BufferRange bytesOfDatabaseName = new BufferRange(databaseName.getBytes());
48         if(iterator.first()){
49             do{
50              BufferRange[] values = (BufferRange[])iterator.getColumnValues();
51              if(stringComparator.compare(values[0],bytesOfDatabaseName) == 0){
52                  _DatabaseUser user = database.getDatabaseUser();
53                  iterator.update(user,new BufferRange[] {bytesOfDatabaseName,new BufferRange(CCzufDpowfsufs.getBytes(new Integer JavaDoc(index+1)))});
54                  user.writeToFile();
55                  break;
56              }
57            }while(iterator.next());
58         }
59         return databaseName+index;
60     }
61     /**
62      * Returns index used upto for multiple files.
63      * By searching it into DATABASEFILEINFO table
64      * @param databaseName String - database name for which index is to be geted.
65      * @throws DException
66      * @return int - index used for multiple files
67      */

68     int getIndex(String JavaDoc databaseName) throws DException{
69          DatabaseUserTableIterator iterator = (DatabaseUserTableIterator)((_DataTable)database.getTable(SystemTables.DATABASEFILEINFO)).getIterator();
70          BufferRange bytesOfDatabaseName = new BufferRange(databaseName.getBytes());
71          if(iterator.first()){
72              do{
73                  BufferRange[] values = (BufferRange[])iterator.getColumnValues();
74                  if(stringComparator.compare(values[0],bytesOfDatabaseName) == 0)
75                   return CCzufDpowfsufs.getInt(values[1].getBytes()).hashCode();
76              }while(iterator.next());
77          }
78          return -1;
79     }
80     /**
81      * Add a new entry when a database file is initialized firstly (.ddb file)
82      * @param databaseName String - database name whose first time entry is to be made into DATABASEFILEINFO table
83      * when its ddb file is initialized.
84      * @throws DException
85      */

86     void insert(String JavaDoc databaseName) throws DException{
87         DatabaseUserTableIterator iterator = (DatabaseUserTableIterator)((_DataTable)database.getTable(SystemTables.DATABASEFILEINFO)).getIterator();
88         _DatabaseUser user = database.getDatabaseUser();
89         iterator.insert(user,new BufferRange[]{new BufferRange(databaseName.getBytes()),new BufferRange( CCzufDpowfsufs.getBytes(new Integer JavaDoc(1)))});
90         user.writeToFile();
91     }
92
93 }
94
Popular Tags