You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2009/08/27 20:32:23 UTC
svn commit: r808562 -
/directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java
Author: akarasulu
Date: Thu Aug 27 18:32:23 2009
New Revision: 808562
URL: http://svn.apache.org/viewvc?rev=808562&view=rev
Log:
implemented more of the loader to handle various schema object types
Modified:
directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java
Modified: directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java?rev=808562&r1=808561&r2=808562&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java (original)
+++ directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java Thu Aug 27 18:32:23 2009
@@ -20,8 +20,17 @@
package org.apache.directory.server.schema.loader.ldif;
+import org.apache.directory.shared.ldap.NotImplementedException;
+import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.DITContentRule;
+import org.apache.directory.shared.ldap.schema.DITStructureRule;
import org.apache.directory.shared.ldap.schema.LdapComparator;
+import org.apache.directory.shared.ldap.schema.LdapSyntax;
+import org.apache.directory.shared.ldap.schema.MatchingRule;
+import org.apache.directory.shared.ldap.schema.MatchingRuleUse;
+import org.apache.directory.shared.ldap.schema.NameForm;
import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
import org.apache.directory.shared.ldap.schema.SyntaxChecker;
import org.apache.directory.shared.ldap.schema.registries.AbstractSchemaLoader;
import org.apache.directory.shared.ldap.schema.registries.Schema;
@@ -58,15 +67,39 @@
/** Speedup for DEBUG mode */
private static final boolean IS_DEBUG = LOG.isDebugEnabled();
- /** name of directory containing LdapComparators */
+ /** name of directory containing ldapComparators */
private static final String COMPARATORS_DIRNAME = "comparators";
- /** name of directory containing SyntaxCheckers */
+ /** name of directory containing syntaxCheckers */
private static final String SYNTAX_CHECKERS_DIRNAME = "syntaxCheckers";
- /** name of the directory containing Normalizers */
+ /** name of the directory containing normalizers */
private static final String NORMALIZERS_DIRNAME = "normalizers";
+ /** name of the directory containing syntaxes */
+ private static final String SYNTAXES_DIRNAME = "syntaxes";
+
+ /** name of the directory containing attributeTypes */
+ private static final String ATTRIBUTE_TYPES_DIRNAME = "attributeTypes";
+
+ /** name of the directory containing matchingRules */
+ private final static String MATCHING_RULES_DIRNAME = "matchingRules";
+
+ /** name of the directory containing objectClasses */
+ private static final String OBJECT_CLASSES_DIRNAME = "objectClasses";
+
+ /** name of the directory containing ditStructureRules */
+ private static final String DIT_STRUCTURE_RULES_DIRNAME = "ditStructureRules";
+
+ /** name of the directory containing ditContentRules */
+ private static final String DIT_CONTENT_RULES_DIRNAME = "ditContentRules";
+
+ /** name of the directory containing nameForms */
+ private static final String NAME_FORMS_DIRNAME = "nameForms";
+
+ /** name of the directory containing matchingRuleUses */
+ private static final String MATCHING_RULE_USES_DIRNAME = "matchingRuleUse";
+
private final SchemaEntityFactory factory = new SchemaEntityFactory();
private final File baseDirectory;
private final Map<String,Schema> schemaMap = new HashMap<String,Schema>();
@@ -194,8 +227,16 @@
loadSyntaxCheckers( schema, registries );
loadComparators( schema, registries );
loadNormalizers( schema, registries );
+ loadSyntaxes( schema, registries );
+ loadMatchingRules( schema, registries );
+ loadAttributeTypes( schema, registries );
+ loadObjectClasses( schema, registries );
+ loadDitStructureRules( schema, registries );
+ loadDitContentRules( schema, registries );
+ loadNameForms( schema, registries );
+ loadMatchingRuleUses( schema, registries );
}
-
+
private File getSchemaDirectory( Schema schema )
{
@@ -250,4 +291,160 @@
targetRegistries.getNormalizerRegistry().register( normalizer );
}
}
+
+
+ private void loadMatchingRules( Schema schema, Registries registries ) throws Exception
+ {
+ File matchingRulesDirectory = new File( getSchemaDirectory( schema ),
+ MATCHING_RULES_DIRNAME );
+ File[] matchingRuleFiles = matchingRulesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : matchingRuleFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ MatchingRule matchingRule = factory.getMatchingRule(
+ entry.getEntry(), registries, schema.getSchemaName() );
+ registries.getMatchingRuleRegistry().register( matchingRule );
+ }
+ }
+
+
+ private void loadSyntaxes( Schema schema, Registries registries ) throws Exception
+ {
+ File syntaxesDirectory = new File( getSchemaDirectory( schema ),
+ SYNTAXES_DIRNAME );
+ File[] syntaxFiles = syntaxesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : syntaxFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ LdapSyntax syntax = factory.getSyntax(
+ entry.getEntry(), registries, schema.getSchemaName() );
+ registries.getLdapSyntaxRegistry().register( syntax );
+ }
+ }
+
+
+ private void loadAttributeTypes( Schema schema, Registries registries ) throws Exception
+ {
+ File attributeTypeDirectory = new File ( getSchemaDirectory( schema ),
+ ATTRIBUTE_TYPES_DIRNAME );
+ File[] attributeTypeFiles = attributeTypeDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : attributeTypeFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ AttributeType attributeType = factory.getAttributeType(
+ entry.getEntry(), registries, schema.getSchemaName() );
+ registries.getAttributeTypeRegistry().register( attributeType );
+ }
+ }
+
+
+ private void loadMatchingRuleUses( Schema schema, Registries registries ) throws Exception
+ {
+ File matchingRuleUsesDirectory = new File( getSchemaDirectory( schema ),
+ MATCHING_RULE_USES_DIRNAME );
+ File[] matchingRuleUseFiles = matchingRuleUsesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : matchingRuleUseFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ MatchingRuleUse matchingRuleUse = null;
+
+ // TODO add factory method to generate the matchingRuleUse
+ if ( true )
+ {
+ throw new NotImplementedException( "Need to implement factory " +
+ "method for creating a matchingRuleUse" );
+ }
+
+ registries.getMatchingRuleUseRegistry().register( matchingRuleUse );
+ }
+ }
+
+
+ private void loadNameForms( Schema schema, Registries registries ) throws Exception
+ {
+ File nameFormsDirectory = new File( getSchemaDirectory( schema ),
+ NAME_FORMS_DIRNAME );
+ File[] nameFormFiles = nameFormsDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : nameFormFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ NameForm nameForm = null;
+
+ // TODO add factory method to generate the nameForm
+ if ( true )
+ {
+ throw new NotImplementedException( "Need to implement factory " +
+ "method for creating a nameForm" );
+ }
+
+ registries.getNameFormRegistry().register( nameForm );
+ }
+ }
+
+
+ private void loadDitContentRules( Schema schema, Registries registries ) throws Exception
+ {
+ File ditContentRulesDirectory = new File( getSchemaDirectory( schema ),
+ DIT_CONTENT_RULES_DIRNAME );
+ File[] ditContentRuleFiles = ditContentRulesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : ditContentRuleFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ DITContentRule ditContentRule = null;
+
+ // TODO add factory method to generate the ditContentRule
+ if ( true )
+ {
+ throw new NotImplementedException( "Need to implement factory " +
+ "method for creating a ditContentRule" );
+ }
+
+ registries.getDitContentRuleRegistry().register( ditContentRule );
+ }
+ }
+
+
+ private void loadDitStructureRules( Schema schema, Registries registries ) throws Exception
+ {
+ File ditStructureRulesDirectory = new File( getSchemaDirectory( schema ),
+ DIT_STRUCTURE_RULES_DIRNAME );
+ File[] ditStructureRuleFiles = ditStructureRulesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : ditStructureRuleFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ DITStructureRule ditStructureRule = null;
+
+ // TODO add factory method to generate the ditContentRule
+ if ( true )
+ {
+ throw new NotImplementedException( "Need to implement factory " +
+ "method for creating a ditStructureRule" );
+ }
+
+ registries.getDitStructureRuleRegistry().register( ditStructureRule );
+ }
+ }
+
+
+ private void loadObjectClasses( Schema schema, Registries registries ) throws Exception
+ {
+ File objectClassesDirectory = new File( getSchemaDirectory( schema ),
+ OBJECT_CLASSES_DIRNAME );
+ File[] objectClassFiles = objectClassesDirectory.listFiles( ldifFilter );
+ for ( File ldifFile : objectClassFiles )
+ {
+ LdifReader reader = new LdifReader( ldifFile );
+ LdifEntry entry = reader.next();
+ ObjectClass objectClass = factory.getObjectClass(
+ entry.getEntry(), registries, schema.getSchemaName() );
+ registries.getObjectClassRegistry().register( objectClass );
+ }
+ }
}