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

org.unlaxer.jaddress.parser.ResolverResultOfProcessedProcessorCodec Maven / Gradle / Ivy

package org.unlaxer.jaddress.parser;

import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
import java.util.function.Supplier;

import org.apache.commons.codec.binary.Hex;
import org.unlaxer.util.function.Unchecked;

import io.vavr.control.Try;

public class ResolverResultOfProcessedProcessorCodec implements ResolverResultCodec{
	
	public static final ResolverResultOfProcessedProcessorCodec SINGLETON = 
			new ResolverResultOfProcessedProcessorCodec();

	@Override
	public Class target() {
		return ResolverResultKindOfProcessedProcessor.class;
	}

	@Override
	public String toString(List resolverResultsOfThisKind) {
		BitSet bitSet = new BitSet();
		
		resolverResultsOfThisKind.stream()
			.filter(resolverResult->resolverResult.kind.isProcessedProcessor())
			.forEach(resolverResult->{
				ResolverResultKind kind = resolverResult.kind;
				int ordinal = kind.ordinal();
				bitSet.set(ordinal);
			});
		byte[] bytes = bitSet.toByteArray();
		return Hex.encodeHexString(bytes);
	}

	@Override
	public Try> toResolverResults(Supplier hexStringOfResolverResults) {
		return  Try.ofSupplier(Unchecked.of(()->{
			
			byte[] decodeHex = Hex.decodeHex(hexStringOfResolverResults.get());
			BitSet bitSet = BitSet.valueOf(decodeHex);
			
			List results = new ArrayList<>();
			
			
			for(int i =0 ; i < bitSet.length() ; i++) {
				
				if(bitSet.get(i)) {
					
					ResolverResultKindOfProcessedProcessor resolverResultKindOfProcessedProcessor = 
							ResolverResultKindOfProcessedProcessor.values.get()[i];
					
					ResolverResult resolverResult = new ResolverResult(resolverResultKindOfProcessedProcessor);
					results.add(resolverResult);
				}
			}
			return results;
		}));
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy