Class OfficeFloorBuilderImpl
- java.lang.Object
-
- net.officefloor.frame.impl.construct.officefloor.OfficeFloorBuilderImpl
-
- All Implemented Interfaces:
OfficeFloorBuilder,OfficeFloorConfiguration
public class OfficeFloorBuilderImpl extends java.lang.Object implements OfficeFloorBuilder, OfficeFloorConfiguration
Implementation ofOfficeFloorBuilder.- Author:
- Daniel Sagenschneider
-
-
Constructor Summary
Constructors Constructor Description OfficeFloorBuilderImpl(java.lang.String officeFloorName)Initiate.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <D extends java.lang.Enum<D>,F extends java.lang.Enum<F>,MS extends ManagedObjectSource<D,F>>
ManagedObjectBuilder<F>addManagedObject(java.lang.String managedObjectSourceName, java.lang.Class<MS> managedObjectSourceClass)Adds aManagedObjectSourceto thisOfficeFloorBuilder.<D extends java.lang.Enum<D>,F extends java.lang.Enum<F>>
ManagedObjectBuilder<F>addManagedObject(java.lang.String managedObjectSourceName, ManagedObjectSource<D,F> managedObjectSource)Adds aManagedObjectSourceto thisOfficeFloorBuilder.OfficeBuilderaddOffice(java.lang.String officeName)Adds anOfficeon theOfficeFloor.voidaddOfficeFloorListener(OfficeFloorListener listener)Adds anOfficeFloorListener.voidaddOfficeVisitor(OfficeVisitor visitor)Adds anOfficeVisitor.voidaddProfile(java.lang.String profile)Adds an active profile for theOfficeFloor.voidaddResources(ResourceSource resourceSource)Adds aResourceSourceto locate resources.<TS extends TeamSource>
TeamBuilder<TS>addTeam(java.lang.String teamName, java.lang.Class<TS> teamSourceClass)<TS extends TeamSource>
TeamBuilder<TS>addTeam(java.lang.String teamName, TS teamSource)OfficeFloorbuildOfficeFloor()Builds theOfficeFloor.OfficeFloorbuildOfficeFloor(OfficeFloorIssues issues)Builds theOfficeFloor.TeamConfiguration<?>getBreakChainTeamConfiguration()Obtains the breakFunctionStatechainTeamConfiguration.EscalationHandlergetEscalationHandler()Obtains theEscalationHandlerfor issues escalating out of theOfficeinstances.ExecutiveConfiguration<?>getExecutiveConfiguration()Obtains the configuration of theExecutivefor theOfficeFloor.ManagedObjectSourceConfiguration<?,?>[]getManagedObjectSourceConfiguration()Obtains the configuration of theManagedObjectSourceinstances.longgetMaxStartupWaitTime()Obtains the maximum time in milliseconds to wait forOfficeFloorto start.OfficeConfiguration[]getOfficeConfiguration()Obtains the configuration of theOfficeinstances on theOfficeFloor.java.lang.StringgetOfficeFloorName()Obtains the name of theOfficeFloor.OfficeVisitor[]getOfficeVisitors()Obtains theOfficeVisitorinstances.java.lang.String[]getProfiles()Obtains the profiles.SourceContextgetSourceContext(java.lang.String sourceName, java.util.function.Supplier<ClockFactory> clockFactoryProvider)Obtains theSourceContext.TeamConfiguration<?>[]getTeamConfiguration()Obtains the configuration of theTeaminstances on theOfficeFloor.java.util.function.Consumer<java.lang.Thread>getThreadDecorator()Obtains the decorator ofThreadinstances created by theTeamSourceContext.<TS extends TeamSource>
TeamBuilder<TS>setBreakChainTeam(java.lang.Class<TS> teamSourceClass)Specifies the breakFunctionStatechainTeam.voidsetClassLoader(java.lang.ClassLoader classLoader)Allows overriding theClassLoaderprovided to the sources by theSourceContext.voidsetClockFactory(ClockFactory clockFactory)voidsetEscalationHandler(EscalationHandler escalationHandler)Specifies theEscalationHandlerfor issues escalating out of theOfficeinstances.<XS extends ExecutiveSource>
ExecutiveBuilder<XS>setExecutive(java.lang.Class<XS> executiveSourceClass)<XS extends ExecutiveSource>
ExecutiveBuilder<XS>setExecutive(XS executiveSource)voidsetMaxStartupWaitTime(long maxStartupWaitTime)Specifies the maximum time in milliseconds to wait forOfficeFloorto start.voidsetThreadDecorator(java.util.function.Consumer<java.lang.Thread> decorator)Decorates all theThreadinstances created by theTeamSourceContext.
-
-
-
Constructor Detail
-
OfficeFloorBuilderImpl
public OfficeFloorBuilderImpl(java.lang.String officeFloorName)
Initiate.- Parameters:
officeFloorName- Name of theOfficeFloor.
-
-
Method Detail
-
addProfile
public void addProfile(java.lang.String profile)
Description copied from interface:OfficeFloorBuilderAdds an active profile for theOfficeFloor.- Specified by:
addProfilein interfaceOfficeFloorBuilder- Parameters:
profile- Active profile for theOfficeFloor.
-
setClassLoader
public void setClassLoader(java.lang.ClassLoader classLoader)
Description copied from interface:OfficeFloorBuilderAllows overriding theClassLoaderprovided to the sources by theSourceContext.- Specified by:
setClassLoaderin interfaceOfficeFloorBuilder- Parameters:
classLoader-ClassLoader.
-
setClockFactory
public void setClockFactory(ClockFactory clockFactory)
Description copied from interface:OfficeFloorBuilder- Specified by:
setClockFactoryin interfaceOfficeFloorBuilder- Parameters:
clockFactory-ClockFactory.
-
setMaxStartupWaitTime
public void setMaxStartupWaitTime(long maxStartupWaitTime)
Description copied from interface:OfficeFloorBuilderSpecifies the maximum time in milliseconds to wait forOfficeFloorto start.- Specified by:
setMaxStartupWaitTimein interfaceOfficeFloorBuilder- Parameters:
maxStartupWaitTime- Maximum time in milliseconds to wait forOfficeFloorto start.
-
setThreadDecorator
public void setThreadDecorator(java.util.function.Consumer<java.lang.Thread> decorator)
Description copied from interface:OfficeFloorBuilderDecorates all theThreadinstances created by theTeamSourceContext.- Specified by:
setThreadDecoratorin interfaceOfficeFloorBuilder- Parameters:
decorator- Decorates all theThreadinstances created by theTeamSourceContext.
-
addResources
public void addResources(ResourceSource resourceSource)
Description copied from interface:OfficeFloorBuilderAdds aResourceSourceto locate resources.- Specified by:
addResourcesin interfaceOfficeFloorBuilder- Parameters:
resourceSource-ResourceSource.
-
addOfficeFloorListener
public void addOfficeFloorListener(OfficeFloorListener listener)
Description copied from interface:OfficeFloorBuilderAdds anOfficeFloorListener.- Specified by:
addOfficeFloorListenerin interfaceOfficeFloorBuilder- Parameters:
listener-OfficeFloorListener.
-
addManagedObject
public <D extends java.lang.Enum<D>,F extends java.lang.Enum<F>,MS extends ManagedObjectSource<D,F>> ManagedObjectBuilder<F> addManagedObject(java.lang.String managedObjectSourceName, java.lang.Class<MS> managedObjectSourceClass)
Description copied from interface:OfficeFloorBuilderAdds aManagedObjectSourceto thisOfficeFloorBuilder.- Specified by:
addManagedObjectin interfaceOfficeFloorBuilder- Type Parameters:
D- Dependency key type.F- Flow key type.MS-ManagedObjectSourcetype.- Parameters:
managedObjectSourceName- Name of theManagedObjectSource.managedObjectSourceClass- Class of theManagedObjectSource.- Returns:
ManagedObjectBuilder.
-
addManagedObject
public <D extends java.lang.Enum<D>,F extends java.lang.Enum<F>> ManagedObjectBuilder<F> addManagedObject(java.lang.String managedObjectSourceName, ManagedObjectSource<D,F> managedObjectSource)
Description copied from interface:OfficeFloorBuilderAdds aManagedObjectSourceto thisOfficeFloorBuilder.- Specified by:
addManagedObjectin interfaceOfficeFloorBuilder- Type Parameters:
D- Dependency key type.F- Flow key type.- Parameters:
managedObjectSourceName- Name of theManagedObjectSource.managedObjectSource-ManagedObjectSourceinstance to use.- Returns:
ManagedObjectBuilder.
-
addTeam
public <TS extends TeamSource> TeamBuilder<TS> addTeam(java.lang.String teamName, java.lang.Class<TS> teamSourceClass)
Description copied from interface:OfficeFloorBuilder- Specified by:
addTeamin interfaceOfficeFloorBuilder- Type Parameters:
TS-TeamSourcetype.- Parameters:
teamName- Name to register theTeamunder.teamSourceClass-TeamSourceClassto source theTeam.- Returns:
TeamBuilderto build theTeam.
-
addTeam
public <TS extends TeamSource> TeamBuilder<TS> addTeam(java.lang.String teamName, TS teamSource)
Description copied from interface:OfficeFloorBuilder- Specified by:
addTeamin interfaceOfficeFloorBuilder- Type Parameters:
TS-TeamSourcetype.- Parameters:
teamName- Name to register theTeamunder.teamSource-TeamSourceto source theTeam.- Returns:
TeamBuilderto build theTeam.
-
setExecutive
public <XS extends ExecutiveSource> ExecutiveBuilder<XS> setExecutive(java.lang.Class<XS> executiveSourceClass)
Description copied from interface:OfficeFloorBuilder- Specified by:
setExecutivein interfaceOfficeFloorBuilder- Type Parameters:
XS-ExecutiveSourcetype.- Parameters:
executiveSourceClass-ExecutiveSourceClassto source theExecutive.- Returns:
ExecutiveBuilderto build theExecutive.
-
setExecutive
public <XS extends ExecutiveSource> ExecutiveBuilder<XS> setExecutive(XS executiveSource)
Description copied from interface:OfficeFloorBuilder- Specified by:
setExecutivein interfaceOfficeFloorBuilder- Type Parameters:
XS-ExecutiveSourcetype.- Parameters:
executiveSource-ExecutiveSourceto source theExecutive.- Returns:
ExecutiveBuilderto build theExecutive.
-
setBreakChainTeam
public <TS extends TeamSource> TeamBuilder<TS> setBreakChainTeam(java.lang.Class<TS> teamSourceClass)
Description copied from interface:OfficeFloorBuilderSpecifies the break
FunctionStatechainTeam.This need not be specified, but is available to override the default
Team.- Specified by:
setBreakChainTeamin interfaceOfficeFloorBuilder- Type Parameters:
TS-TeamSourcetype.- Parameters:
teamSourceClass-TeamSourceto source theTeam.- Returns:
TeamBuilderto build theTeam.
-
addOffice
public OfficeBuilder addOffice(java.lang.String officeName)
Description copied from interface:OfficeFloorBuilderAdds anOfficeon theOfficeFloor.- Specified by:
addOfficein interfaceOfficeFloorBuilder- Parameters:
officeName- Name of theOffice.- Returns:
OfficeBuilderto build theOffice.
-
addOfficeVisitor
public void addOfficeVisitor(OfficeVisitor visitor)
Description copied from interface:OfficeFloorBuilderAdds anOfficeVisitor.- Specified by:
addOfficeVisitorin interfaceOfficeFloorBuilder- Parameters:
visitor-OfficeVisitor.
-
setEscalationHandler
public void setEscalationHandler(EscalationHandler escalationHandler)
Description copied from interface:OfficeFloorBuilderSpecifies theEscalationHandlerfor issues escalating out of theOfficeinstances.- Specified by:
setEscalationHandlerin interfaceOfficeFloorBuilder- Parameters:
escalationHandler-EscalationHandler.
-
buildOfficeFloor
public OfficeFloor buildOfficeFloor() throws OfficeFloorBuildException
Description copied from interface:OfficeFloorBuilderBuilds theOfficeFloor.- Specified by:
buildOfficeFloorin interfaceOfficeFloorBuilder- Returns:
- Built
OfficeFloor. - Throws:
OfficeFloorBuildException- If fails to build theOfficeFloor.- See Also:
OfficeFloorBuildException
-
buildOfficeFloor
public OfficeFloor buildOfficeFloor(OfficeFloorIssues issues)
Description copied from interface:OfficeFloorBuilderBuilds theOfficeFloor.- Specified by:
buildOfficeFloorin interfaceOfficeFloorBuilder- Parameters:
issues-OfficeFloorIssuesto listen for issues in constructing theOfficeFloor.- Returns:
- Built
OfficeFloorif successfully built, ornullif could not constructOfficeFloorwith reasons passed to theOfficeFloorIssues.
-
getOfficeFloorName
public java.lang.String getOfficeFloorName()
Description copied from interface:OfficeFloorConfigurationObtains the name of theOfficeFloor.- Specified by:
getOfficeFloorNamein interfaceOfficeFloorConfiguration- Returns:
OfficeFloor.
-
getMaxStartupWaitTime
public long getMaxStartupWaitTime()
Description copied from interface:OfficeFloorConfigurationObtains the maximum time in milliseconds to wait forOfficeFloorto start.- Specified by:
getMaxStartupWaitTimein interfaceOfficeFloorConfiguration- Returns:
- Maximum time in milliseconds to wait for
OfficeFloorto start.
-
getProfiles
public java.lang.String[] getProfiles()
Description copied from interface:OfficeFloorConfigurationObtains the profiles.- Specified by:
getProfilesin interfaceOfficeFloorConfiguration- Returns:
- Profiles.
-
getThreadDecorator
public java.util.function.Consumer<java.lang.Thread> getThreadDecorator()
Description copied from interface:OfficeFloorConfigurationObtains the decorator ofThreadinstances created by theTeamSourceContext.- Specified by:
getThreadDecoratorin interfaceOfficeFloorConfiguration- Returns:
- Decorator of
Threadinstances created by theTeamSourceContext. May benull.
-
getSourceContext
public SourceContext getSourceContext(java.lang.String sourceName, java.util.function.Supplier<ClockFactory> clockFactoryProvider)
Description copied from interface:OfficeFloorConfigurationObtains theSourceContext.- Specified by:
getSourceContextin interfaceOfficeFloorConfiguration- Parameters:
sourceName- Name of source.clockFactoryProvider- ProvidesClockFactoryif one not configured.- Returns:
SourceContext.
-
getManagedObjectSourceConfiguration
public ManagedObjectSourceConfiguration<?,?>[] getManagedObjectSourceConfiguration()
Description copied from interface:OfficeFloorConfigurationObtains the configuration of theManagedObjectSourceinstances.- Specified by:
getManagedObjectSourceConfigurationin interfaceOfficeFloorConfiguration- Returns:
ManagedObjectSourceconfiguration.
-
getTeamConfiguration
public TeamConfiguration<?>[] getTeamConfiguration()
Description copied from interface:OfficeFloorConfigurationObtains the configuration of theTeaminstances on theOfficeFloor.- Specified by:
getTeamConfigurationin interfaceOfficeFloorConfiguration- Returns:
TeamConfigurationinstances.
-
getExecutiveConfiguration
public ExecutiveConfiguration<?> getExecutiveConfiguration()
Description copied from interface:OfficeFloorConfigurationObtains the configuration of theExecutivefor theOfficeFloor.- Specified by:
getExecutiveConfigurationin interfaceOfficeFloorConfiguration- Returns:
ExecutiveConfiguration.
-
getBreakChainTeamConfiguration
public TeamConfiguration<?> getBreakChainTeamConfiguration()
Description copied from interface:OfficeFloorConfigurationObtains the breakFunctionStatechainTeamConfiguration.- Specified by:
getBreakChainTeamConfigurationin interfaceOfficeFloorConfiguration- Returns:
- Break
FunctionStatechainTeamConfiguration.
-
getOfficeConfiguration
public OfficeConfiguration[] getOfficeConfiguration()
Description copied from interface:OfficeFloorConfigurationObtains the configuration of theOfficeinstances on theOfficeFloor.- Specified by:
getOfficeConfigurationin interfaceOfficeFloorConfiguration- Returns:
OfficeConfigurationinstances.
-
getOfficeVisitors
public OfficeVisitor[] getOfficeVisitors()
Description copied from interface:OfficeFloorConfigurationObtains theOfficeVisitorinstances.- Specified by:
getOfficeVisitorsin interfaceOfficeFloorConfiguration- Returns:
OfficeVisitorinstances.
-
getEscalationHandler
public EscalationHandler getEscalationHandler()
Description copied from interface:OfficeFloorConfigurationObtains theEscalationHandlerfor issues escalating out of theOfficeinstances.- Specified by:
getEscalationHandlerin interfaceOfficeFloorConfiguration- Returns:
EscalationHandlerfor issues escalating out of theOfficeinstances. May benull.
-
-