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

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

package org.unlaxer.jaddress.parser;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;

import org.unlaxer.jaddress.entity.standard.SingleOrRange階層要素;
import org.unlaxer.jaddress.parser.picker.PickerResult;

public class Sources{
	
	Map sourcesByKindForPredecessor;
	Map sourcesByKindForSuccessor;
	Map pickerResultByKind;


	public Sources() {
		super();
		sourcesByKindForPredecessor = new HashMap<>();
		sourcesByKindForSuccessor = new HashMap<>();
		pickerResultByKind = new HashMap<>();
	}
	
	public void add(Optional parserResult) {
		
		parserResult.ifPresent(result->{
			
			SingleOrRange階層要素 _階層要素 = result.SIngleOrRange階層要素();
			
			pickerResultByKind.put(_階層要素, result);
			
			result.predecessor().ifPresent(
					source->sourcesByKindForPredecessor.put(_階層要素, source));
			
			result.successor().ifPresent(
					source->sourcesByKindForSuccessor.put(_階層要素, source));
		});
	}
	
	Map get(Sources.PredecessorOrSuccessor predecessorOrSuccessor){
		return predecessorOrSuccessor.isPredecessor() ? 
				sourcesByKindForPredecessor:
				sourcesByKindForSuccessor;
	}

	public Optional pickerResult(SingleOrRange階層要素 _階層要素){

		Optional ofNullable = Optional.ofNullable(pickerResultByKind.get(_階層要素));
		return ofNullable;
	}
	
	public void add(
			SingleOrRange階層要素 _階層要素 ,
			Sources.PredecessorOrSuccessor predecessorOrSuccessor , 
			AddressToken addressToken) {
		
		Map map = get(predecessorOrSuccessor);
		
		map.put(_階層要素, addressToken);
	}
	
	public enum PredecessorOrSuccessor{
		predecessor,
		successor,
		;
		public boolean isPredecessor() {
			return this == predecessor;
		}
		public boolean isSuccessor() {
			return this == successor;
		}
	}
	
	public void remove(SingleOrRange階層要素 _階層要素 , Sources.PredecessorOrSuccessor predecessorOrSuccessor) {
		
		Map map = get(predecessorOrSuccessor);
		
		map.remove(_階層要素);
	}
	
	public Optional get(
			SingleOrRange階層要素 _階層要素 , Sources.PredecessorOrSuccessor predecessorOrSuccessor){
		
		Map sourceByKind  = get(predecessorOrSuccessor);
		
		return Optional.ofNullable(sourceByKind.get(_階層要素));
	}
	
	public Set> getAll(
			Sources.PredecessorOrSuccessor predecessorOrSuccessor) {
		return get(predecessorOrSuccessor).entrySet();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy