--- /dev/null
+/*
+ * 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;
+
+/**
+ *
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public final class EtudeConstants {
+
+ public static final String SERVICE_BUNDLE_FILE = "org.hedgecode.chess.service.LocalStrings";
+
+ public static final String PERSISTENCE_UNIT_NAME = "db-etude-persistence-unit";
+
+ private EtudeConstants() {
+ throw new AssertionError(
+ "No org.hedgecode.chess.EtudeConstants instances!"
+ );
+ }
+
+}
* limitations under the License.
*/
-package org.hedgecode.chess.service;
+package org.hedgecode.chess;
import java.math.BigInteger;
import java.util.Arrays;
private EtudeUtils() {
throw new AssertionError(
- "No org.hedgecode.chess.service.EtudeUtils instances!"
+ "No org.hedgecode.chess.EtudeUtils instances!"
);
}
--- /dev/null
+/*
+ * 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<Environment> contextHolder = new ThreadLocal<>();
+
+ public static Environment currentContext() {
+ return contextHolder.get();
+ }
+
+}
--- /dev/null
+/*
+ * 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;
+
+/**
+ * Environment execution context setter.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public final class EnvironmentSetter {
+
+ public static void setCurrentContext(Environment environment) {
+ Environment.contextHolder.set(environment);
+ }
+
+ public static void resetCurrentContext() {
+ setCurrentContext(null);
+ }
+
+}
--- /dev/null
+/*
+ * 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.persistence;
+
+import javax.persistence.EntityManager;
+
+import org.hedgecode.chess.environment.Environment;
+
+/**
+ * Environment Persistence Manager.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public class EnvPersistenceManager implements PersistenceManager {
+
+ public EntityManager getEntityManager() {
+ return Environment.currentContext().getEntityManager();
+ }
+
+}
--- /dev/null
+/*
+ * 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.persistence;
+
+import javax.persistence.EntityManager;
+
+/**
+ * Persistence Manager interface.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public interface PersistenceManager {
+
+ EntityManager getEntityManager();
+
+}
--- /dev/null
+/*
+ * 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.persistence;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.hedgecode.chess.EtudeConstants;
+
+/**
+ *
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public final class PersistenceUtils {
+
+ public static EntityManagerFactory createEntityManagerFactory() {
+ return Persistence.createEntityManagerFactory(
+ EtudeConstants.PERSISTENCE_UNIT_NAME
+ );
+ }
+
+ private PersistenceUtils() {
+ throw new AssertionError(
+ "No org.hedgecode.chess.persistence.PersistenceUtils instances!"
+ );
+ }
+
+}
<persistence-unit name="db-etude-persistence-unit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+ <class>org.hedgecode.chess.domain.EtudeType</class>
+ <class>org.hedgecode.chess.domain.Author</class>
<class>org.hedgecode.chess.domain.Etude</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/dbetude"/>
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>
- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>