/* * Copyright (c) 2018. Developed by Hedgecode. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.hedgecode.chess.environment; import java.util.Locale; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.hedgecode.chess.persistence.PersistenceUtils; /** * Environment execution context. * * @author Dmitry Samoshin aka gotty */ public final class Environment { private final Locale locale; private final EntityManager entityManager; public Environment( Locale locale, EntityManager entityManager) { this.locale = locale; this.entityManager = entityManager; } public Locale getLocale() { return locale; } public EntityManager getEntityManager() { return entityManager; } public static Environment init() { EntityManagerFactory entityManagerFactory = PersistenceUtils.createEntityManagerFactory(); EnvironmentSetter.setCurrentContext( new Environment( Locale.getDefault(), entityManagerFactory.createEntityManager() ) ); return Environment.currentContext(); } static final ThreadLocal contextHolder = new ThreadLocal<>(); public static Environment currentContext() { return contextHolder.get(); } }