package fr.openwide.core.jpa.more.business.upgrade.service; import static fr.openwide.core.jpa.more.property.JpaMorePropertyIds.dataUpgrade; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import fr.openwide.core.jpa.exception.SecurityServiceException; import fr.openwide.core.jpa.exception.ServiceException; import fr.openwide.core.jpa.more.business.upgrade.model.IDataUpgrade; import fr.openwide.core.spring.property.service.IPropertyService; import fr.openwide.core.spring.util.SpringBeanUtils; public abstract class AbstractDataUpgradeServiceImpl implements IAbstractDataUpgradeService { @Autowired private IPropertyService propertyService; @Autowired private ApplicationContext applicationContext; @Override public void executeDataUpgrade(IDataUpgrade upgrade) throws ServiceException, SecurityServiceException { // On vérifie que la mise à jour n'a pas déjà été exécutée boolean upgradeAlreadyDone = propertyService.get(dataUpgrade(upgrade)); if (!upgradeAlreadyDone) { SpringBeanUtils.autowireBean(applicationContext, upgrade); upgrade.perform(); // On marque la mise à jour comme exécutée propertyService.set(dataUpgrade(upgrade), true); } } @Override public abstract List<IDataUpgrade> listDataUpgrades(); }