Package com.sos.scheduler.engine.kernel.database

Source Code of com.sos.scheduler.engine.kernel.database.DatabaseSubsystem

/********************************************************* begin of preamble
**
** Copyright (C) 2003-2010 Software- und Organisations-Service GmbH.
** All rights reserved.
**
** This file may be used under the terms of either the
**
**   GNU General Public License version 2.0 (GPL)
**
**   as published by the Free Software Foundation
**   http://www.gnu.org/licenses/gpl-2.0.txt and appearing in the file
**   LICENSE.GPL included in the packaging of this file.
**
** or the
** 
**   Agreement for Purchase and Licensing
**
**   as offered by Software- und Organisations-Service GmbH
**   in the respective terms of supply that ship with this file.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
********************************************************** end of preamble*/
package com.sos.scheduler.engine.kernel.database;

import com.sos.scheduler.engine.cplusplus.runtime.annotation.ForCpp;
import com.sos.scheduler.engine.kernel.Subsystem;
import com.sos.scheduler.engine.kernel.VariableSet;
import com.sos.scheduler.engine.kernel.cppproxy.DatabaseC;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


@ForCpp
public class DatabaseSubsystem implements Subsystem {
    public static final String emptyIdinDatabase = "-";
    private static final String persistenceUnitName = "schedulerEngine";

    private EntityManagerFactory entityManagerFactory = null;
    private EntityManager entityManager = null;
    private final DatabaseC cppProxy;
//    private final DatabaseConfiguration config;


    public DatabaseSubsystem(DatabaseC cppProxy) {
        this.cppProxy = cppProxy;
//        this.config = config(getProperties());
    }


//    private static DatabaseConfiguration config(VariableSet p) {
//        return new DatabaseConfiguration(); // Ist noch leer
//        String jdbcDriverClassName = p.getStrictly("jdbc.driver");
//        String url = p.getStrictly("path");
//        String userName = p.getStrictly("userName");
//        String password = p.getStrictly("password");
//        return new DatabaseConfiguration(jdbcDriverClassName, url, userName, password);
//    }
   
   
    public final void close() {
        if (entityManagerFactory != null)
            entityManagerFactory.close();   // Schließt auch EntityManager
//        try {
//            if (connection != null)
//                connection.close();
//        } catch (SQLException x) { throw new SchedulerException(x); }
    }


    public final EntityManager getEntityManager() {
        if (entityManagerFactory == null)
            entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, entityManagerProperties());
        if (entityManager == null)
            entityManager = entityManagerFactory.createEntityManager();
        return entityManager;
    }


    private Map<String,String> entityManagerProperties() {
        Map<String,String> result = new HashMap<String,String>();
        VariableSet p = getProperties();
        result.put("javax.persistence.jdbc.driver", p.getStrictly("jdbc.driverClass"));
        result.put("javax.persistence.jdbc.url", p.getStrictly("path"));
        result.put("javax.persistence.jdbc.user", p.getStrictly("user"));
        result.put("javax.persistence.jdbc.password", p.getStrictly("password"));
        return result;
    }


    /** Liefert auch "password" */
    public final VariableSet getProperties() {
        return cppProxy.properties().getSister();
    }


    public static String idForDatabase(String id) {
        return id.isEmpty()? emptyIdinDatabase : id;
    }

//    public final Connection getConnection() {
//        if (connection != null)  connection = openConnection();
//        return connection;
//    }
//
//
//    private Connection openConnection() {
//        try {
//            return DriverManager.getConnection(config.getUrl(), config.getUserName(), config.getPassword());
//        } catch (SQLException x) { throw new SchedulerException(x); }
//    }

   
//    public final DatabaseConfiguration getConfiguration() {
//        return config;
//    }
}
TOP

Related Classes of com.sos.scheduler.engine.kernel.database.DatabaseSubsystem

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.