org.unlaxer.jaddress.parser.MultipleAddressElement Maven / Gradle / Ivy
package org.unlaxer.jaddress.parser;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.unlaxer.jaddress.entity.standard.IDHolder;
import org.unlaxer.jaddress.entity.standard.LevelHolder;
import org.unlaxer.jaddress.entity.standard.NameHolder;
import org.unlaxer.jaddress.entity.standard.OffsetHolder;
import org.unlaxer.jaddress.entity.standard.OffsetOfBlock;
import org.unlaxer.jaddress.entity.standard.OffsetOfBuilding;
import org.unlaxer.jaddress.entity.standard.SingleOrRange階層要素;
import org.unlaxer.util.collection.ID;
import io.vavr.control.Either;
public class MultipleAddressElement implements IDHolder , LevelHolder , OffsetHolder , NameHolder{
SingleOrRange階層要素 _階層要素;
List elements;
public Optional offsetOfBlock = Optional.empty();
public Optional offsetOfBuilding = Optional.empty();
public MultipleAddressElement(AddressElement addressElement) {
super();
this.elements = new ArrayList<>();
elements.add(addressElement);
_階層要素 = addressElement._階層要素;
}
public List get(){
return elements;
}
public void add(AddressElement addressElement) {
if(false == addressElement.singleOrRange階層要素().equals(_階層要素)) {
throw new IllegalArgumentException();
}
elements.add(addressElement);
}
public SingleOrRange階層要素 階層要素() {
return _階層要素;
}
@Override
public String toString() {
String collect = elements.stream()
.map(AddressElement::toString)
.map(x->"'"+x+"'")
.collect(Collectors.joining(",", "[", "]"));
return collect;
}
public List elements(){
return elements;
}
@Override
public ID id() {
return _階層要素.id();
}
@Override
public String name() {
return _階層要素.name();
}
@Override
public int level() {
return _階層要素.level();
}
@Override
public Optional offsetOfBlock() {
return offsetOfBlock;
}
@Override
public Optional offsetOfBuilding() {
return offsetOfBuilding;
}
@Override
public void setOffsetOfBlock(OffsetOfBlock offsetOfBlock) {
this.offsetOfBlock = Optional.of(offsetOfBlock);
}
@Override
public void setOffsetOfBuilding(OffsetOfBuilding offsetOfBuilding) {
this.offsetOfBuilding= Optional.of(offsetOfBuilding);
}
public Either, AddressElement> singleOrList(){
return elements.size() ==1 ?
Either.right(elements.get(0)):
Either.left(elements);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy