new
This commit is contained in:
parent
4d2b28392c
commit
cd7dfe0a07
@ -0,0 +1,122 @@
|
|||||||
|
package com.realnet.MultiTimeZone.Component;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceContext;
|
||||||
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
|
import org.aspectj.lang.annotation.AfterReturning;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.realnet.MultiTimeZone.Services.TimezoneService;
|
||||||
|
import com.realnet.WhoColumn.Entity.Who_column;
|
||||||
|
import com.realnet.users.entity1.AppUser;
|
||||||
|
import com.realnet.users.service1.AppUserService;
|
||||||
|
|
||||||
|
@Aspect
|
||||||
|
@Component
|
||||||
|
public class WhoColumnAspect {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TimezoneService timezoneService;
|
||||||
|
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager entityManager;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AppUserService userService;
|
||||||
|
|
||||||
|
// @Transactional
|
||||||
|
//// @Before("execution(* org.springframework.data.jpa.repository.JpaRepository.save(..)) && args(entity)")
|
||||||
|
// @AfterReturning(pointcut = "execution(* org.springframework.data.jpa.repository.JpaRepository.find*(..))", returning = "entity")
|
||||||
|
//
|
||||||
|
// public void applyTimezone(Object entity) {
|
||||||
|
// if (entity instanceof Who_column) {
|
||||||
|
// Who_column whoColumn = (Who_column) entity;
|
||||||
|
//
|
||||||
|
// // Null check for createdBy
|
||||||
|
//// Long createdByUserId = whoColumn.getCreatedBy();
|
||||||
|
//// if (createdByUserId == null) {
|
||||||
|
//// return; // Avoid processing if no user info is available
|
||||||
|
//// }
|
||||||
|
//
|
||||||
|
// AppUser appUser = userService.getLoggedInUser();
|
||||||
|
//
|
||||||
|
// // Fetch user timezone
|
||||||
|
//// AppUser appUser = entityManager.find(AppUser.class, createdByUserId);
|
||||||
|
// if (appUser == null || appUser.getMultitime() == null) {
|
||||||
|
// return; // Skip if user or timezone is not found
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// String userTimezone = appUser.getMultitime();
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// if (whoColumn.getCreatedAt() != null) {
|
||||||
|
// ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(),
|
||||||
|
// userTimezone);
|
||||||
|
// whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant()));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (whoColumn.getUpdatedAt() != null) {
|
||||||
|
// ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(),
|
||||||
|
// userTimezone);
|
||||||
|
// whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant()));
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// System.err.println("Timezone conversion error: " + e.getMessage());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@AfterReturning(pointcut = "execution(* org.springframework.data.jpa.repository.JpaRepository.find*(..))", returning = "entity")
|
||||||
|
public void applyTimezone(Object entity) {
|
||||||
|
if (entity == null) {
|
||||||
|
return; // Agar entity null hai to kuch mat karo
|
||||||
|
}
|
||||||
|
|
||||||
|
AppUser appUser = userService.getLoggedInUser();
|
||||||
|
if (appUser == null || appUser.getMultitime() == null) {
|
||||||
|
return; // Agar user ya timezone nahi mila to skip karo
|
||||||
|
}
|
||||||
|
|
||||||
|
String userTimezone = appUser.getMultitime();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (entity instanceof Collection<?>) {
|
||||||
|
// Agar entity ek collection hai to har element ko process karo
|
||||||
|
for (Object obj : (Collection<?>) entity) {
|
||||||
|
convertWhoColumn(obj, userTimezone);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Single entity case
|
||||||
|
convertWhoColumn(entity, userTimezone);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Timezone conversion error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void convertWhoColumn(Object obj, String userTimezone) {
|
||||||
|
if (obj instanceof Who_column) {
|
||||||
|
Who_column whoColumn = (Who_column) obj;
|
||||||
|
|
||||||
|
if (whoColumn.getCreatedAt() != null) {
|
||||||
|
ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(),
|
||||||
|
userTimezone);
|
||||||
|
whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (whoColumn.getUpdatedAt() != null) {
|
||||||
|
ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(),
|
||||||
|
userTimezone);
|
||||||
|
whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
//package com.realnet.MultiTimeZone.Component;
|
||||||
|
//
|
||||||
|
//import java.io.Serializable;
|
||||||
|
//import java.time.ZonedDateTime;
|
||||||
|
//import java.util.Date;
|
||||||
|
//import java.util.TimeZone;
|
||||||
|
//
|
||||||
|
//import javax.persistence.EntityManager;
|
||||||
|
//import javax.persistence.EntityManagerFactory;
|
||||||
|
//
|
||||||
|
//import org.hibernate.EmptyInterceptor;
|
||||||
|
//import org.hibernate.type.Type;
|
||||||
|
//import org.springframework.stereotype.Component;
|
||||||
|
//
|
||||||
|
//import com.realnet.MultiTimeZone.Services.TimezoneService;
|
||||||
|
//import com.realnet.WhoColumn.Entity.Who_column;
|
||||||
|
//import com.realnet.users.entity1.AppUser;
|
||||||
|
//
|
||||||
|
//@Component
|
||||||
|
//public class WhoColumnInterceptor extends EmptyInterceptor {
|
||||||
|
//
|
||||||
|
// private final EntityManagerFactory entityManagerFactory;
|
||||||
|
// private final TimezoneService timezoneService;
|
||||||
|
//
|
||||||
|
// public WhoColumnInterceptor(EntityManagerFactory entityManagerFactory, TimezoneService timezoneService) {
|
||||||
|
// this.entityManagerFactory = entityManagerFactory;
|
||||||
|
// this.timezoneService = timezoneService;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {
|
||||||
|
// if (entity instanceof Who_column) {
|
||||||
|
// Who_column whoColumn = (Who_column) entity;
|
||||||
|
//
|
||||||
|
// // Fetch user timezone
|
||||||
|
// Long createdByUserId = whoColumn.getCreatedBy();
|
||||||
|
// EntityManager entityManager = entityManagerFactory.createEntityManager();
|
||||||
|
// AppUser appUser = entityManager.find(AppUser.class, createdByUserId);
|
||||||
|
//
|
||||||
|
// if (appUser != null) {
|
||||||
|
// String userTimezone = appUser.getMultitime();
|
||||||
|
// TimeZone timeZone = TimeZone.getTimeZone(userTimezone);
|
||||||
|
//
|
||||||
|
// // Convert timestamps
|
||||||
|
// if (whoColumn.getCreatedAt() != null) {
|
||||||
|
// ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(),
|
||||||
|
// userTimezone);
|
||||||
|
// whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant()));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (whoColumn.getUpdatedAt() != null) {
|
||||||
|
// ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(),
|
||||||
|
// userTimezone);
|
||||||
|
// whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant()));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// entityManager.close();
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
//package com.realnet.MultiTimeZone.config;
|
||||||
|
//import org.hibernate.SessionFactory;
|
||||||
|
//import org.hibernate.boot.spi.MetadataImplementor;
|
||||||
|
//import org.springframework.context.annotation.Bean;
|
||||||
|
//import org.springframework.context.annotation.Configuration;
|
||||||
|
//
|
||||||
|
//import com.realnet.MultiTimeZone.Component.WhoColumnInterceptor;
|
||||||
|
//
|
||||||
|
//@Configuration
|
||||||
|
//public class HibernateConfig {
|
||||||
|
//
|
||||||
|
// private final WhoColumnInterceptor whoColumnInterceptor;
|
||||||
|
//
|
||||||
|
// public HibernateConfig(WhoColumnInterceptor whoColumnInterceptor) {
|
||||||
|
// this.whoColumnInterceptor = whoColumnInterceptor;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Bean
|
||||||
|
// public SessionFactory sessionFactory(MetadataImplementor metadata) {
|
||||||
|
// return metadata.getSessionFactoryBuilder()
|
||||||
|
// .applyInterceptor(whoColumnInterceptor)
|
||||||
|
// .build();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
Loading…
x
Reference in New Issue
Block a user