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

com.bixuebihui.test.converter.TestGenConverterDecorator Maven / Gradle / Ivy

There is a newer version: 1.15.9.9
Show newest version
package com.bixuebihui.test.converter;

import com.bixuebihui.codec.EncryptDecryptService;
import com.bixuebihui.test.dto.TestGenDto;
import com.bixuebihui.test.pojo.TestGen;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public abstract class TestGenConverterDecorator implements TestGenConverter {
    @Autowired
     protected TestGenConverter delegate;


    @Autowired
    EncryptDecryptService enc;


    @Override
    public TestGenDto toDto(TestGen info) {
        return doAfterSingle(delegate.toDto(info));
    }

    @Override
    public TestGen toDao(TestGenDto info) {
        return doAfterSingle(delegate.toDao(info));
    }

    @Override
    public List toDtoList(List info) {
        return doAfterBatchDec(delegate.toDtoList(info));
    }
    @Override
    public List toDaoList(List info) {
        return doAfterBatchEnc(delegate.toDaoList(info));
    }


    List doAfterBatchEnc(List dao){
        List all = combineStrings(dao.stream().map(TestGen::getName), dao.stream().map(TestGen::getGender));

        List encrypted = enc.encrypt(all);
        int bound = dao.size();
        IntStream.range(0, bound).forEach(i -> {
            dao.get(i).setName(encrypted.get(i));
            dao.get(i).setGender(encrypted.get(i+bound));
        });
        return dao;
    }

    private List combineStrings(Stream stringStream, Stream stringStream2) {
        List all = new ArrayList<>();
        List collectName = stringStream.toList();
        List collectGender = stringStream2.toList();
        all.addAll(collectName);
        all.addAll(collectGender);
        return all;
    }


    TestGen doAfterSingle(TestGen dao){
        dao.setName(enc.encrypt(dao.getName()));
        dao.setName(enc.encrypt(dao.getGender()));
        return dao;
    }


    TestGenDto doAfterSingle(TestGenDto dto){
        dto.setName(enc.decrypt(dto.getName()));
        dto.setName(enc.decrypt(dto.getGender()));
        return dto;
    }


    List doAfterBatchDec(List dto){
        List all = combineStrings(dto.stream().map(TestGenDto::getName), dto.stream().map(TestGenDto::getGender));
        List decrypted = enc.decrypt(all);
        int bound = dto.size();
        IntStream.range(0, bound).forEach(i -> {
            dto.get(i).setName(decrypted.get(i));
            dto.get(i).setGender(decrypted.get(i+bound));
        });

        return dto;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy