KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datasystem > persistentsystem > versioninfo > PowerFileFactoryUpto3_2


1 package com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.versioninfo;
2
3 import java.util.*;
4 import java.io.RandomAccessFile JavaDoc;
5 import java.io.File JavaDoc;
6 import com.daffodilwoods.database.resource.DException;
7 public class PowerFileFactoryUpto3_2{
8
9   /**
10    * To mantaine free power files for the database.
11    */

12   protected ArrayList freePowerfileList;
13
14   /**
15    * Path of database.
16    */

17   protected String JavaDoc databaseURL;
18   /**
19    * name it is used as a index for the power files to be created.
20    */

21   protected int name ;
22   /**
23    * List to store all power files created for the database.
24    */

25   protected ArrayList list;
26
27     public PowerFileFactoryUpto3_2(String JavaDoc databaseUrl1){
28         list = new ArrayList();
29         freePowerfileList = new ArrayList();
30         databaseURL = databaseUrl1;
31         name = 0;
32     }
33     /**
34      * It returns power file for the database.
35      * Firstly we try to get from free powerFiles if we doesn't found than we makes a new one
36      * and add int in list.
37      *
38      * @param clusterSize int - cluster size of the database.
39      * @param isReadOnlyMode boolean
40      * @throws DException
41      * @return RandomAccessFile - power file to be returned.
42      */

43
44  public synchronized RandomAccessFile JavaDoc getFile(int clusterSize,boolean isReadOnlyMode)throws DException{
45    if(freePowerfileList.size() > 0){
46           RandomAccessFile JavaDoc raf = (RandomAccessFile JavaDoc)freePowerfileList.remove(freePowerfileList.size()-1);
47           return raf;
48       }
49       try{
50           File JavaDoc ff = new File JavaDoc(databaseURL);
51           File JavaDoc ff1 = ff.getParentFile();
52           String JavaDoc str = ff.getName();
53           str = str.substring(0,str.lastIndexOf("."));
54
55           ff = new File JavaDoc(ff1,str+"_" + name +"_PowerFile.log");
56            RandomAccessFile JavaDoc powerFile = null;
57             powerFile = new RandomAccessFile JavaDoc(ff, "rw");
58             powerFile.setLength(clusterSize * 5);
59           list.add(powerFile);
60           name++;
61           return powerFile;
62       }catch(Exception JavaDoc fnfe) {
63           throw new DException("DSE2025",new Object JavaDoc[] {fnfe.getMessage()});
64       }
65   }
66   /**
67    * While a power file is free than it is added into free list.
68    * @param file RandomAccessFile - file to be added.
69    */

70   public synchronized void addInFreePowerFileList(RandomAccessFile JavaDoc file){
71         freePowerfileList.add(file);
72     }
73     /**
74      * It closes all power files which are created for the database.
75      * @throws DException
76      */

77     public void close()throws DException{
78         try{
79             for (int i = 0; i < list.size(); i++) {
80              ((RandomAccessFile JavaDoc)list.get(i)).close() ;
81             }
82         }
83         catch(Exception JavaDoc fnfe) {
84             throw new DException("DSE2025",new Object JavaDoc[] {fnfe.getMessage()});
85         }
86     }
87 }
88
Popular Tags