io.ebeaninternal.server.persist.MergeNode Maven / Gradle / Ivy
package io.ebeaninternal.server.persist;
import io.ebean.Query;
import io.ebean.bean.EntityBean;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeaninternal.server.deploy.BeanProperty;
import io.ebeaninternal.server.deploy.BeanPropertyAssoc;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Base class for merge nodes.
*/
abstract class MergeNode {
protected final String fullPath;
protected final BeanDescriptor> targetDescriptor;
protected Map children;
MergeNode(String fullPath, BeanPropertyAssoc> property) {
this.fullPath = fullPath;
this.targetDescriptor = property.getTargetDescriptor();
}
/**
* Perform the merge processing.
*/
abstract void merge(MergeRequest request);
/**
* Add a child node given the fullPath and relative path.
*/
MergeNode addChild(String fullPath, String path) {
MergeNode childNode = MergeHandler.createMergeNode(fullPath, targetDescriptor, path);
if (children == null) {
children = new LinkedHashMap<>();
}
children.put(path, childNode);
return childNode;
}
/**
* Return the node given the relative path.
*/
MergeNode get(String path) {
if (children != null) {
return children.get(path);
}
return null;
}
/**
* Return the outline beans as a map keyed by Id values.
*/
Map