org.faktorips.runtime.internal
Class AbstractRuntimeRepository

java.lang.Object
  extended by org.faktorips.runtime.internal.AbstractRuntimeRepository
All Implemented Interfaces:
IRuntimeRepository
Direct Known Subclasses:
AbstractCachingRuntimeRepository, InMemoryRuntimeRepository

public abstract class AbstractRuntimeRepository
extends Object
implements IRuntimeRepository

Abstract implementation of runtime repository.

Author:
Jan Ortmann

Constructor Summary
AbstractRuntimeRepository(String name)
           
 
Method Summary
 void addDirectlyReferencedRepository(IRuntimeRepository repository)
          Adds a repository this repository depends on because the one to add contains product data that is referenced from this repository.
 void addEnumValueLookupService(IEnumValueLookupService<?> lookup)
          Adds the service to lookup enumeration values for the enumeration type specified by IEnumValueLookupService.getEnumTypeClass().
protected abstract  List<XmlAdapter<?,?>> getAllInternalEnumXmlAdapters(IRuntimeRepository repository)
          Returns all enumeration XmlAdapters available in this repository that generated by Faktor-IPS.
 List<IpsTest2> getAllIpsTestCases(IRuntimeRepository runtimeRepository)
          Returns a list of all test cases stored in the repository and all repositories this one references.
protected abstract  void getAllIpsTestCases(List<IpsTest2> result, IRuntimeRepository runtimeRepository)
          Same as getAllIpsTestCases(IRuntimeRepository) but searches only in this repository and not the ones, this repository depends on.
 Set<String> getAllModelTypeImplementationClasses()
          Returns a set containing the Java Class names of the implementation classes for all model types available in this repository (either directly or via a referenced repository).
protected abstract  void getAllModelTypeImplementationClasses(Set<String> result)
          Same as getAllModelTypeImplementationClasses() but searches only in this repository and not the ones, this repository depends on.
 List<String> getAllProductComponentIds()
          Returns a list of the IDs of all product components held by this repository or any dependent repository.
protected abstract  void getAllProductComponentIds(List<String> result)
          Same as getAllProductComponentIds() but searches only in this repository and not the ones, this repository depends on.
 List<IProductComponent> getAllProductComponents()
          Returns all product components available in this repository.
<T extends IProductComponent>
List<T>
getAllProductComponents(Class<T> productCmptClass)
          Returns all product components that are instances of the indicated class.
protected abstract  void getAllProductComponents(List<IProductComponent> result)
          Same as getAllProductComponents() but searches only in this repository and not the ones, this repository depends on.
 List<IProductComponent> getAllProductComponents(String kindId)
          Returns all product components that belong to the indicated product component kind.
protected abstract  void getAllProductComponents(String kindId, List<IProductComponent> result)
          Same as getAllProductComponent(String kindId) but searches only in this repository and not the ones, this repository depends on.
protected
<T extends IProductComponent>
void
getAllProductComponentsInternal(Class<T> productCmptClass, List<T> result)
          Same as getAllProductComponents(Class) but only searches in own repository not in referenced ones and adding result to parameter result
 List<IRuntimeRepository> getAllReferencedRepositories()
          Returns all repositories this one depends on directly or indirectly.
 List<ITable> getAllTables()
          Returns all tables available in this repository.
protected abstract  void getAllTables(List<ITable> result)
          Same as getAllTables() but searches only in this repository and not the ones, this repository depends on.
 ClassLoader getClassLoader()
          Returns the class loader that is used to load Java classes by this repository.
<T> T
getCustomRuntimeObject(Class<T> type, String ipsObjectQualifiedName)
          Returns a object of type T, identified by it's qualified name, or null if no such object exists in this repository or it's referenced repositories.
protected abstract
<T> T
getCustomRuntimeObjectInternal(Class<T> type, String ipsObjectQualifiedName)
          Same as getCustomRuntimeObject(Class type, String id) but searches only in this repository and not the ones this repository depends on.
 List<IRuntimeRepository> getDirectlyReferencedRepositories()
          Returns the runtime repositories this one directly depends on.
<T> T
getEnumValue(Class<T> clazz, Object value)
          Returns the enumeration value for the provided enumeration class and string representation of the value.
 Object getEnumValue(String uniqueId)
          Deprecated. This method does only return valid enums if the id attribute of the enum is of type String. You should never use this method! Use getEnumValue(Class, Object) instead. This method may be returned in future releases.
<T> IEnumValueLookupService<T>
getEnumValueLookupService(Class<T> enumClazz)
          Returns the lookup service for the given enumeration type.
<T> List<T>
getEnumValues(Class<T> clazz)
          Returns the type safe List of enumeration values of the provided faktor ips generated enumeration class.
protected
<T> List<T>
getEnumValuesDefinedInType(Class<T> enumClass)
          Returns the values that are defined in the type by a constant called 'VALUES'.
protected abstract
<T> List<T>
getEnumValuesInternal(Class<T> clazz)
          Returns the list of enumeration values of the enumeration type that is identified by its class which is provided to it.
 IProductComponent getExistingProductComponent(String id)
          Returns the product component identified by the given id.
 IProductComponentGeneration getExistingProductComponentGeneration(String id, Calendar effectiveDate)
          Returns the product component generation identified by the id and the effective date.
 IFormulaEvaluatorFactory getFormulaEvaluatorFactory()
          For default there is no formula evaluation supported.
 IpsTest2 getIpsTest(String qName)
          Returns the test (either test case or suite) for the given qualified name.
 IpsTest2 getIpsTest(String qName, IRuntimeRepository runtimeRepository)
          Returns the test (either test case or suite) for the given qualified name.
 IpsTestCaseBase getIpsTestCase(String qName)
          Returns the test case for the given qualified name.
 IpsTestCaseBase getIpsTestCase(String qName, IRuntimeRepository runtimeRepository)
          Returns the test case for the given qualified name.
protected abstract  IpsTestCaseBase getIpsTestCaseInternal(String qName, IRuntimeRepository runtimeRepository)
          Same as getIpsTestCase(String, IRuntimeRepository) but searches only in this repository and not the ones, this repository depends on.
 List<IpsTest2> getIpsTestCasesStartingWith(String qNamePrefix, IRuntimeRepository runtimeRepository)
          Returns a list of test cases starting with the given qualified name prefix stored in the repository and all repositories this one references.
protected abstract  void getIpsTestCasesStartingWith(String qNamePrefix, List<IpsTest2> result, IRuntimeRepository runtimeRepository)
          Gets all ips test cases starting with the given qualified name prefix.
 IpsTestSuite getIpsTestSuite(String qNamePrefix)
          Returns a test suite that contains all tests that have qualified names starting with the given prefix.
 IpsTestSuite getIpsTestSuite(String qNamePrefix, IRuntimeRepository runtimeRepository)
          Returns a test suite that contains all tests that have qualified names starting with the given prefix.
 IProductComponentGeneration getLatestProductComponentGeneration(IProductComponent productCmpt)
          Returns the latest product component generation of the provided product component.
protected abstract  IProductComponentGeneration getLatestProductComponentGenerationInternal(IProductComponent productCmpt)
           
 IModelType getModelType(Class<?> modelObjectClass)
          Returns the IModelType containing the meta information for the given model object class.
 IModelType getModelType(IModelObject modelObject)
          Returns the IModelType containing the meta information for the given model object.
 IModelType getModelType(IProductComponent modelObject)
          Returns the IModelType containing the meta information for the given product component.
 IModelType getModelType(String qualifiedName)
           
 String getName()
          Returns the repository's name.
 IProductComponentGeneration getNextProductComponentGeneration(IProductComponentGeneration generation)
          Returns the product component generation that follows the provided generation with respect to its valid from date.
protected abstract  IProductComponentGeneration getNextProductComponentGenerationInternal(IProductComponentGeneration generation)
           
 int getNumberOfProductComponentGenerations(IProductComponent productCmpt)
          Returns the number of product component generations of the provided product component.
protected abstract  int getNumberOfProductComponentGenerationsInternal(IProductComponent productCmpt)
           
 IProductComponentGeneration getPreviousProductComponentGeneration(IProductComponentGeneration generation)
          Returns the product component generation that is prior to the provided generation with respect to its valid from date.
protected abstract  IProductComponentGeneration getPreviousProductComponentGenerationInternal(IProductComponentGeneration generation)
           
 IProductComponent getProductComponent(String id)
          Returns the product component identified by the given id.
 IProductComponent getProductComponent(String kindId, String versionId)
          Returns the product component identified by the given KindId and versionId.
 IProductComponentGeneration getProductComponentGeneration(String id, Calendar effectiveDate)
          Returns the product component generation identified by the id and the effective date.
protected abstract  IProductComponentGeneration getProductComponentGenerationInternal(String id, Calendar effectiveDate)
          Same as getProductComponentGeneration(String id, Calendar effectiveDate) but searches only in this repository and not the ones, this repository depends on.
 List<IProductComponentGeneration> getProductComponentGenerations(IProductComponent productCmpt)
          Returns all product component generations for the given product component.
abstract  void getProductComponentGenerations(IProductComponent productCmpt, List<IProductComponentGeneration> result)
          Same as getProductComponentGenerations() but searches only in this repository and not the ones, this repository depends on.
protected abstract  IProductComponent getProductComponentInternal(String id)
          Same as getProductComponent(String id) but searches only in this repository and not the ones, this repository depends on.
protected abstract  IProductComponent getProductComponentInternal(String kindId, String versionId)
          Same as getProductComponent(String kindId, String versionId) but searches only in this repository and not the ones, this repository depends on.
 IRuntimeRepositoryLookup getRuntimeRepositoryLookup()
          Returns the IRuntimeRepositoryLookup that was previously set using IRuntimeRepository.setRuntimeRepositoryLookup(IRuntimeRepositoryLookup).
<T extends ITable>
T
getTable(Class<T> tableClass)
          Returns the table contents for the given table class.
 ITable getTable(String qualifiedTableName)
          Returns the table contents for the given qualified table name.
protected abstract
<T extends ITable>
T
getTableInternal(Class<T> tableClass)
          Same as getTable(Class) but searches only in this repository and not the ones, this repository depends on.
protected abstract  ITable getTableInternal(String qualifiedTableName)
          Same as getTable(String)) but searches only in this repository and not the ones, this repository depends on.
 JAXBContext newJAXBContext()
          Creates a new JAXBContext that can marshall / unmarshall all model classes defined in this repository.
 JAXBContext newJAXBContext(JAXBContext ctx)
          Creates a JAXBContext that wraps the provided context and extends the marshaling methods to provide marshaling of Faktor-IPS enumerations and model objects configured by product components.
 void removeEnumValueLookupService(IEnumValueLookupService<?> lookup)
          Removes the lookup service registered for the given enumeration type.
 void setFormulaEvaluatorFactory(IFormulaEvaluatorFactory formulaEvaluatorFactory)
          If you want to support formula evaluation you can set a IFormulaEvaluatorFactory.
 void setRuntimeRepositoryLookup(IRuntimeRepositoryLookup repositoryLookup)
          Setting a IRuntimeRepositoryLookup is needed to enable serialization of policy components.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.faktorips.runtime.IRuntimeRepository
isModifiable
 

Constructor Detail

AbstractRuntimeRepository

public AbstractRuntimeRepository(String name)
Method Detail

getClassLoader

public ClassLoader getClassLoader()
Returns the class loader that is used to load Java classes by this repository.

This default implementation returns the class loader with which this repository class has been loaded.

Specified by:
getClassLoader in interface IRuntimeRepository

getName

public String getName()
Description copied from interface: IRuntimeRepository
Returns the repository's name.

Specified by:
getName in interface IRuntimeRepository

toString

public String toString()
Overrides:
toString in class Object

addDirectlyReferencedRepository

public final void addDirectlyReferencedRepository(IRuntimeRepository repository)
Description copied from interface: IRuntimeRepository
Adds a repository this repository depends on because the one to add contains product data that is referenced from this repository. Access methods like getProductComponent(..) include all repositories this one depends on in their search.

Specified by:
addDirectlyReferencedRepository in interface IRuntimeRepository
Parameters:
repository - The repository to add.

getDirectlyReferencedRepositories

public List<IRuntimeRepository> getDirectlyReferencedRepositories()
Description copied from interface: IRuntimeRepository
Returns the runtime repositories this one directly depends on.

Specified by:
getDirectlyReferencedRepositories in interface IRuntimeRepository

getAllReferencedRepositories

public List<IRuntimeRepository> getAllReferencedRepositories()
Description copied from interface: IRuntimeRepository
Returns all repositories this one depends on directly or indirectly. The order is defined by a breadth first search starting with this repository's direct dependencies. Each repository is only included once even if it is referenced from two others. The list is computed lazy on the first request.

Specified by:
getAllReferencedRepositories in interface IRuntimeRepository

getProductComponent

public final IProductComponent getProductComponent(String id)
Description copied from interface: IRuntimeRepository
Returns the product component identified by the given id. Returns null if the id is null or no component with the indicated id can be found.

Note

How the product component id is structured, is defined as part of the ips project. The definition is called a product component naming (and identification) strategy. The standard strategy is to use the id of the product component kind followed by a separator followed by component's versionId. However it is possible to use completly different strategies for example to create numeric identifiers to reduce the size of indices in a datatbase. In the latter case the product component id can't be derived from the product component kind id and it's version id.

Specified by:
getProductComponent in interface IRuntimeRepository
Parameters:
id - The id of the product component to find.
Returns:
The product component identified by the id or null.

getExistingProductComponent

public final IProductComponent getExistingProductComponent(String id)
Description copied from interface: IRuntimeRepository
Returns the product component identified by the given id. Same as getProductComponent(String id) but throws an exception if the product component is not found. This method never returns null.

Specified by:
getExistingProductComponent in interface IRuntimeRepository
Parameters:
id - The id of the product component to find.
Returns:
The product component identified by the id
See Also:
IRuntimeRepository.getProductComponent(String)

getProductComponentInternal

protected abstract IProductComponent getProductComponentInternal(String id)
Same as getProductComponent(String id) but searches only in this repository and not the ones, this repository depends on.


getProductComponent

public final IProductComponent getProductComponent(String kindId,
                                                   String versionId)
Description copied from interface: IRuntimeRepository
Returns the product component identified by the given KindId and versionId. If versionId is null the most recent version is returned. Returns null if the kindId is null or no component with the indicated kindId and versionId can be found.

Specified by:
getProductComponent in interface IRuntimeRepository
Parameters:
kindId - The product component kind id, e.g. CollisionCoverage
versionId - The versionId to find, e.g. 2005-01
Returns:
The product component identified by the id or null.

getProductComponentInternal

protected abstract IProductComponent getProductComponentInternal(String kindId,
                                                                 String versionId)
Same as getProductComponent(String kindId, String versionId) but searches only in this repository and not the ones, this repository depends on.


getAllProductComponents

public final List<IProductComponent> getAllProductComponents(String kindId)
Description copied from interface: IRuntimeRepository
Returns all product components that belong to the indicated product component kind. Returns an empty array if either kindId is null or no component with the indicated kind is found.

Specified by:
getAllProductComponents in interface IRuntimeRepository
Parameters:
kindId - The product component kind id, e.g. CollisionCoverage

getAllProductComponents

protected abstract void getAllProductComponents(String kindId,
                                                List<IProductComponent> result)
Same as getAllProductComponent(String kindId) but searches only in this repository and not the ones, this repository depends on. Adds the components found to the given result list.


getExistingProductComponentGeneration

public IProductComponentGeneration getExistingProductComponentGeneration(String id,
                                                                         Calendar effectiveDate)
Description copied from interface: IRuntimeRepository
Returns the product component generation identified by the id and the effective date. Same as getProductComponentGeneration(String id, Calendar effectiveDate) but throws an exception if the product component generation is not found. This method never returns null.

Specified by:
getExistingProductComponentGeneration in interface IRuntimeRepository
Parameters:
id - The product component's id.
effectiveDate - The process' effective date
Returns:
The product component generation
See Also:
IRuntimeRepository.getProductComponentGeneration(String, Calendar)

getProductComponentGeneration

public final IProductComponentGeneration getProductComponentGeneration(String id,
                                                                       Calendar effectiveDate)
Description copied from interface: IRuntimeRepository
Returns the product component generation identified by the id and the effective date. Returns null if either the id is null, the effectiveDate is nullor no generation with the indicated id can be found or the product component hasn't got a generation that is effective on the given date.

Specified by:
getProductComponentGeneration in interface IRuntimeRepository
Parameters:
id - The product component's id.
effectiveDate - The process' effective date
Returns:
The product component generation or null.

getProductComponentGenerationInternal

protected abstract IProductComponentGeneration getProductComponentGenerationInternal(String id,
                                                                                     Calendar effectiveDate)
Same as getProductComponentGeneration(String id, Calendar effectiveDate) but searches only in this repository and not the ones, this repository depends on.


getAllProductComponents

public final <T extends IProductComponent> List<T> getAllProductComponents(Class<T> productCmptClass)
Description copied from interface: IRuntimeRepository
Returns all product components that are instances of the indicated class. Returns an empty list if no such component exists.

Specified by:
getAllProductComponents in interface IRuntimeRepository

getAllProductComponentsInternal

protected <T extends IProductComponent> void getAllProductComponentsInternal(Class<T> productCmptClass,
                                                                             List<T> result)
Same as getAllProductComponents(Class) but only searches in own repository not in referenced ones and adding result to parameter result

Parameters:
productCmptClass - The class you want to search product components for
result - adding the found product components to result list

getAllProductComponents

public final List<IProductComponent> getAllProductComponents()
Description copied from interface: IRuntimeRepository
Returns all product components available in this repository. Returns an empty list if no component is available.

Note that this is an expensive operation as all components have to be loaded into memory.

Specified by:
getAllProductComponents in interface IRuntimeRepository

getAllProductComponents

protected abstract void getAllProductComponents(List<IProductComponent> result)
Same as getAllProductComponents() but searches only in this repository and not the ones, this repository depends on. Adds the components found to the given result list.


getProductComponentGenerations

public final List<IProductComponentGeneration> getProductComponentGenerations(IProductComponent productCmpt)
Description copied from interface: IRuntimeRepository
Returns all product component generations for the given product component. Returns an empty list if no generation is available.

The generations are ordered by valid from date in reverse order that means the latest generation (latest valid from date) is the first one, the oldest generation is the last one.

Specified by:
getProductComponentGenerations in interface IRuntimeRepository
Returns:
The list of product component generations ordered by the valid from date in reverse order

getProductComponentGenerations

public abstract void getProductComponentGenerations(IProductComponent productCmpt,
                                                    List<IProductComponentGeneration> result)
Same as getProductComponentGenerations() but searches only in this repository and not the ones, this repository depends on. Adds the components found to the given result list.


getAllProductComponentIds

public final List<String> getAllProductComponentIds()
Description copied from interface: IRuntimeRepository
Returns a list of the IDs of all product components held by this repository or any dependent repository.

Specified by:
getAllProductComponentIds in interface IRuntimeRepository
Returns:
All valid product component IDs that are accessible by this repository.

getAllProductComponentIds

protected abstract void getAllProductComponentIds(List<String> result)
Same as getAllProductComponentIds() but searches only in this repository and not the ones, this repository depends on. Adds the components found to the given result list.


getAllTables

public List<ITable> getAllTables()
Description copied from interface: IRuntimeRepository
Returns all tables available in this repository. Returns an empty list if no table is available.

Note that this is an expensive operation as all tables have to be loaded into memory.

Specified by:
getAllTables in interface IRuntimeRepository

getAllTables

protected abstract void getAllTables(List<ITable> result)
Same as getAllTables() but searches only in this repository and not the ones, this repository depends on. Adds the tables found to the given result list.


getTable

public final <T extends ITable> T getTable(Class<T> tableClass)
Description copied from interface: IRuntimeRepository
Returns the table contents for the given table class.

Specified by:
getTable in interface IRuntimeRepository

getTableInternal

protected abstract <T extends ITable> T getTableInternal(Class<T> tableClass)
Same as getTable(Class) but searches only in this repository and not the ones, this repository depends on.


getTable

public ITable getTable(String qualifiedTableName)
Description copied from interface: IRuntimeRepository
Returns the table contents for the given qualified table name.

Specified by:
getTable in interface IRuntimeRepository

getTableInternal

protected abstract ITable getTableInternal(String qualifiedTableName)
Same as getTable(String)) but searches only in this repository and not the ones, this repository depends on.


getAllIpsTestCases

public final List<IpsTest2> getAllIpsTestCases(IRuntimeRepository runtimeRepository)
Description copied from interface: IRuntimeRepository
Returns a list of all test cases stored in the repository and all repositories this one references. Returns an empty list if none is found.

Specified by:
getAllIpsTestCases in interface IRuntimeRepository

getIpsTestCasesStartingWith

public List<IpsTest2> getIpsTestCasesStartingWith(String qNamePrefix,
                                                  IRuntimeRepository runtimeRepository)
Description copied from interface: IRuntimeRepository
Returns a list of test cases starting with the given qualified name prefix stored in the repository and all repositories this one references. Returns an empty list if none is found.

Specified by:
getIpsTestCasesStartingWith in interface IRuntimeRepository

getAllIpsTestCases

protected abstract void getAllIpsTestCases(List<IpsTest2> result,
                                           IRuntimeRepository runtimeRepository)
Same as getAllIpsTestCases(IRuntimeRepository) but searches only in this repository and not the ones, this repository depends on. Adds the components found to the given result list.


getIpsTestCasesStartingWith

protected abstract void getIpsTestCasesStartingWith(String qNamePrefix,
                                                    List<IpsTest2> result,
                                                    IRuntimeRepository runtimeRepository)
Gets all ips test cases starting with the given qualified name prefix.


getIpsTest

public IpsTest2 getIpsTest(String qName)
Description copied from interface: IRuntimeRepository
Returns the test (either test case or suite) for the given qualified name. If a test is found for the given qualified name, the test is returned. Otherwise a test suite containing all tests that starts with the given qualified name is returned. Returns an empty test suite if no tests are found for the given qualified name.

Specified by:
getIpsTest in interface IRuntimeRepository

getIpsTest

public IpsTest2 getIpsTest(String qName,
                           IRuntimeRepository runtimeRepository)
Description copied from interface: IRuntimeRepository
Returns the test (either test case or suite) for the given qualified name. If a test is found for the given qualified name, the test is returned. Otherwise a test suite containing all tests that starts with the given qualified name is returned. Returns an empty test suite if no tests are found for the given qualified name. The given runtime repository is the repository which will be used to instantiate the test cases.

Specified by:
getIpsTest in interface IRuntimeRepository
See Also:
IRuntimeRepository.getIpsTestCase(java.lang.String)

getIpsTestCase

public IpsTestCaseBase getIpsTestCase(String qName)
Description copied from interface: IRuntimeRepository
Returns the test case for the given qualified name.

Specified by:
getIpsTestCase in interface IRuntimeRepository

getIpsTestCase

public IpsTestCaseBase getIpsTestCase(String qName,
                                      IRuntimeRepository runtimeRepository)
Description copied from interface: IRuntimeRepository
Returns the test case for the given qualified name. The given runtimeRepository will be used to instantiate the test case (this repository is used to search for test cases).
Remark this runtime repository which will be used to search for the given test case can differ from the runtime repository which will be used to instantiate the test case during runtime.
Normaly the runtime repository contains all repositories which are referenced by the project.

Specified by:
getIpsTestCase in interface IRuntimeRepository

getIpsTestCaseInternal

protected abstract IpsTestCaseBase getIpsTestCaseInternal(String qName,
                                                          IRuntimeRepository runtimeRepository)
Same as getIpsTestCase(String, IRuntimeRepository) but searches only in this repository and not the ones, this repository depends on. The given runtimeRepository specifies the repository which will be used to instantiate the test case (e.g. the first repository which contains all dependence repositories).


getIpsTestSuite

public IpsTestSuite getIpsTestSuite(String qNamePrefix)
Description copied from interface: IRuntimeRepository
Returns a test suite that contains all tests that have qualified names starting with the given prefix. Note that if test cases belong to different package fragments the returned test suite contains other testsuites. One suite for each package fragment.

Specified by:
getIpsTestSuite in interface IRuntimeRepository

getIpsTestSuite

public IpsTestSuite getIpsTestSuite(String qNamePrefix,
                                    IRuntimeRepository runtimeRepository)
Description copied from interface: IRuntimeRepository
Returns a test suite that contains all tests that have qualified names starting with the given prefix. Note that if test cases belong to different package fragments the returned test suite contains other testsuites. One suite for each package fragment. The given runtime repository is the repository which will be used to instantiate the test cases.

Specified by:
getIpsTestSuite in interface IRuntimeRepository
See Also:
IRuntimeRepository.getIpsTestCase(java.lang.String)

getNextProductComponentGeneration

public IProductComponentGeneration getNextProductComponentGeneration(IProductComponentGeneration generation)
Description copied from interface: IRuntimeRepository
Returns the product component generation that follows the provided generation with respect to its valid from date.

If there is no further generation this method returns null.

Specified by:
getNextProductComponentGeneration in interface IRuntimeRepository
Returns:
The next generation with respect to the valid from date.

getNextProductComponentGenerationInternal

protected abstract IProductComponentGeneration getNextProductComponentGenerationInternal(IProductComponentGeneration generation)

getNumberOfProductComponentGenerations

public int getNumberOfProductComponentGenerations(IProductComponent productCmpt)
Description copied from interface: IRuntimeRepository
Returns the number of product component generations of the provided product component.

Specified by:
getNumberOfProductComponentGenerations in interface IRuntimeRepository

getNumberOfProductComponentGenerationsInternal

protected abstract int getNumberOfProductComponentGenerationsInternal(IProductComponent productCmpt)

getPreviousProductComponentGeneration

public final IProductComponentGeneration getPreviousProductComponentGeneration(IProductComponentGeneration generation)
Description copied from interface: IRuntimeRepository
Returns the product component generation that is prior to the provided generation with respect to its valid from date.

If there is no previous generation this method returns null.

Specified by:
getPreviousProductComponentGeneration in interface IRuntimeRepository
Returns:
The previous generation with respect to the valid from date.

getPreviousProductComponentGenerationInternal

protected abstract IProductComponentGeneration getPreviousProductComponentGenerationInternal(IProductComponentGeneration generation)

getLatestProductComponentGeneration

public final IProductComponentGeneration getLatestProductComponentGeneration(IProductComponent productCmpt)
Description copied from interface: IRuntimeRepository
Returns the latest product component generation of the provided product component.

Specified by:
getLatestProductComponentGeneration in interface IRuntimeRepository
Returns:
The generation with the latest valid from date

getLatestProductComponentGenerationInternal

protected abstract IProductComponentGeneration getLatestProductComponentGenerationInternal(IProductComponent productCmpt)

getModelType

public IModelType getModelType(Class<?> modelObjectClass)
Description copied from interface: IRuntimeRepository
Returns the IModelType containing the meta information for the given model object class.

Specified by:
getModelType in interface IRuntimeRepository

getModelType

public IModelType getModelType(String qualifiedName)

getModelType

public IModelType getModelType(IModelObject modelObject)
Description copied from interface: IRuntimeRepository
Returns the IModelType containing the meta information for the given model object. This is a convenience method calling getModelType with the model object's class.

Specified by:
getModelType in interface IRuntimeRepository

getModelType

public IModelType getModelType(IProductComponent modelObject)
Description copied from interface: IRuntimeRepository
Returns the IModelType containing the meta information for the given product component. This is a convenience method calling getModelType with the product component class.

Specified by:
getModelType in interface IRuntimeRepository

getAllModelTypeImplementationClasses

public final Set<String> getAllModelTypeImplementationClasses()
Description copied from interface: IRuntimeRepository
Returns a set containing the Java Class names of the implementation classes for all model types available in this repository (either directly or via a referenced repository). For product component types the implementation class for the part that remains unchanged over time is returned. Currently there is no way to get get the implementation class for the product component generation (the part that changed over time).

Returns an empty set if no type is available.

Specified by:
getAllModelTypeImplementationClasses in interface IRuntimeRepository

getAllModelTypeImplementationClasses

protected abstract void getAllModelTypeImplementationClasses(Set<String> result)
Same as getAllModelTypeImplementationClasses() but searches only in this repository and not the ones, this repository depends on. Adds the types found to the given result list.


getEnumValue

@Deprecated
public Object getEnumValue(String uniqueId)
Deprecated. This method does only return valid enums if the id attribute of the enum is of type String. You should never use this method! Use getEnumValue(Class, Object) instead. This method may be returned in future releases.

Description copied from interface: IRuntimeRepository
Returns the enumeration value for the provided unique Id. The unique Id is specified as follows qualifiedClassName'#'valueId.

Specified by:
getEnumValue in interface IRuntimeRepository

getEnumValue

public final <T> T getEnumValue(Class<T> clazz,
                                Object value)
Description copied from interface: IRuntimeRepository
Returns the enumeration value for the provided enumeration class and string representation of the value. If no value is found in the enumeration of the provided enumeration class null will be returned. If the provided class cannot be recognized as a faktor ips enumeration null will be returned. This method is only relevant for faktor ips enumerations whose values are deferred to a content that is hold by this repository.

Specified by:
getEnumValue in interface IRuntimeRepository
Parameters:
clazz - The enumeration class upon which the enumeration value is returned
value - The enum value's identification

getEnumValues

public final <T> List<T> getEnumValues(Class<T> clazz)
Description copied from interface: IRuntimeRepository
Returns the type safe List of enumeration values of the provided faktor ips generated enumeration class. This method is only relevant for faktor ips enumerations whose values are deferred to a content that is hold by this repository.

Specified by:
getEnumValues in interface IRuntimeRepository
Parameters:
clazz - the enumeration class upon which the list of enumeration values is returned
Returns:
The UNMODIFIABLE list of enum values.

getEnumValuesInternal

protected abstract <T> List<T> getEnumValuesInternal(Class<T> clazz)
Returns the list of enumeration values of the enumeration type that is identified by its class which is provided to it.


getEnumValuesDefinedInType

protected <T> List<T> getEnumValuesDefinedInType(Class<T> enumClass)
Returns the values that are defined in the type by a constant called 'VALUES'. If no such constant is available an empty list is returned. If the constant is available but is either not accessible or of wrong type an exception is thrown.

For performance optimization the values are cached in the static map ENUMVALUECACHE. We only check once if there is already a cached value. We disclaim a double checking with synchronization because in worst case two threads simply getting the same result. The ENUMVALUECACHE is realized by a ConcurrentHashMap. Only the first evaluation will be put into the cache using ConcurrentHashMap.putIfAbsent(Object, Object).

Parameters:
enumClass - The class of which you want to get the enumeration values
Returns:
A list of instances of enumClass that are defined as enumeration values of the specified type.

addEnumValueLookupService

public void addEnumValueLookupService(IEnumValueLookupService<?> lookup)
Description copied from interface: IRuntimeRepository
Adds the service to lookup enumeration values for the enumeration type specified by IEnumValueLookupService.getEnumTypeClass(). If a service is already registered for the enumeration type, the new service replaces the old one.

Specified by:
addEnumValueLookupService in interface IRuntimeRepository
Parameters:
lookup - The new lookup service.

getEnumValueLookupService

public <T> IEnumValueLookupService<T> getEnumValueLookupService(Class<T> enumClazz)
Description copied from interface: IRuntimeRepository
Returns the lookup service for the given enumeration type. Returns null if no service is registered for the given type.

Specified by:
getEnumValueLookupService in interface IRuntimeRepository

removeEnumValueLookupService

public void removeEnumValueLookupService(IEnumValueLookupService<?> lookup)
Description copied from interface: IRuntimeRepository
Removes the lookup service registered for the given enumeration type. Does nothing if no such service has been registered.

Specified by:
removeEnumValueLookupService in interface IRuntimeRepository

getAllInternalEnumXmlAdapters

protected abstract List<XmlAdapter<?,?>> getAllInternalEnumXmlAdapters(IRuntimeRepository repository)
Returns all enumeration XmlAdapters available in this repository that generated by Faktor-IPS.

Parameters:
repository - the runtime repository that needs to be used by the XmlAdapters that are returned by this method

newJAXBContext

public JAXBContext newJAXBContext(JAXBContext ctx)
Creates a JAXBContext that wraps the provided context and extends the marshaling methods to provide marshaling of Faktor-IPS enumerations and model objects configured by product components.


newJAXBContext

public JAXBContext newJAXBContext()
Creates a new JAXBContext that can marshall / unmarshall all model classes defined in this repository. If the repository references other repositories (directly or indirectly), the context can also handle the classes defined in those.

Specified by:
newJAXBContext in interface IRuntimeRepository
Throws:
RuntimeException - Exceptions that are thrown while trying to load a class from the class loader or creating the jaxb context are wrapped into a runtime exception

getFormulaEvaluatorFactory

public IFormulaEvaluatorFactory getFormulaEvaluatorFactory()
For default there is no formula evaluation supported.

If you want to support formula evaluation you have to override this method or use setFormulaEvaluatorFactory(IFormulaEvaluatorFactory).

Specified by:
getFormulaEvaluatorFactory in interface IRuntimeRepository
Returns:
The configured formula evaluator or null if no evaluation is supported

setFormulaEvaluatorFactory

public void setFormulaEvaluatorFactory(IFormulaEvaluatorFactory formulaEvaluatorFactory)
If you want to support formula evaluation you can set a IFormulaEvaluatorFactory.


getCustomRuntimeObject

public <T> T getCustomRuntimeObject(Class<T> type,
                                    String ipsObjectQualifiedName)
Description copied from interface: IRuntimeRepository
Returns a object of type T, identified by it's qualified name, or null if no such object exists in this repository or it's referenced repositories. It is up to extensions to define which types can be found in the repository (e.g. a AbstractTocBasedRuntimeRepository could define CustomTocEntryObjects for new types. If there are no objects of the given type, null is returned. If the IRuntimeRepository implementation does not allow custom types, null is returned.

Specified by:
getCustomRuntimeObject in interface IRuntimeRepository
Parameters:
type - a class supported by the IRuntimeRepository implementation
ipsObjectQualifiedName - the qualified name of the object
Returns:
the object identified by qName or null

getCustomRuntimeObjectInternal

protected abstract <T> T getCustomRuntimeObjectInternal(Class<T> type,
                                                        String ipsObjectQualifiedName)
Same as getCustomRuntimeObject(Class type, String id) but searches only in this repository and not the ones this repository depends on.


getRuntimeRepositoryLookup

public IRuntimeRepositoryLookup getRuntimeRepositoryLookup()
Description copied from interface: IRuntimeRepository
Returns the IRuntimeRepositoryLookup that was previously set using IRuntimeRepository.setRuntimeRepositoryLookup(IRuntimeRepositoryLookup). The IRuntimeRepositoryLookup is used for serialization of policy components especially for the ProductConfiguration in configured policy components.

Specified by:
getRuntimeRepositoryLookup in interface IRuntimeRepository
Returns:
A previously set IRuntimeRepositoryLookup that is serialized by a ProductConfiguration and used to load the product component and its generation after deserialization.
See Also:
IRuntimeRepositoryLookup, ProductConfiguration

setRuntimeRepositoryLookup

public void setRuntimeRepositoryLookup(IRuntimeRepositoryLookup repositoryLookup)
Description copied from interface: IRuntimeRepository
Setting a IRuntimeRepositoryLookup is needed to enable serialization of policy components. You need to set a IRuntimeRepositoryLookup before you could serialize any product configured policy component.

Specified by:
setRuntimeRepositoryLookup in interface IRuntimeRepository
Parameters:
repositoryLookup - The IRuntimeRepositoryLookup will provide an instance of this IRuntimeRepository when deserializing a policy component.
See Also:
IRuntimeRepositoryLookup


Copyright © 2015. All rights reserved.