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

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

package org.unlaxer.jaddress.parser;

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

import org.unlaxer.jaddress.parser.MatchKind.MatchKindCodec;

import io.vavr.control.Try;

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

	
	private final MatchKindCodec matchKindCodec ;

	public ResolverResultOfMatchKindCodec() {
		super();
		matchKindCodec = new MatchKindCodec();
	}

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

	@Override
	public String toString(List resolverResultsOfThisKind) {
		
		StringBuilder builder = new StringBuilder();
		
		for (ResolverResultKindOfMatchKind  kind :ResolverResultKindOfMatchKind .values()) {

			boolean exists =false;
			
			for (ResolverResult resolverResult : resolverResultsOfThisKind) {
				
				ResolverResultKind targetKind = resolverResult.kind();
				
				MatchKind value = MatchKind.class.cast(resolverResult.value());
				
				if(targetKind == kind) {
					builder.append(matchKindCodec.encode(value));
					exists = true ; 
					break;
				}
			}
			if(exists ==false) {
				builder.append("0");
			}
		}
		return builder.toString();
	}

	@Override
	public Try> toResolverResults(Supplier hexStringOfResolverResults) {
		
		return Try.ofSupplier(()->{
			
			int length = hexStringOfResolverResults.get().length();
			
			List results = new ArrayList<>();
			
			ResolverResultKindOfMatchKind[] resolverResultKindOfMatchKinds = 
					ResolverResultKindOfMatchKind .values();
			
			for(int i = 0; i  < length ; i ++) {
				
				String target = hexStringOfResolverResults.get().substring(i,i+1);
				if(target.equals("0")) {
					continue;
				}
				ResolverResultKindOfMatchKind resolverResultKindOfMatchKind = 
						resolverResultKindOfMatchKinds[i];
				
				MatchKind decode = matchKindCodec.decode(target);
				
				ResolverResult resolverResult = new ResolverResult(resolverResultKindOfMatchKind , decode);
				
				results.add(resolverResult);
			}
			return results;
		});
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy