*** empty log message ***
[IRC.git] / Robust / Transactions / TransactionalIO / src / TransactionalIO / core / TransactionalFileWrapperFactory.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package TransactionalIO.core;
6
7 import java.io.File;
8 import java.util.HashMap;
9
10 /**
11  *
12  * @author navid
13  */
14 public class TransactionalFileWrapperFactory {
15
16
17
18     private TransactionalFileWrapperFactory() {
19     }
20   //  private static HashMap<INode, Adapter> filemappings;
21     public static HashMap filemappings = new HashMap();
22     
23     private static native long getINodeNative(String filename);
24     
25    // static{
26         //System.load("/home/navid/libnav.so");
27        // System.load("/home/navid/libkooni.so");
28   //  }
29     
30     static INode getINodefromFileName(String filename) {
31         return new INode(getINodeNative(filename), filename);
32     }
33
34     
35     
36     public synchronized static GlobalINodeState getTateransactionalFileINodeState(INode inode) {
37             
38         return (GlobalINodeState)filemappings.get(inode.getNumber());
39             
40     }
41     public synchronized static GlobalINodeState createTransactionalFile(INode inode, String filename, String mode) {
42
43         long inodenumber = inode.getNumber();
44         if (inodenumber != -1)
45             
46             if (filemappings.containsKey(inode.getNumber())) {
47              //   System.out.println("here");
48                 return (GlobalINodeState)filemappings.get(inode.getNumber());
49
50             } else {
51                 
52             
53                 long length = new File(filename).length();
54                 
55                 GlobalINodeState inodestate = new GlobalINodeState(inode, length);
56                 filemappings.put(inode.getNumber(), inodestate);
57                 return inodestate;
58             }
59         
60         else
61         {       
62             return null;
63         }
64
65     }
66         
67 }