You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2007/04/23 16:57:17 UTC
svn commit: r531489 -
/directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java
Author: pamarcelot
Date: Mon Apr 23 07:57:15 2007
New Revision: 531489
URL: http://svn.apache.org/viewvc?view=rev&rev=531489
Log:
Fixed DIRSTUDIO-83 (Generated LDIF of a schema doesn't support the m-dependencies attribute).
Modified:
directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java
Modified: directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java?view=diff&rev=531489&r1=531488&r2=531489
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-schemas-plugin/src/main/java/org/apache/directory/ldapstudio/schemas/controller/actions/ExportSchemaForADSAction.java Mon Apr 23 07:57:15 2007
@@ -28,7 +28,9 @@
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.naming.NamingException;
@@ -37,6 +39,7 @@
import org.apache.directory.ldapstudio.schemas.model.AttributeType;
import org.apache.directory.ldapstudio.schemas.model.ObjectClass;
import org.apache.directory.ldapstudio.schemas.model.Schema;
+import org.apache.directory.ldapstudio.schemas.model.SchemaPool;
import org.apache.directory.ldapstudio.schemas.view.ViewUtils;
import org.apache.directory.ldapstudio.schemas.view.views.SchemasView;
import org.apache.directory.ldapstudio.schemas.view.views.wrappers.SchemaWrapper;
@@ -131,6 +134,11 @@
sb.append( "objectclass: metaSchema\n" );
sb.append( "objectclass: top\n" );
sb.append( "cn: " + schema.getName() + "\n" );
+ String[] schemaDependencies = getSchemaDependencies( schema );
+ for (String schemaName : schemaDependencies )
+ {
+ sb.append( "m-dependencies: " + schemaName + "\n" );
+ }
sb.append( "\n" );
try
@@ -307,5 +315,84 @@
}
}
}
+ }
+
+
+ /**
+ * Gets the schema dependencies.
+ *
+ * @param schema
+ * the schema
+ * @return
+ * an array containing the names of all the schemas which the given
+ * schema depends on
+ */
+ private String[] getSchemaDependencies( Schema schema )
+ {
+ Set<String> schemaNames = new HashSet<String>();
+ SchemaPool schemaPool = SchemaPool.getInstance();
+
+ // Looping on Attribute Types
+ for ( AttributeType at : schema.getAttributeTypesAsArray() )
+ {
+ // Superior
+ String supName = at.getSuperior();
+ if ( supName != null )
+ {
+ AttributeType sup = schemaPool.getAttributeType( supName );
+ if ( sup != null )
+ {
+ if ( !schema.equals( sup.getOriginatingSchema() ) )
+ {
+ schemaNames.add( sup.getOriginatingSchema().getName() );
+ }
+ }
+ }
+ }
+
+ // Looping on Object Classes
+ for ( ObjectClass oc : schema.getObjectClassesAsArray() )
+ {
+ // Superiors
+ for ( String supName : oc.getSuperiors() )
+ {
+ ObjectClass sup = schemaPool.getObjectClass( supName );
+ if ( sup != null )
+ {
+ if ( !schema.equals( sup.getOriginatingSchema() ) )
+ {
+ schemaNames.add( sup.getOriginatingSchema().getName() );
+ }
+ }
+ }
+
+ // Mays
+ for ( String mayName : oc.getMay() )
+ {
+ AttributeType may = schemaPool.getAttributeType( mayName );
+ if ( may != null )
+ {
+ if ( !schema.equals( may.getOriginatingSchema() ) )
+ {
+ schemaNames.add( may.getOriginatingSchema().getName() );
+ }
+ }
+ }
+
+ // Musts
+ for ( String mustName : oc.getMust() )
+ {
+ AttributeType must = schemaPool.getAttributeType( mustName );
+ if ( must != null )
+ {
+ if ( !schema.equals( must.getOriginatingSchema() ) )
+ {
+ schemaNames.add( must.getOriginatingSchema().getName() );
+ }
+ }
+ }
+ }
+
+ return schemaNames.toArray( new String[0] );
}
}