X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fstorage%2Fstore%2FObjectStore.java;h=311c3a9c96ce01f925ca7ffd4dc5f4f23fcf4cc0;hb=cf845a4d2c15935c02fc6c19db571be2502e28af;hp=0bf8dbd2961203b77e184b62eb6521807b313aa8;hpb=c6a2204d8d75293256fd17c07e54971d7672359a;p=mir.git diff --git a/source/mir/storage/store/ObjectStore.java b/source/mir/storage/store/ObjectStore.java index 0bf8dbd2..311c3a9c 100755 --- a/source/mir/storage/store/ObjectStore.java +++ b/source/mir/storage/store/ObjectStore.java @@ -31,17 +31,22 @@ package mir.storage.store; */ import java.util.*; +import javax.servlet.http.*; +import javax.servlet.*; import mir.misc.Logfile; public class ObjectStore { private final static ObjectStore INSTANCE=new ObjectStore(); private final static HashMap containerMap=new HashMap(); // StoreContainerType/StoreContainer - private final static Class storableObjectInterface=StorableObject.class; private static Logfile storeLog; private static long storeHit=0,storeMiss=0; + private ResourceBundle ostoreConf; private ObjectStore() { + ostoreConf = ResourceBundle.getBundle("objectstore"); + if ( ostoreConf == null ) + System.err.println("FATAL: could not find objectstore.properties"); } public static ObjectStore getInstance() { return INSTANCE; } @@ -60,8 +65,10 @@ public class ObjectStore { StoreContainer stoc = getStoreContainerForSid( sid ); if (stoc!=null) storeObject=stoc.use(sid); else System.out.println("Warning: container not found for: " + sid.toString()); - if (storeObject!=null) storeHit++; - return storeObject; + if (storeObject!=null) { + storeHit++; + return storeObject; + } } storeMiss++; return null; @@ -87,37 +94,6 @@ public class ObjectStore { } /** - * Method: toString() - * Description: Displays statistical information about the ObjectStore. - * Further information is gathered from all @see StoreContainer - * - * @return String - */ - public String toString() { - - float hitRatio=0; - long divisor=storeHit+storeMiss; - if (divisor>0) hitRatio=(float)storeHit/(float)divisor; - hitRatio*=100; - - StringBuffer sb = new StringBuffer("Mir-ObjectStore v_"); - sb.append(version()).append("\n"); - sb.append("ObjectStore overall hits/misses/ratio: ").append(storeHit); - sb.append("/").append(storeMiss).append("/").append(hitRatio); - sb.append("%\nCurrently ").append(containerMap.size()); - sb.append(" StoreContainer in use - listing information:\n"); - - // ask container for information - StoreContainer currentStoc; - for(Iterator it=containerMap.keySet().iterator();it.hasNext();) { - currentStoc=(StoreContainer)containerMap.get(it.next()); - sb.append(currentStoc.toString()); - } - - return sb.toString(); - } - - /** * Method: invalidate(StorableObject sto) * Description: ObjectStore is notified of change of a @see StorableObject * sto and invalidates all relevant cache entries. @@ -170,37 +146,73 @@ public class ObjectStore { return null; } + private boolean has(StoreIdentifier sid) { + StoreContainer stoc = getStoreContainerForSid( sid ); + return ( stoc != null && stoc.has(sid) ) ? true:false; + } + + public String getConfProperty(String name) { + if (name!=null ) { + String returnValue=""; + try { + return ostoreConf.getString(name); + } + catch (MissingResourceException e) { + System.err.println("ObjectStore: " + e.toString()); + } + } + return null; + } + /** - * Method: implementsStorableObject - * Description: internall helper method to find out if a class implements - * interface StorableObject. + * Method: toString() + * Description: Displays statistical information about the ObjectStore. + * Further information is gathered from all @see StoreContainer * - * @return true if yes, otherwise no. + * @return String */ - private final static boolean implementsStorableObject(Class aClass) { - if (aClass!=null) { - Class[] interfaces = aClass.getInterfaces(); - if (interfaces.length>0) { - for (int i=0;i0) hitRatio=(float)storeHit/(float)divisor; + hitRatio*=100; - private boolean has(StoreIdentifier sid) { - StoreContainer stoc = getStoreContainerForSid( sid ); - return ( stoc != null && stoc.has(sid) ) ? true:false; + StringBuffer sb = new StringBuffer("Mir-ObjectStore "); + sb.append( ((req!=null) ? html_version():version()) ).append("\n"); + sb.append("ObjectStore overall hits/misses/ratio: ").append(storeHit); + sb.append("/").append(storeMiss).append("/").append(hitRatio); + sb.append("%\nCurrently ").append(containerMap.size()); + sb.append(" StoreContainer in use - listing information:\n"); + + // ask container for information + StoreContainer currentStoc; + for(Iterator it=containerMap.keySet().iterator();it.hasNext();) { + currentStoc=(StoreContainer)containerMap.get(it.next()); + sb.append(currentStoc.toHtml(req)); + } + + return sb.toString(); } + /** + * Method: html_version() + * Description: returns ObjectStore version as String for HTML representation + * + * @return String + */ + private String html_version() { return ""+version()+""; } + /** * Method: version() * Description: returns ObjectStore version as String * * @return String */ - private String version() { return "00.d5";} + private String version() { return "v_sstart3__1.0"; } + } \ No newline at end of file