@Component(value="core_FetchPlanBuilder")
@Scope(value="prototype")
public class FetchPlanBuilder
extends java.lang.Object
FetchPlan
s.
Use FetchPlans
factory to get the builder.
Modifier and Type | Field and Description |
---|---|
protected org.springframework.context.ApplicationContext |
applicationContext |
protected java.util.Map<java.lang.String,FetchPlanBuilder> |
builders |
protected java.lang.Class<?> |
entityClass |
protected java.util.Map<java.lang.String,FetchMode> |
fetchModes |
protected FetchPlanRepository |
fetchPlanRepository |
protected java.util.Map<java.lang.String,FetchPlan> |
fetchPlans |
protected boolean |
loadPartialEntities |
protected MetaClass |
metaClass |
protected Metadata |
metadata |
protected MetadataTools |
metadataTools |
protected java.lang.String |
name |
protected java.util.Set<java.lang.String> |
properties |
protected FetchPlan |
result |
protected boolean |
systemProperties |
Modifier | Constructor and Description |
---|---|
protected |
FetchPlanBuilder(java.lang.Class<?> entityClass) |
Modifier and Type | Method and Description |
---|---|
FetchPlanBuilder |
add(java.lang.String property)
Adds property.
|
FetchPlanBuilder |
add(java.lang.String property,
java.util.function.Consumer<FetchPlanBuilder> consumer)
Adds property.
|
FetchPlanBuilder |
add(java.lang.String property,
java.util.function.Consumer<FetchPlanBuilder> consumer,
FetchMode fetchMode)
Adds property.
|
FetchPlanBuilder |
add(java.lang.String property,
FetchPlanBuilder builder)
Adds property with FetchPlan specified by
builder . |
FetchPlanBuilder |
add(java.lang.String property,
FetchPlanBuilder builder,
FetchMode fetchMode)
Adds property with FetchPlan specified by
builder . |
FetchPlanBuilder |
add(java.lang.String property,
java.lang.String fetchPlanName)
Adds property with FetchPlan specified by
fetchPlanName . |
FetchPlanBuilder |
add(java.lang.String property,
java.lang.String fetchPlanName,
FetchMode fetchMode)
Adds property with FetchPlan specified by
fetchPlanName and a specific fetch mode. |
FetchPlanBuilder |
addAll(java.lang.String... properties)
Adds all listed properties to FetchPlan
|
FetchPlanBuilder |
addFetchPlan(FetchPlan fetchPlan)
Adds all properties from specified
fetchPlan . |
FetchPlanBuilder |
addFetchPlan(java.lang.String fetchPlanName)
Adds all properties from specified by
fetchPlanName FetchPlan. |
FetchPlanBuilder |
addSystem()
Adds all system properties determined by
MetadataTools.getSystemProperties(MetaClass) to FetchPlan |
protected void |
addSystemProperties() |
FetchPlan |
build()
Builds fetch plan and makes builder immutable.
Subsequent method invocations returns the same object. |
protected void |
checkState()
Checks whether
FetchPlan has been built. |
protected FetchPlan |
createFetchPlan(java.lang.Class<?> entityClass,
java.lang.String name,
java.util.List<FetchPlanProperty> properties,
boolean loadPartialEntities) |
java.lang.Class<?> |
getEntityClass() |
protected MetaPropertyPath |
getMetaPropertyPath(java.lang.String property) |
java.lang.String |
getName() |
protected FetchPlanBuilder |
getNestedPropertyBuilder(FetchPlanBuilder builder,
java.lang.String name) |
boolean |
isBuilt() |
FetchPlanBuilder |
merge(FetchPlan fetchPlan)
Deep merges
fetchPlan into current fetchPlan by adding all properties recursively. |
FetchPlanBuilder |
mergeNestedProperty(java.lang.String propertyPath,
FetchPlan fetchPlan)
Deep merges
fetchPlan into direct or indirect property's fetchPlan by adding all properties recursively. |
FetchPlanBuilder |
mergeProperty(java.lang.String propName,
FetchPlan propFetchPlan,
FetchMode propFetchMode)
Deep merges
fetchPlan into property's fetchPlan by adding all properties recursively. |
FetchPlanBuilder |
name(java.lang.String name)
Sets
FetchPlan.name |
FetchPlanBuilder |
partial()
Sets
FetchPlan.loadPartialEntities() to true |
FetchPlanBuilder |
partial(boolean partial)
Specifies
FetchPlan.loadPartialEntities() |
protected void |
postConstruct() |
@Autowired protected org.springframework.context.ApplicationContext applicationContext
@Autowired protected Metadata metadata
@Autowired protected MetadataTools metadataTools
@Autowired protected FetchPlanRepository fetchPlanRepository
protected java.lang.Class<?> entityClass
protected MetaClass metaClass
protected java.util.Set<java.lang.String> properties
protected java.util.Map<java.lang.String,FetchPlanBuilder> builders
protected java.util.Map<java.lang.String,FetchPlan> fetchPlans
protected java.util.Map<java.lang.String,FetchMode> fetchModes
protected boolean systemProperties
protected boolean loadPartialEntities
protected java.lang.String name
protected FetchPlan result
@PostConstruct protected void postConstruct()
public FetchPlan build()
protected FetchPlan createFetchPlan(java.lang.Class<?> entityClass, java.lang.String name, java.util.List<FetchPlanProperty> properties, boolean loadPartialEntities)
public FetchPlanBuilder add(java.lang.String property)
property
- name of direct property or dot separated path to indirect property. e.g. "address.country.name"java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, java.util.function.Consumer<FetchPlanBuilder> consumer)
property
- property nameconsumer
- to build property fetchPlanjava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, java.util.function.Consumer<FetchPlanBuilder> consumer, FetchMode fetchMode)
property
- property nameconsumer
- to build property fetchPlanfetchMode
- fetch mode for propertyjava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, java.lang.String fetchPlanName)
fetchPlanName
.
For example:
FetchPlan orderFP = fetchPlans.builder(Order.class) .addFetchPlan(FetchPlan.BASE) .add("orderLines", FetchPlan.BASE) .add("orderLines.product", FetchPlan.BASE) .build();
property
- name of immediate property or dot separated property path, e.g. "address.country.name"FetchPlanNotFoundException
- if specified by fetchPlanName
FetchPlan not found for entity determined by property
java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, java.lang.String fetchPlanName, FetchMode fetchMode)
fetchPlanName
and a specific fetch mode.
For example:
FetchPlan orderFP = fetchPlans.builder(Order.class) .addFetchPlan(FetchPlan.BASE) .add("orderLines", FetchPlan.BASE, FetchMode.UNDEFINED) .add("orderLines.product", FetchPlan.BASE, FetchMode.UNDEFINED) .build();
property
- name of immediate property or dot separated property path, e.g. "address.country.name"FetchPlanNotFoundException
- if specified by fetchPlanName
FetchPlan not found for entity determined by property
java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, FetchPlanBuilder builder)
builder
.property
- property namejava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder add(java.lang.String property, FetchPlanBuilder builder, FetchMode fetchMode)
builder
.property
- property namefetchMode
- fetch mode for propertyjava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder addAll(java.lang.String... properties)
properties
- list of properties determined as for simple add(String)
methodjava.lang.RuntimeException
- if FetchPlan has been already builtadd(String)
public FetchPlanBuilder addSystem()
MetadataTools.getSystemProperties(MetaClass)
to FetchPlanjava.lang.RuntimeException
- if FetchPlan has been already builtprotected void addSystemProperties()
public FetchPlanBuilder addFetchPlan(FetchPlan fetchPlan)
fetchPlan
. Replaces existing nested fetchPlans.java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder addFetchPlan(java.lang.String fetchPlanName)
fetchPlanName
FetchPlan. Replaces existing nested fetchPlans.java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder merge(FetchPlan fetchPlan)
fetchPlan
into current fetchPlan by adding all properties recursively.java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder mergeProperty(java.lang.String propName, @Nullable FetchPlan propFetchPlan, @Nullable FetchMode propFetchMode)
fetchPlan
into property's fetchPlan by adding all properties recursively.propName
- name of property to merge propFetchPlan
tojava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder mergeNestedProperty(java.lang.String propertyPath, @Nullable FetchPlan fetchPlan)
fetchPlan
into direct or indirect property's fetchPlan by adding all properties recursively.propertyPath
- name of direct property or dot separated path to indirect property to merge propFetchPlan
tojava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder partial()
FetchPlan.loadPartialEntities()
to truejava.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder partial(boolean partial)
FetchPlan.loadPartialEntities()
java.lang.RuntimeException
- if FetchPlan has been already builtpublic FetchPlanBuilder name(java.lang.String name)
FetchPlan.name
java.lang.RuntimeException
- if FetchPlan has been already builtpublic java.lang.Class<?> getEntityClass()
public java.lang.String getName()
FetchPlan.name
for fetchPlan under constructionpublic boolean isBuilt()
FetchPlan
has been already built and builder is not modifiable anymoreprotected void checkState()
java.lang.RuntimeException
- if FetchPlan is already builtprotected MetaPropertyPath getMetaPropertyPath(java.lang.String property)
protected FetchPlanBuilder getNestedPropertyBuilder(FetchPlanBuilder builder, java.lang.String name)