/
Buka
/
CarPooling
Обзор
Документация
Войти
/
Buka
/
CarPooling
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/carpooling/dao/mongo/AbstractMongoDao.java
67 строк
2 KB
BUka228
После рефакторинга пакетов
18 янв 2025, 17:08
18 янв 2025, 17:08
a4d4c33
Код
Авторство
О чём код?
package com.carpooling.dao.mongo; import com.carpooling.utils.ObjectIdMapperUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.mongodb.client.MongoCollection; import lombok.extern.slf4j.Slf4j; import org.bson.Document; import static com.carpooling.constants.Constants.MONGO_ID; import static com.carpooling.constants.ErrorMessages.*; @Slf4j public abstract class AbstractMongoDao<T> { protected final MongoCollection<Document> collection; private final ObjectMapper objectMapper; private final Class<T> clazz; public AbstractMongoDao(MongoCollection<Document> collection, Class<T> clazz) { this.collection = collection; this.clazz = clazz; objectMapper = ObjectIdMapperUtil.createObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); } /** * Преобразует объект Java в MongoDB Document. * * @param object Объект для преобразования. * @return Документ MongoDB. */ protected Document toDocument(Object object) { try { String json = objectMapper.writeValueAsString(object); Document document = Document.parse(json); document.remove("id"); return document; } catch (JsonProcessingException e) { log.error(ERROR_CONVERT_OBJECT_TO_DOCUMENT, object, e); throw new IllegalStateException(CONVERT_OBJECT_TO_DOCUMENT_ERROR, e); } } /** * Преобразует MongoDB Document в объект Java. * * @param document Документ MongoDB. * @return Объект Java. */ protected T fromDocument(Document document) { try { // Убираем _id, заменяем его на id if (document.containsKey(MONGO_ID)) { document.put("id", document.getObjectId(MONGO_ID).toHexString()); document.remove(MONGO_ID); } String json = document.toJson(); return objectMapper.readValue(json, clazz); } catch (Exception e) { log.error(ERROR_CONVERT_DOCUMENT_TO_OBJECT, document, e); throw new IllegalStateException(CONVERT_DOCUMENT_TO_OBJECT_ERROR, e); } } }