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 org.unlaxer.jaddress.parser.MatchKind.MatchKindCodec;

import io.vavr.control.Try;

public class ResolverResultOfMatchKindCodec implements ResolverResultCodec{
	
	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(String hexStringOfResolverResults) {
		
		
		int length = hexStringOfResolverResults.length();
		
		List results = new ArrayList<>();
		
		ResolverResultKindOfMatchKind[] resolverResultKindOfMatchKinds = 
				ResolverResultKindOfMatchKind .values();
		
		for(int i = 0; i  < length ; i ++) {
			
			String target = hexStringOfResolverResults.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 Try.ofSupplier(()->results);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy