org.unlaxer.jaddress.parser.AddressParserImpl Maven / Gradle / Ivy
package org.unlaxer.jaddress.parser;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class AddressParserImpl implements AddressParser{
DataAccessContext dataAccessContext;
// this implementation is sequential processing
Map processorByState;
public AddressParserImpl() {
dataAccessContext = new DataAccessContextImpl();
processorByState = Stream.of(
new JyuusyoJpResolver(),
new PrefectureToTownNameTokenizer(),
// new TownNameTokenizer(),
new BlockHierarchyResolver(),
// new BlockTokenizer(),
new HeuristicBlockTokenizer(),
new HeuristicBuildingHierarchyResolver(),
new BuildingTokenizer(),
new 建物以降Parser(),
new RemainsTokenMapper()
).collect(Collectors.toMap(AddressProcessor::targetState, Function.identity()));
}
public AddressContext parse(ParsingContext parsingContext) {
AddressContext addressContext = parsingContext.addressContext;
LoggerContext.debug("START:{} {}" , addressContext.zip.asHyphonated() , addressContext.addressString.joined());
while (true) {
AddressProcessor processor = processorByState.get(parsingContext.state());
if(processor == null) {
break;
}
LoggerContext.debug("■ Processor is {}", processor.getClass().getSimpleName());
if(enableBreakPointHolder) {
breakPointHolder(processor);
}
NextProcess processResult = processor.process(parsingContext);
parsingContext.setNextProcess(processResult);
}
LoggerContext.debug("END");
return addressContext;
}
static boolean enableBreakPointHolder = true;
String breakPointHolder(AddressProcessor processor){
String simpleName = processor.getClass().getSimpleName();
String returning="";
switch (simpleName) {
case "JyuusyoJpResolver":
returning = simpleName;
break;
case "PrefectureToTownNameTokenizer":
returning = simpleName;
break;
case "TownNameTokenizer":
returning = simpleName;
break;
case "BlockHierarchyResolver":
returning = simpleName;
break;
case "HeuristicBlockTokenizer":
returning = simpleName;
break;
case "HeuristicBuildingHierarchyResolver":
returning = simpleName;
break;
case "BuildingTokenizer":
returning = simpleName;
break;
case "建物以降Parser":
returning = simpleName;
break;
case "RemainsTokenMapper":
returning = simpleName;
break;
default:
}
return returning;
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy