All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.rocketbase.commons.service.ReferenceHashMigrationService Maven / Gradle / Ivy

package io.rocketbase.commons.service;

import com.google.common.hash.Hashing;
import io.rocketbase.commons.model.AssetJpaEntity;
import io.rocketbase.commons.repository.AssetEntityRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import javax.annotation.Resource;
import javax.transaction.Transactional;
import java.nio.charset.Charset;

public class ReferenceHashMigrationService {

    @Resource
    private AssetEntityRepository assetEntityRepository;

    @Transactional
    public void generateHashesForReferenceUrls(int batchSize) {
        boolean updated;
        do {
            updated = updateBatch(batchSize);
        } while (updated);
    }

    private boolean updateBatch(int batchSize) {
        Page page = assetEntityRepository.findAssetsWithMissingReferenceHash(PageRequest.of(0, batchSize));
        if (page.getNumberOfElements() > 0) {
            for (AssetJpaEntity e : page.getContent()) {
                e.setReferenceHash(Hashing.sha256().hashString(e.getReferenceUrl(), Charset.forName("UTF8")).toString());
            }
            assetEntityRepository.saveAll(page.getContent());
            return true;
        }
        return false;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy