...
This class diagram exposes the relations between all those classes :
AttributeType
TODO
Comparator
Here are the fields stored in a Comparator AttributeType instance :
Name | default |
---|---|
description | N/A |
extensions | N/A |
isEnabled | TRUE |
isObsolete | FALSE |
isReadOnly | FALSE |
names | No names |
objectType COMPARATOR | ATTRIBUTE_TYPE |
oid | MR AT OID |
schemaName | N/A |
specification | not modifiable |
canUserModify | TRUE |
bytecode equality | not modifiable MR reference |
fqcn equalityOid | not modifiable |
Adding a comparator
Register the comparator into the ComparatorRegistry :
update the ComparatorRegistry.byOid : add <oid, comparator>
update the ComparatorRegistry.byName : add <oid, comparator>
associate the Comparator with the schema : <schema, set<SchemaObject>> += comparator
Modifying a comparator
Nothing to do but update the comparator in place (replacing all the fields of the original comparator).
Note that all the fields are not modifiables.
Deleting a comparator
We can't delete a comparator if it is used by a MatchingRule. This is check by verifying in
the usedBy table :
if usedBy.get( comparator.oid ) is not empty, generate an error.
This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the ComparatorRegistry.byOid
remove the oid from the ComparatorRegistry.byName
remove the Comparator from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= comparator
DITContentRule
Not Yet Implemented
DITStructureRule
Not Yet Implemented
MatchingRule
TODO
MatchingRuleUse
Not Yet Implemented
NameForm
Not Yet Implemented
...
MR OID | |
isCollective | FALSE |
isSingleValued | FALSE |
ordering | MR reference |
orderingOid | MR OID |
substring | MR reference |
substringOid | MR OID |
superior | AT reference |
superiorOid | MR OID |
syntax | Syntax reference |
syntaxLength | 0 |
syntaxOid | Syntax OID |
usage | userApplications |
Adding an AttributeType
Register the AttributeType into the AttributeTypeRegistry :
update the AttributeTypeRegistry.byOid : add <oid, AttributeType>
update the AttributeTypeRegistry.byName : add <oid, AttributeType>
associate the AttributeType with the schema : <schema, set<SchemaObject>> += AttributeType
Modifying an AttributeType
Deleting an AttributeType
Comparator
Here are the fields stored in a Normalizer Comparator instance :
Name | default | |
---|---|---|
description | N/A | |
extensions | N/A | |
isEnabled | TRUE | |
isObsolete | FALSE | |
isReadOnly | FALSE | |
names | No names | |
objectType | NORMALIZER COMPARATOR | |
oid | MR OID | |
schemaName | N/A | |
specification | not modifiable | |
bytecode | not modifiable | |
fqcn | not modifiable | * |
Adding a Normalizer
Register the Normalizer into the NormalizerRegistry :
update the NormalizerRegistry.byOid : add <oid, Normalizer>
update the NormalizerRegistry.byName : add <oid, Normalizer>
associate the Normalizer with the schema : <schema, set<SchemaObject>> += Normalizer
Modifying a Normalizer
Nothing to do but update the Normalizer in place (replacing all the fields of the original Normalizer).
Note that all the fields are not modifiables.
Deleting a Normalizer
not modifiable |
Adding a comparator
Register the comparator into the ComparatorRegistry :
update the ComparatorRegistry.byOid : add <oid, comparator>
update the ComparatorRegistry.byName : add <oid, comparator>
associate the Comparator with the schema : <schema, set<SchemaObject>> += comparator
Modifying a comparator
Nothing to do but update the comparator in place (replacing all the fields of the original comparator).
Note that all the fields are not modifiables.
Deleting a comparator
We can't delete a comparator if it is used by a MatchingRule. This is checked by verifying in
the usedBy table :
if usedBy.get( comparator.oid ) is not empty, generate an error.
This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the ComparatorRegistry.byOid
remove the oid from the ComparatorRegistry.byName
remove the Comparator from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= comparator
DITContentRule
Not Yet Implemented
DITStructureRule
Not Yet Implemented
MatchingRule
TODO
MatchingRuleUse
Not Yet Implemented
NameForm
Not Yet Implemented
Normalizer (specific)
Here are the fields stored in a Normalizer instance :
Name | default | |
---|---|---|
description | N/A | |
extensions | N/A | |
isEnabled | TRUE | |
isObsolete | FALSE | |
isReadOnly | FALSE | |
names | No names | |
objectType | NORMALIZER | |
oid | MR OID | |
schemaName | N/A | |
specification | not modifiable | |
bytecode | not modifiable | |
fqcn | not modifiable | * |
Adding a Normalizer
Register the Normalizer into the NormalizerRegistry :
update the NormalizerRegistry.byOid : add <oid, Normalizer>
update the NormalizerRegistry.byName : add <oid, Normalizer>
associate the Normalizer with the schema : <schema, set<SchemaObject>> += Normalizer
Modifying a Normalizer
Nothing to do but update the Normalizer in place (replacing all the fields of the original Normalizer).
Note that all the fields are not modifiables.
Deleting a Normalizer
We can't delete a Normalizer if it is used by a MatchingRule. This is checked by verifying in
the usedBy table :
if usedBy.get( Normalizer.oid ) is not empty, generate an error.
This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the NormalizerRegistry.byOid
remove the oid from the NormalizerRegistry.byName
remove the Normalizer from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Normalizer
ObjectClass
TODO
Syntax
Here are the fields stored in a Syntax instance :
Name | default |
---|---|
description | N/A |
extensions | N/A |
isEnabled | TRUE |
isObsolete | FALSE |
isReadOnly | FALSE |
names | No names |
objectType | ATTRIBUTE_TYPE |
oid | AT OID |
schemaName | N/A |
isHumanReadable | FALSE |
syntaxChecker | SC reference |
Adding a Syntax
Register the Syntax into the SyntaxRegistry :
update the SyntaxRegistry.byOid : add <oid, Syntax>
update the SyntaxRegistry.byName : add <oid, Syntax>
associate the Syntax with the schema : <schema, set<SchemaObject>> += Syntax
update the Registries.globalOidRegistry : add <oid, Syntax>
When all the schema modifications will be done, do the additional updates :
update the Syntax.syntaxChecker : SyntaxCheckerRegistry.lookup( oid )
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> += SyntaxChecker
update the Registries.usedBy map : <SyntaxChecker.oid, set<Syntax>> += Syntax
Modifying a Syntax
We won't create a new object, but will update the existing one. The OID can't be changed
If we have changed the SyntaxChecker, when all the schema modifications will be done, do the
additional updates :
update the Syntax.syntaxChecker : SyntaxCheckerRegistry.lookup( oid )
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> -= old SyntaxChecker
update the Registries.using map : <Syntax.oid, set<SyntaxChecker>> += new SyntaxChecker
update the Registries.usedBy map : <old SyntaxChecker.oid, set<Syntax>> -= Syntax
update the Registries.usedBy map : <new SyntaxChecker.oid, set<Syntax>> += Syntax
Deleting a Syntax
We can't delete a schema which is used by either a MatchingRule or an AttributeType. This is checked We can't delete a Normalizer if it is used by a MatchingRule. This is check by verifying in
the usedBy table :
if usedBy.get( Normalizer.oid ) is not empty, generate an error.
This is a more complex operation, as we may have some MatchingRules pointing on this object.
We have to :
remove the oid from the NormalizerRegistry.byOid
remove the oid from the NormalizerRegistry.byName
remove the Normalizer from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Normalizer
ObjectClass
TODO
Syntax
Syntax.oid ) is not empty, generate an error.
Otherwise, here are the operations we have to conduct :
remove the Syntax.oid from the SyntaxRegistry.byOid
for each Syntax' name,
remove the Syntax.name from the SyntaxRegistry.byName
remove the Syntax from the bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= Syntax
When all the schema modifications will be done, do the additional updates :
update the Registries.using map : remove the relation <Syntax.oid, set<SyntaxChecker>>
update the Registries.usedBy map : <SyntaxChecker.oid, set<Syntax>> -= SyntaxTODO
SyntaxChecker (specific)
Here are the fields stored in a SyntaxChecker instance :
Name | default | |
---|---|---|
description | N/A | |
extensions | N/A | |
isEnabled | TRUE | |
isObsolete | FALSE | |
isReadOnly | FALSE | |
names | No names | |
objectType | SYNTAX_CHECKER | |
oid | MR SYNTAX OID | |
schemaName | N/A | |
specification | not modifiable | |
bytecode | not modifiable | |
fqcn | not modifiable | * |
...
We can't delete a SyntaxChecker if it is used by a Syntax. This is check checked by verifying in
the usedBy table :
...
This is a more complex operation, as we may have some Syntax pointing on this object.
We have to :
remove the oid from the SyntaxCheckerRegistry.byOid
remove the oid from the SyntaxCheckerRegistry.byName
remove the SyntaxChecker from the registries bySchemaNameSchemaObject map : <schema, set<SchemaObject>> -= SyntaxChecker
...