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