1 24 package org.objectweb.jalisto.se.impl.factory; 25 26 import org.objectweb.jalisto.se.api.JalistoProperties; 27 import org.objectweb.jalisto.se.api.Session; 28 import org.objectweb.jalisto.se.api.internal.InternalFactory; 29 import org.objectweb.jalisto.se.api.internal.OidTable; 30 import org.objectweb.jalisto.se.api.internal.InternalPhysicalFileAccess; 31 import org.objectweb.jalisto.se.exception.JalistoException; 32 import org.objectweb.jalisto.se.impl.readonly.OidTableReadOnlyImpl; 33 import org.objectweb.jalisto.se.impl.readonly.InternalPhysicalFileAccessReadOnlyImpl; 34 import org.objectweb.jalisto.se.impl.readonly.SessionReadOnlyImpl; 35 36 public class InternalReadOnlyFactory extends InternalFactoryImpl { 37 38 private static InternalFactory instance; 39 40 public static InternalFactory getInstance() { 41 if (instance == null) { 42 instance = new InternalReadOnlyFactory(); 43 instance.init(); 44 } 45 return instance; 46 } 47 48 public void setSelfInstance() { 49 if (InternalReadOnlyFactory.instance == null) { 50 InternalReadOnlyFactory.instance = this; 51 } 52 } 53 54 public synchronized Session getSession(JalistoProperties properties) { 55 if (!properties.isReadOnlyImplementation()) { 56 throw new JalistoException("try to get a none read only session with Jalisto's read only jar version"); 57 } 58 return new SessionReadOnlyImpl(properties); 59 } 60 61 public synchronized OidTable getOidTable(JalistoProperties properties) { 62 String path = properties.getDbFileFullName(); 63 if (!oidTables.containsKey(path)) { 64 InternalPhysicalFileAccess physicalAccess = getInternalPhysicalAccess(properties); 65 oidTables.put(path, OidTableReadOnlyImpl.getAnOidTable(physicalAccess, properties)); 66 } 67 return (OidTable) oidTables.get(path); 68 } 69 70 public synchronized InternalPhysicalFileAccess getInternalPhysicalAccess(JalistoProperties properties) { 71 String path = properties.getDbFileFullName(); 72 if (!physicals.containsKey(path)) { 73 physicals.put(path, new InternalPhysicalFileAccessReadOnlyImpl(properties)); 74 } 75 return (InternalPhysicalFileAccess) physicals.get(path); 76 } 77 78 } 79 | Popular Tags |