All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zoodb.jdo.PersistenceManagerFactoryImpl Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2009-2013 Tilmann Zaeschke. All rights reserved.
 * 
 * This file is part of ZooDB.
 * 
 * ZooDB is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * ZooDB is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with ZooDB.  If not, see .
 * 
 * See the README and COPYING files for further information. 
 */
package org.zoodb.jdo;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import javax.jdo.FetchGroup;
import javax.jdo.JDOUserException;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.datastore.DataStoreCache;
import javax.jdo.listener.InstanceLifecycleListener;
import javax.jdo.metadata.JDOMetadata;
import javax.jdo.metadata.TypeMetadata;
import javax.jdo.spi.JDOImplHelper;
import javax.jdo.spi.StateInterrogation;

import org.zoodb.api.impl.ZooPCImpl;
import org.zoodb.jdo.spi.ZooStateInterrogator;

/**
 * This class simulates the JDO PersistenceManagerFactory
 *
 * @author Tilmann Zaeschke
 */
public class PersistenceManagerFactoryImpl 
        extends AbstractPersistenceManagerFactory {

	private static final long serialVersionUID = 1L;
	private Set pms = new HashSet();
	private boolean isClosed = false;
	private String name;
	private boolean isReadOnly = false;
	private static final StateInterrogation SI = new ZooStateInterrogator();
	
	private HashMap>> lcListeners = 
			new HashMap>>(); 
	
    /**
     * @param props NOT SUPPORTED!
     */
    public PersistenceManagerFactoryImpl(Properties props) {
        super(props);
        JDOImplHelper.getInstance().addStateInterrogation(SI);
    }

    /**
     * Not in standard, but required in Poleposition Benchmark / JDO 1.0.2
     * @param props
     * @return new PersistenceManagerFactory
     */
    public static PersistenceManagerFactory getPersistenceManagerFactory (Properties
    		props) {
    	return new PersistenceManagerFactoryImpl(props);
    }
    public static PersistenceManagerFactory getPersistenceManagerFactory (Map
    		props) {
    	return new PersistenceManagerFactoryImpl((Properties) props);
    }
	public static PersistenceManagerFactory getPersistenceManagerFactory (Map
    		overrides, Map props) {
		System.err.println("STUB PersistenceManagerFactoryImpl." +
				"getPersistenceManagerFactory(o, p)");
    	return new PersistenceManagerFactoryImpl((Properties) props);
	}

    
    /**
     * @see PersistenceManagerFactory#getPersistenceManager()
     */
	@Override
    public PersistenceManager getPersistenceManager() {
    	checkOpen();
    	if (!pms.isEmpty()) {
    		//TODO
    		System.err.println("WARNING Multiple PM per factory are not supported.");
    	    //throw new UnsupportedOperationException("Multiple PM per factory are not supported.");
    	}
        PersistenceManagerImpl pm = new PersistenceManagerImpl(this, getConnectionPassword());
        pms.add(pm);
        setFrozen();
        
        //init
        for (Map.Entry>> e: lcListeners.entrySet()) {
        	for (Class c: e.getValue()) {
        		pm.addInstanceLifecycleListener(e.getKey(), c);
        	}
        }
        
        return pm;
    }
    
    /**
     * @see PersistenceManagerFactory#getProperties()
     */
	@Override
    public Properties getProperties() {
        //return null;
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
    }
    
	@Override
    public Object clone() {
        PersistenceManagerFactoryImpl pmf = 
            (PersistenceManagerFactoryImpl) super.clone();
        pmf.pms = new HashSet(); //do not clone _pm!
        return pmf;
    }

	@Override
	public void addFetchGroups(FetchGroup... arg0) {
		checkOpen(); //? TZ
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@SuppressWarnings("rawtypes")
	@Override
	public void addInstanceLifecycleListener(InstanceLifecycleListener arg0, Class[] arg1) {
		checkFrozen();
		List> clsL = lcListeners.get(arg0);
		if (clsL == null) {
			clsL = new LinkedList>();
			lcListeners.put(arg0, clsL);
		}
		if (arg1 != null) {
			for (Class c: arg1) {
				clsL.add(c);
			}
		} else {
			clsL.add(ZooPCImpl.class);
		}
	}

	@Override
	public void close() {
		for (PersistenceManagerImpl pm: pms) {
			if (!pm.isClosed()) {
				throw new JDOUserException("Found open PersistenceManager. ", 
						new JDOUserException(), pm);
			}
		}
        JDOImplHelper.getInstance().removeStateInterrogation(SI);
		isClosed = true;
	}

	@Override
	public String getConnectionDriverName() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public Object getConnectionFactory() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public Object getConnectionFactory2() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getConnectionFactory2Name() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getConnectionFactoryName() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public boolean getCopyOnAttach() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public DataStoreCache getDataStoreCache() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public boolean getDetachAllOnCommit() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@SuppressWarnings("rawtypes")
	@Override
	public FetchGroup getFetchGroup(Class arg0, String arg1) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@SuppressWarnings("rawtypes")
	@Override
	public Set getFetchGroups() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getMapping() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getName() {
		return name;
	}

	@Override
	public boolean getNontransactionalWrite() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public PersistenceManager getPersistenceManager(String arg0,
			String arg1) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public PersistenceManager getPersistenceManagerProxy() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getPersistenceUnitName() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public boolean getReadOnly() {
		return isReadOnly;
	}

	@Override
	public boolean getRestoreValues() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getServerTimeZoneID() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getTransactionIsolationLevel() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public String getTransactionType() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public boolean isClosed() {
		return isClosed;
	}

	@Override
	public void removeAllFetchGroups() {
		checkOpen(); //? TZ
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void removeFetchGroups(FetchGroup... arg0) {
		checkOpen(); //? TZ
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void removeInstanceLifecycleListener(InstanceLifecycleListener arg0) {
		checkFrozen();
		lcListeners.remove(arg0);
	}

	@Override
	public void setConnectionDriverName(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setConnectionFactory(Object arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setConnectionFactory2(Object arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setConnectionFactory2Name(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setConnectionFactoryName(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setCopyOnAttach(boolean arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setDetachAllOnCommit(boolean arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setMapping(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setName(String arg0) {
		checkOpen();
		name = arg0;
	}

	@Override
	public void setNontransactionalRead(boolean arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setNontransactionalWrite(boolean arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setPersistenceUnitName(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setReadOnly(boolean arg0) {
		checkOpen();
		isReadOnly = arg0;	
	}

	@Override
	public void setRestoreValues(boolean arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setServerTimeZoneID(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setTransactionIsolationLevel(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public void setTransactionType(String arg0) {
		checkOpen();
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}

	@Override
	public Collection supportedOptions() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
	}
	
	private void checkOpen() {
		if (isClosed) {
			throw new JDOUserException("The Factory is already closed.");
		}
	}

	void deRegister(PersistenceManagerImpl persistenceManagerImpl) {
		pms.remove(persistenceManagerImpl);
	}

	@Override
	public Integer getDatastoreReadTimeoutMillis() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//return null;
	}

	@Override
	public Integer getDatastoreWriteTimeoutMillis() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//return null;
	}

	@Override
	public TypeMetadata getMetadata(String arg0) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//return null;
	}

	@Override
	public JDOMetadata newMetadata() {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//return null;
	}

	@Override
	public void registerMetadata(JDOMetadata arg0) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//
	}

	@Override
	public void setDatastoreReadTimeoutMillis(Integer arg0) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//
	}

	@Override
	public void setDatastoreWriteTimeoutMillis(Integer arg0) {
		// TODO Auto-generated method stub
		throw new UnsupportedOperationException();
		//
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy