org.unlaxer.jaddress.parser.AddressContext Maven / Gradle / Ivy
package org.unlaxer.jaddress.parser;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Predicate;
import org.unlaxer.jaddress.entity.standard.IDHolder;
import org.unlaxer.jaddress.entity.standard.SingleOrRange階層要素;
import org.unlaxer.jaddress.entity.standard.郵便番号;
import org.unlaxer.jaddress.entity.standard.階層要素;
import org.unlaxer.util.collection.ID;
import org.unlaxer.util.collection.TreeNode;
import org.unlaxer.util.collection.TreeNodeList;
public interface AddressContext extends IDHolder {
public enum Kind{
overAllAddresses,
partialAddress,
;
public boolean isOverAll() {
return this == overAllAddresses;
}
public boolean isPartial() {
return this == partialAddress;
}
}
String SEPARATOR = " ";
Kind kind();
void addChildren(TreeNode target, TreeNodeList children);
void addChild(TreeNode target, TreeNode child);
void addChild(TreeNode target, AddressElement child);
void addChild(int index, TreeNode target, AddressElement child);
Optional> findFistChild(Predicate predicate);
boolean remove(Predicate predicate);
Optional> find(IDHolder hierarchyElement);
Map<階層要素, AddressElement> 丁目以降枝番までAsMap();
List 丁目以降枝番までAsList();
List originalAddresses();
PickerResults pickerResults();
郵便番号 zip();
StringAndCharacterKinds addressString();
TreeNode addressTree();
TreeNodeList split(
TreeNode targetNode,
SeparatorWithKind separatorWithKind,
SplitStrategy splitStrategy,
SingleOrRange階層要素... elementKinds);
private static AddressContext create(Kind kind , ID id , 郵便番号 zip, List addresses) {
return new AddressContextImpl(
kind,
id,
zip,
addresses);
}
public static OverAllAddressContext createOverAll(ID id , 郵便番号 zip, List addresses) {
return OverAllAddressContext.of(
create(Kind.overAllAddresses, id , zip, addresses)
);
}
public static PartialAddressContext createPartial(ID id , 郵便番号 zip, List addresses) {
return PartialAddressContext.of(
create(Kind.partialAddress, id , zip, addresses)
);
}
private static AddressContext create(Kind kind , 郵便番号 zip, List addresses) {
return create(kind , ID.generate() , zip, addresses);
}
public static OverAllAddressContext createOverAll(郵便番号 zip, List addresses) {
return OverAllAddressContext.of(
create(Kind.overAllAddresses, zip, addresses)
);
}
public static PartialAddressContext createPartial(郵便番号 zip, List addresses) {
return PartialAddressContext.of(
create(Kind.partialAddress, zip, addresses)
);
}
static AddressContext create(Kind kind , ID id, 郵便番号 zip, AddressElement addressElement) {
return new AddressContextImpl(
kind,
id,
zip,
addressElement);
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy