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

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

The newest version!
package org.unlaxer.jaddress.parser;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.unlaxer.jaddress.PoisonPill;
import org.unlaxer.jaddress.entity.standard.SingleOrRange階層要素;
import org.unlaxer.jaddress.entity.standard.定義済みRange階層要素;
import org.unlaxer.util.collection.ID;

public class ParsingTargetImpl implements ParsingTarget{

	final ParsingContext parsingContext;
	final AddressContext addressContext;

	TargetStateAndElement targetStateAndElement;
	
	PartialParsingResult partialParsingResult;
	
	Set resolverResults;
	
	AddressElements addressElements;
	
	Map poisonPillByID = new HashMap<>();
	
	public ParsingTargetImpl(
			ParsingContext parsingContext,
			AddressContext addressContext) {
		
		this(parsingContext , addressContext,
			new TargetStateAndElement(
				ParsingState.ZIPから郵便番号情報取得,
				SingleOrRange階層要素.of(定義済みRange階層要素.全体)
			)
		);
	}
	
	public ParsingTargetImpl(
			ParsingContext parsingContext,
			AddressContext addressContext, 
			TargetStateAndElement targetStateAndElement) {
		
		super();
		this.parsingContext = parsingContext;
		this.addressContext = addressContext;
		setTargetStateAndElement(targetStateAndElement);
		resolverResults = new HashSet<>();
	}

	@Override
	public AddressContext addressContext() {
		return addressContext;
	}

	@Override
	public void setTargetStateAndElement(TargetStateAndElement targetStateAndElement) {
		TargetStateAndElement oldProcessResult = targetStateAndElement;

		this.targetStateAndElement = targetStateAndElement;
		LoggerContext.output(targetStateAndElement);
		
		if(oldProcessResult != null && 
			oldProcessResult.targetState.canTransit(targetStateAndElement.targetState)) {
			
			throw new IllegalStateException();
		}
	}

	@Override
	public TargetStateAndElement targetStateAndElement() {
		return targetStateAndElement;
	}

	@Override
	public IntermediateResult intermediateResult() {
		return parsingContext.intermediateResult();
	}

	@Override
	public DataAccessContext dataAccessContext() {
		return parsingContext.dataAccessContext();
	}

	@Override
	public PartialParsingResult partialParsingResult() {
		
		if(addressElements == null){
//			throw new IllegalStateException();
			partialParsingResult = PartialParsingResult.create(this , targetState());
		}
		if(partialParsingResult == null) {
			partialParsingResult = PartialParsingResult.create(this , targetState() , addressElements );
		}
		return partialParsingResult;
	}

	@Override
	public void addResolverResult(ResolverResult resolverResult) {
		resolverResults.add(resolverResult);
	}

	@Override
	public Set resolverResults() {
		return resolverResults;
	}

	@Override
	public AddressElements addressElements() {
		return addressElements;
	}

	@Override
	public void setAddressElements(AddressElements addressElements) {
		this.addressElements = addressElements;
	}

	@Override
	public Map poisonPillByID() {
		return poisonPillByID;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy