public final class OdiUserFunction extends oracle.odi.domain.support.AbstractOdiEntity implements oracle.odi.domain.impexp.IExportable, IWorkDevelopmentOdiEntity, oracle.odi.impexp.smartie.ISmartExportable, IUserFunction, oracle.odi.core.audit.support.IAuditableFirstClassObject
Represents design time metadata about a customized function that can be used in expressions of other objects such as
OdiInterface
, OdiUserProcedure
.
OdiUserFunction
is the root entity of OdiUserFunction
- OdiUserFunctionImpl
aggregate. Thus, an instance of OdiUserFunction
controls life cycle of OdiUserFunctionImpl
that belongs to it, and provides auditing informations about this aggregate.
Each OdiUserFunction
can have zero, one or many implementations (OdiUserFunctionImpl
). Each
implementation can support one or many technologies (OdiTechnology
). As the root of aggregate,
OdiUserFunction
manages the mappings between its implementations and technologies. Zero or one (but not
more) OdiUserFunction
's implementation can be declared as default for newly created technologies,
i.e. automatically support them. To define default OdiUserFunctionImpl
user should use
mapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
method, passing the
Collection of technologies to be NOT supported by default implementation.
There are two distinct scopes of OdiUserFunction
: Global
and Project
.
OdiUserFunction
are not bound to a given project and can be used in every
object's expression.
OdiUserFunction
are bound to a single OdiProject
and can only
be used inside expression of objects part of the same OdiProject
.
An OdiUserFunction
is independent from any physical information, thus is not tied to any
OdiTechnology
. As such, functionString
property is just a basic text pattern defining relevant
parameters and types. This functionString
will be replaced during code generation by actual implementation
according relevant technology where the expression will be executed (see OdiUserFunctionImpl
).
Constructor and Description |
---|
OdiUserFunction(OdiProject pProject,
java.lang.String pName,
java.lang.String pGroupName,
java.lang.String pFunctionString)
Constructs a new
OdiUserFunction with the given name, group name and functional string
owned by the given OdiProject . |
OdiUserFunction(java.lang.String pName,
java.lang.String pGroupName,
java.lang.String pFunctionString)
Constructs a new global (i.e.
|
Modifier and Type | Method and Description |
---|---|
OdiUserFunctionImpl |
addImplementation(java.lang.String pImplementationString)
Creates a new implementation of this
OdiUserFunction specified by pImplementationString. |
OdiUserFunctionImpl |
getDefaultImplementation()
Obtains the default
OdiUserFunctionImpl - implementation which automatically supports newly created
technologies. |
java.lang.String |
getDescription()
Obtains the description of this
OdiUserFunction . |
java.lang.String |
getFunctionString()
Obtains the function's string / text of this
OdiUserFunction . |
java.lang.String |
getGroupName()
Obtains group name for this
OdiUserFunction . |
OdiUserFunctionImpl |
getImpl(ITechnology pTechnology,
java.util.List allTechnos)
Gets the implementation for a specific technology.
|
OdiUserFunctionImpl |
getImplementation(OdiTechnology pTechnology,
IOdiTechnologyFinder pFinder)
Obtains the
OdiUserFunctionImpl which supports the given OdiTechnology or null if it is not
supported. |
java.util.Collection |
getImplementations()
Obtains an unmodifiable collection of
OdiUserFunctionImpls related to this OdiUserFunction . |
java.io.Serializable |
getInternalId()
Provides a common getter for the persistence layer to obtain an identity,
irrespective of the actual type of identity used.
|
java.lang.String |
getName()
Obtains the name of this
OdiUserFunction . |
OdiProject |
getProject()
Obtains the
OdiProject this OdiUserFunction belongs to, or null if this
is a global OdiUserFunction . |
IRepositoryEntity |
getSecurityContainer()
Define a generic way to retrieve container for entities.
|
java.util.Collection |
getSupportedTechnologies(OdiUserFunctionImpl pImplementation,
IOdiTechnologyFinder pFinder)
Obtains the Collection of
OdiTechnology s supported by the given OdiUserFunctionImpl . |
java.util.Collection |
getSupportedTechnologyCodes(OdiUserFunctionImpl pImplementation,
java.util.Collection allTechnoCodes) |
java.lang.Number |
getUserFunctionId()
Obtains the ID of this
OdiUserFunction . |
boolean |
isGlobal()
Returns whether this
OdiUserFunction is global, or not. |
boolean |
isInstanceLevelSecurityNeeded()
Internal: this method is for internal purpose and must not be considered
as part of the public API.
|
void |
mapByTechnologyExclusion(OdiUserFunctionImpl pDefaultImpl,
java.util.Collection pExcludedTechnologies,
IOdiTechnologyFinder pFinder)
Specify the implementation becoming default and
OdiTechnology s that will not be supported by it. |
void |
mapByTechnologyInclusion(OdiUserFunctionImpl pImpl,
java.util.Collection pIncludedTechnologies,
IOdiTechnologyFinder pFinder)
Specify the
OdiTechnology s that will be supported by the given OdiUserFunctionImpl . |
void |
removeImplementation(OdiUserFunctionImpl pImplementation)
Remove the given implementation (
OdiUserFunctionImpl ) of this OdiUserFunction . |
void |
setDescription(java.lang.String pDescription)
Sets the description of this
OdiUserFunction . |
void |
setFunctionString(java.lang.String pFunctionString)
Specifies the function string value.
|
void |
setGroupName(java.lang.String pGroupName)
Sets the group name of this
OdiUserFunction . |
void |
setName(java.lang.String pName)
Sets the name of this
OdiUserFunction . |
void |
unmapByTechnologyExclusion(IOdiTechnologyFinder pFinder)
Finds the default
OdiUserFunctionImpl and make it non-default. |
equals, getFirstDate, getFirstUser, getInternalVersion, getLastDate, getLastUser, hashCode, isNew, preCommit, toString
getGlobalId, getNumericId, hasCustomizedPersistenceMethodFor, invokeCustomizedPersistenceMethodFor
getFirstDate, getFirstUser, getLastDate, getLastUser
getGlobalId
getGlobalId, getNumericId
public OdiUserFunction(java.lang.String pName, java.lang.String pGroupName, java.lang.String pFunctionString)
OdiUserFunction
with
the given name, group name and functional string.pName
- - the name of the User FunctionpGroupName
- - the group name for the User FunctionpFunctionString
- - the function's string / text of the User FunctionDomainRuntimeException
- if pName, pGroupName or pFunctionString is null or empty or
if pName or pGroupName is longer than NAME_MAX_LENGTHNAME_MAX_LENGTH
public OdiUserFunction(OdiProject pProject, java.lang.String pName, java.lang.String pGroupName, java.lang.String pFunctionString)
OdiUserFunction
with the given name, group name and functional string
owned by the given OdiProject
.pProject
- - the owning projectpName
- - the name of the User FunctionpGroupName
- - the group name for the User FunctionpFunctionString
- - the function's string / text of the User FunctionDomainRuntimeException
- if pName, pGroupName or pFunctionString is null or empty or
if pName or pGroupName is longer than NAME_MAX_LENGTHNAME_MAX_LENGTH
public java.lang.Number getUserFunctionId()
OdiUserFunction
.OdiUserFunction
IDpublic java.lang.String getName()
OdiUserFunction
.getName
in interface IModelObject
getName
in interface IOdiEntity
getName
in class oracle.odi.domain.support.AbstractOdiEntity
OdiUserFunction
namesetName(String)
public boolean isInstanceLevelSecurityNeeded()
IOdiEntity
Defines a method to capture the info on which object needs instance level privilege.
isInstanceLevelSecurityNeeded
in interface IOdiEntity
isInstanceLevelSecurityNeeded
in class oracle.odi.domain.support.AbstractOdiEntity
true
if instance level security needed,
false
otherwisepublic IRepositoryEntity getSecurityContainer()
IRepositoryEntity
getSecurityContainer
in interface IRepositoryEntity
public OdiProject getProject()
OdiProject
this OdiUserFunction
belongs to, or null if this
is a global OdiUserFunction
.getProject
in interface IUserFunction
OdiProject
this OdiUserFunction
belongs topublic java.lang.String getFunctionString()
OdiUserFunction
.getFunctionString
in interface IUserFunction
setFunctionString(String)
public boolean isGlobal()
OdiUserFunction
is global, or not.
(true if this is a Global Scope
OdiUserFunction
, false if this is a
Project Scope
OdiUserFunction
).OdiUserFunction
is global, or notpublic java.lang.String getGroupName()
OdiUserFunction
. OdiUserFunction
can be grouped
using this property.getGroupName
in interface IUserFunction
setGroupName(String)
public java.lang.String getDescription()
OdiUserFunction
.getDescription
in interface IUserFunction
setDescription(String)
public java.util.Collection getImplementations()
OdiUserFunctionImpls
related to this OdiUserFunction
.public java.io.Serializable getInternalId()
IRepositoryEntity
Typically a subclass will delegate to a public
SomePrimitiveWrapper getId()
method. The necessity for the
getInternalId()
abstract method is solely because the
persistence layer needs a way of obtaining the identity irrespective of
the actual identity implementation choice.
Returning null
from this method will indicate the object has
never been saved. This will likely be relied on by some DAO
implementations.
getInternalId
in interface IRepositoryEntity
public void setFunctionString(java.lang.String pFunctionString)
pFunctionString
- a String specifying the function string valueDomainRuntimeException
- if the pFunctionString is null or emptygetFunctionString()
public void setName(java.lang.String pName)
OdiUserFunction
.pName
- nameDomainRuntimeException
- if the pName is null, empty or longer than NAME_MAX_LENGTHgetName()
public void setGroupName(java.lang.String pGroupName)
OdiUserFunction
. OdiUserFunction
can be grouped
using this property.pGroupName
- group nameDomainRuntimeException
- if the pGroupName is null, empty or longer than NAME_MAX_LENGTHgetGroupName()
public void setDescription(java.lang.String pDescription)
OdiUserFunction
.pDescription
- descriptiongetDescription()
public OdiUserFunctionImpl addImplementation(java.lang.String pImplementationString)
OdiUserFunction
specified by pImplementationString.pImplementationString
- implementation stringOdiUserFunctionImpl
instanceDomainRuntimeException
- if pImplementationString is null or emptyremoveImplementation(OdiUserFunctionImpl)
public void removeImplementation(OdiUserFunctionImpl pImplementation)
OdiUserFunctionImpl
) of this OdiUserFunction
.pImplementation
- OdiUserFunctionImpl
to removeDomainRuntimeException
- if pImplementation is null or pImplementation does not belong to
this OdiUserFunction
addImplementation(String)
public java.util.Collection getSupportedTechnologies(OdiUserFunctionImpl pImplementation, IOdiTechnologyFinder pFinder)
OdiTechnology
s supported by the given OdiUserFunctionImpl
.pImplementation
- OdiUserFunctionImpl
belonging to this OdiUserFunction
pFinder
- technology finderOdiTechnology
s CollectionDomainRuntimeException
- if the given IOdiTechnologyFinder
is null or pImplementation
does not belong to this OdiUserFunction
public void mapByTechnologyExclusion(OdiUserFunctionImpl pDefaultImpl, java.util.Collection pExcludedTechnologies, IOdiTechnologyFinder pFinder)
Specify the implementation becoming default and OdiTechnology
s that will not be supported by it.
I.e. given OdiUserFunctionImpl
will support all other (not in pExcludedTechnologies) and all new created
OdiTechnology
s.
Thus, make sure you exclude all Technologies already supported by other OdiUserFunction
's
implementations.
Within a single OdiUserFunction
you can have only one default implementation.
pDefaultImpl
- OdiUserFunctionImpl
belonging to this OdiUserFunction
pExcludedTechnologies
- Collection of OdiTechnology
s to be excludedpFinder
- technology finderDomainRuntimeException
- if pImpl, pExcludedTechnologies or pFinder is nulljava.lang.IllegalStateException
- if default implementation already existsmapByTechnologyInclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
public void unmapByTechnologyExclusion(IOdiTechnologyFinder pFinder)
OdiUserFunctionImpl
and make it non-default. This means that
implementation will not automatically support new created OdiTechnology
s. The set of its
currently supported technologies is not changed (become mapped by Technology inclusion).pFinder
- technology finderDomainRuntimeException
- if pFinder is nullmapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
,
mapByTechnologyInclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
public void mapByTechnologyInclusion(OdiUserFunctionImpl pImpl, java.util.Collection pIncludedTechnologies, IOdiTechnologyFinder pFinder)
OdiTechnology
s that will be supported by the given OdiUserFunctionImpl
.pImpl
- OdiUserFunctionImpl
belonging to this OdiUserFunction
pIncludedTechnologies
- Collection of OdiTechnology
s to be supportedpFinder
- technology finderDomainRuntimeException
- if pImpl, pIncludedTechnologies or pFinder is nullmapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
public OdiUserFunctionImpl getDefaultImplementation()
Obtains the default OdiUserFunctionImpl
- implementation which automatically supports newly created
technologies. Each OdiUserFunction
can have zero or one default implementation. Thus, method
returns null
if none OdiUserFunctionImpl
is default.
The default implementation can be defined using
mapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
method.
OdiUserFunctionImpl
mapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
public OdiUserFunctionImpl getImplementation(OdiTechnology pTechnology, IOdiTechnologyFinder pFinder)
OdiUserFunctionImpl
which supports the given OdiTechnology
or null if it is not
supported.pTechnology
- technologypFinder
- technology findermapByTechnologyExclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
,
mapByTechnologyInclusion(OdiUserFunctionImpl, Collection, IOdiTechnologyFinder)
public OdiUserFunctionImpl getImpl(ITechnology pTechnology, java.util.List allTechnos)
IUserFunction
getImpl
in interface IUserFunction
allTechnos
- a list of all the technology objects available in the connected repository. Used to
find possible matching implementations in other technologies.public java.util.Collection getSupportedTechnologyCodes(OdiUserFunctionImpl pImplementation, java.util.Collection allTechnoCodes)