view src/org/dancres/blitz/txn/StoragePersonalityFactory.java @ 35:6f68e94c1fb8 default tip

Add CondensedStats monitoring utility, equivalent to vmstat
author Dominic Cleal <dominic-cleal@cdo2.com>
date Thu, 05 Aug 2010 11:07:25 +0100
parents 3dc0c5604566
children
line wrap: on
line source

package org.dancres.blitz.txn;

import java.io.File;

import net.jini.config.ConfigurationException;

import org.dancres.blitz.config.StorageModel;
import org.dancres.blitz.config.Persistent;
import org.dancres.blitz.config.TimeBarrierPersistent;
import org.dancres.blitz.config.Transient;
import org.dancres.blitz.config.ConfigurationFactory;

/**
   @see org.dancres.blitz.txn.StoragePersonality
 */
public class StoragePersonalityFactory {

    private static StorageModel STORAGE_MODEL;

    private static StoragePersonality STORAGE_PERSONALITY;

    static {
        try {
            STORAGE_MODEL =
                ((StorageModel)
                 ConfigurationFactory.getEntry("storageModel",
                                               StorageModel.class));
            
            String myLogDir = (String)
                ConfigurationFactory.getEntry("logDir", String.class);

            new File(myLogDir).mkdirs();

            if (STORAGE_MODEL instanceof Persistent) {
                STORAGE_PERSONALITY = 
                    new PersistentPersonality((Persistent) STORAGE_MODEL,
                                              myLogDir);
            } else if (STORAGE_MODEL instanceof Transient) {
                STORAGE_PERSONALITY = new TransientPersonality(myLogDir);
            } else if (STORAGE_MODEL instanceof TimeBarrierPersistent) {
                STORAGE_PERSONALITY =
                    new TimeBarrierPersonality((TimeBarrierPersistent) STORAGE_MODEL, myLogDir);
            } else {
                throw new Error("Unrecognised storage personality, fatal: " + STORAGE_MODEL);
            }

        } catch (ConfigurationException aCE) {
            throw new Error("Problem loading configuration", aCE);
        }
    }

    public static StoragePersonality getPersonality() {
        return STORAGE_PERSONALITY;
    }
}