![JAR search and dependency download from the Maven repository](/logo.png)
io.legaldocml.business.util.AknReference Maven / Gradle / Ivy
package io.legaldocml.business.util;
import io.legaldocml.akn.AknObject;
import io.legaldocml.akn.AkomaNtoso;
import io.legaldocml.akn.DocumentType;
import io.legaldocml.akn.attribute.Refers;
import io.legaldocml.akn.attribute.Role;
import io.legaldocml.akn.element.RefItem;
import io.legaldocml.akn.element.References;
import io.legaldocml.akn.element.TLCPerson;
import io.legaldocml.akn.element.TLCRole;
import io.legaldocml.akn.type.AgentRef;
import io.legaldocml.akn.type.ListReferenceRef;
import io.legaldocml.akn.type.RoleRef;
import io.legaldocml.unsafe.UnsafeString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
import java.util.function.BiConsumer;
/**
* @author Jacques Militello
*/
public abstract class AknReference implements BiConsumer> {
/**
* SLF4J Logger.
*/
private static final Logger LOGGER = LoggerFactory.getLogger(AknReference.class);
@SuppressWarnings("WeakerAccess")
protected AknReference() {
}
public static AknReference refersTo(AgentRef source, TLCPerson refersTo) {
return new AknReference() {
@Override
public void accept(AknObject object, AkomaNtoso extends DocumentType> akn) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("reference with source[{}] from [{}] refersTo [{}]",source, object, refersTo);
}
if (!(object instanceof Refers)) {
throw new AknReferenceException("Not a instance of Refers [" + object + "]");
}
((Refers)object).setRefersTo(new ListReferenceRef(UnsafeString.getChars("#" + refersTo.getEid().toString())));
References ref = akn.getDocumentType().getMeta().getReferences(source);
if (ref == null) {
ref = new References();
ref.setSource(source);
akn.getDocumentType().getMeta().add(ref);
}
Optional op = ref.getRefItems().stream()
.filter( t -> t.equals(refersTo))
.findFirst();
if (!op.isPresent()) {
ref.add(refersTo);
}
}
};
}
public static AknReference as(AgentRef source, TLCRole role) {
return new AknReference() {
@Override
public void accept(AknObject object, AkomaNtoso extends DocumentType> akn) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("reference with source[{}] from [{}] as [{}]",source, object, role);
}
if (!(object instanceof Role)) {
throw new AknReferenceException("Not a instance of Role [" + object + "]");
}
((Role)object).setAs(RoleRef.valueOf(role.getEid()));
References ref = akn.getDocumentType().getMeta().getReferences(source);
if (ref == null) {
ref = new References();
ref.setSource(source);
akn.getDocumentType().getMeta().add(ref);
}
Optional op = ref.getRefItems().stream()
.filter( t -> t.equals(role))
.findFirst();
if (!op.isPresent()) {
ref.add(role);
}
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy