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

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

package org.unlaxer.jaddress.parser;

import java.util.Iterator;
import java.util.List;
import java.util.Optional;

public interface ParsingResult {
	
	List partialParsingResults();
	AddressElements addressElementsWithoutCheck();
	
	default Optional addressElements(){
		return isValid() ? 
			Optional.of(addressElementsWithoutCheck()) :
			Optional.empty();
	}
	
	boolean isValid();
	
	public static ParsingResult create(List partialParsingResults) {
		return new ParsingResultImpl(partialParsingResults);
	}
	
	public static ParsingResult create(PartialParsingResult... partialParsingResults) {
		return new ParsingResultImpl(List.of(partialParsingResults));
	}
	
	default AddressElements createAddressElements() {
		
		List partialParsingResults = partialParsingResults();
		
		PartialParsingResult partialParsingResult = partialParsingResults.get(0);
		
		AddressElements baseResult = partialParsingResult.result()
			.orElseGet(()->{
				
				AddressContext addressContext = partialParsingResult.parsingTarget().addressContext();
				return new AddressElements(addressContext);
			});
		
		Iterator iterator = partialParsingResults.iterator();
		
		iterator.next();
		
		while (iterator.hasNext()) {
			PartialParsingResult additionalParsingResult = iterator.next();
			if(false == additionalParsingResult.parsingState().equals(ParsingState.パース終了)) {
				continue;
			}
			additionalParsingResult.result().ifPresent(baseResult::overWrite);
		}
		
		return baseResult;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy