package com.idega.business;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import com.idega.data.ExplicitlySynchronizedEntity;
@Service(RequestSynchronizer.BEAN_NAME)
@Scope("request")
public class RequestSynchronizer {
public static final String BEAN_NAME = "requestSynchronizer";
private Collection<ExplicitlySynchronizedEntity> synchronizationEntities;
private Map<String, Object> properties;
@Autowired
private ExplicitSynchronizationBusiness explicitSynchronizationBusiness;
public Collection<ExplicitlySynchronizedEntity> getSynchronizerKeys() {
if(synchronizationEntities != null){
return synchronizationEntities;
}
synchronizationEntities = new ArrayList<ExplicitlySynchronizedEntity>();
return synchronizationEntities;
}
public void addEntityToSyncronize(ExplicitlySynchronizedEntity entity){
getSynchronizerKeys().add(entity);
}
@SuppressWarnings("unused")
@PreDestroy
private void activateSynchronization(){
explicitSynchronizationBusiness.activateSynchronization(synchronizationEntities,getProperties());
}
public Map<String, Object> getProperties() {
if(properties != null){
return properties;
}
properties = new HashMap<String, Object>();
return properties;
}
}