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/08/29 14:32:45 UTC

svn commit: r570782 - in /directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor: model/ model/io/ view/wizards/

Author: pamarcelot
Date: Wed Aug 29 05:32:43 2007
New Revision: 570782

URL: http://svn.apache.org/viewvc?rev=570782&view=rev
Log:
Renamed OnlineSchemaImporter class.
Added ApacheDSSchemaExporter class that commit the new schema to the server.
Updated the Commit Changes Wizard to use the ApacheDSSchemaExporter.

Added:
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaExporter.java
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaImporter.java
      - copied, changed from r570699, directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/OnlineSchemaImporter.java
Removed:
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/OnlineSchemaImporter.java
Modified:
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/DependenciesComputer.java
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java
    directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/CommitChangesWizard.java

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/DependenciesComputer.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/DependenciesComputer.java?rev=570782&r1=570781&r2=570782&view=diff
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/DependenciesComputer.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/DependenciesComputer.java Wed Aug 29 05:32:43 2007
@@ -384,7 +384,7 @@
      *      the dependencies of the schema
      */
     @SuppressWarnings("unchecked")
-    private List<Schema> getDependencies( Schema schema )
+    public List<Schema> getDependencies( Schema schema )
     {
         List<Schema> dependencies = ( List<Schema> ) schemasDependencies.get( schema );
 

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java?rev=570782&r1=570781&r2=570782&view=diff
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/Project.java Wed Aug 29 05:32:43 2007
@@ -25,7 +25,7 @@
 import javax.naming.NamingException;
 
 import org.apache.directory.studio.apacheds.schemaeditor.controller.SchemaHandler;
-import org.apache.directory.studio.apacheds.schemaeditor.model.io.OnlineSchemaImporter;
+import org.apache.directory.studio.apacheds.schemaeditor.model.io.ApacheDSSchemaImporter;
 import org.apache.directory.studio.apacheds.schemaeditor.model.schemachecker.SchemaChecker;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
@@ -256,7 +256,7 @@
         {
             try
             {
-                schemaBackup = OnlineSchemaImporter.getOnlineSchema( connection.getJNDIConnectionWrapper(), monitor );
+                schemaBackup = ApacheDSSchemaImporter.importSchema( connection.getJNDIConnectionWrapper(), monitor );
             }
             catch ( NamingException e )
             {

Added: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaExporter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaExporter.java?rev=570782&view=auto
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaExporter.java (added)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaExporter.java Wed Aug 29 05:32:43 2007
@@ -0,0 +1,189 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.studio.apacheds.schemaeditor.model.io;
+
+
+import java.util.List;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.ldap.Control;
+
+import org.apache.directory.shared.ldap.message.AttributeImpl;
+import org.apache.directory.shared.ldap.message.AttributesImpl;
+import org.apache.directory.studio.apacheds.schemaeditor.model.DependenciesComputer;
+import org.apache.directory.studio.apacheds.schemaeditor.model.Schema;
+import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper;
+
+
+/**
+ * This class is used to import the schema from Apache Directory Server.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ApacheDSSchemaExporter
+{
+    private static final String SCHEMA_BASE_DN = "dc=example,dc=com";
+
+    /** The Dependencies Computer */
+    private DependenciesComputer dependenciesComputer;
+
+    /** The JNDI Connection wrapper */
+    private JNDIConnectionWrapper wrapper;
+
+    /** The Progress Monitor */
+    private StudioProgressMonitor monitor;
+
+    /** The controls used in the request */
+    private Control[] controls = new Control[0];
+
+
+    /**
+     * Export the Schema to the given Apache Directory Server JNDIConnectionWrapper.
+     * @param dependenciesComputer 
+     * 
+     * @param  wrapper
+     *      the JNDIConnectionWrapper
+     * @param monitor 
+     * @throws NamingException 
+     */
+    public void exportSchema( List<Schema> schemas, DependenciesComputer dependenciesComputer,
+        JNDIConnectionWrapper wrapper, StudioProgressMonitor monitor ) throws NamingException
+    {
+        this.dependenciesComputer = dependenciesComputer;
+        this.wrapper = wrapper;
+        this.monitor = monitor;
+
+        monitor.beginTask( "Committing changes:", schemas.size() );
+
+        for ( Schema schema : schemas )
+        {
+            monitor.subTask( "Committing schema '" + schema.getName() + "'" );
+
+            createSchemaEntries( schema );
+
+            monitor.worked( 1 );
+        }
+
+        monitor.done();
+    }
+
+
+    /**
+     * Creates the schema entry WITH all its child nodes (including
+     * attribute types, object classes, etc.).
+     *
+     * @param schema
+     *      the schema
+     */
+    private void createSchemaEntries( Schema schema )
+    {
+        // Creating the schema entry
+        createSchemaEntry( schema );
+
+        // Creating the schema sub-entries
+        String schemaEntryDN = "cn=" + schema.getName() + "," + SCHEMA_BASE_DN;
+        createOrganizationalUnitEntry( "ou=attributeTypes," + schemaEntryDN, "attributeTypes" );
+        createOrganizationalUnitEntry( "ou=comparators," + schemaEntryDN, "comparators" );
+        createOrganizationalUnitEntry( "ou=ditContentRules," + schemaEntryDN, "ditContentRules" );
+        createOrganizationalUnitEntry( "ou=ditStructureRules," + schemaEntryDN, "ditStructureRules" );
+        createOrganizationalUnitEntry( "ou=matchingRules," + schemaEntryDN, "matchingRules" );
+        createOrganizationalUnitEntry( "ou=matchingRuleUse," + schemaEntryDN, "matchingRuleUse" );
+        createOrganizationalUnitEntry( "ou=nameForms," + schemaEntryDN, "nameForms" );
+        createOrganizationalUnitEntry( "ou=normalizers," + schemaEntryDN, "normalizers" );
+        createOrganizationalUnitEntry( "ou=objectClasses," + schemaEntryDN, "objectClasses" );
+        createOrganizationalUnitEntry( "ou=syntaxCheckers," + schemaEntryDN, "syntaxCheckers" );
+        createOrganizationalUnitEntry( "ou=syntaxes," + schemaEntryDN, "syntaxes" );
+    }
+
+
+    /**
+     * Creates the schema entry WITHOUT all its child nodes .
+     *
+     * @param schema
+     *      the schema
+     */
+    private void createSchemaEntry( Schema schema )
+    {
+        // Attribute 'objectClass'
+        Attribute objectClassAttribute = new AttributeImpl( "objectClass" );
+        objectClassAttribute.add( "top" );
+        objectClassAttribute.add( "metaSchema" );
+
+        // Attribute 'cn'
+        Attribute cnAttribute = new AttributeImpl( "cn" );
+        cnAttribute.add( schema.getName() );
+
+        // Attribute 'm-dependencies'
+        Attribute dependenciesAttribute = null;
+        List<Schema> dependencies = dependenciesComputer.getDependencies( schema );
+        if ( ( dependencies != null ) && ( dependencies.size() > 0 ) )
+        {
+            dependenciesAttribute = new AttributeImpl( "m-dependencies" );
+            for ( Schema dependency : dependencies )
+            {
+                dependenciesAttribute.add( dependency.getName() );
+            }
+        }
+
+        // Building attributes
+        Attributes attributes = new AttributesImpl();
+        attributes.put( objectClassAttribute );
+        attributes.put( cnAttribute );
+        if ( dependenciesAttribute != null )
+        {
+            attributes.put( dependenciesAttribute );
+        }
+
+        // Schema entry's DN
+        String dn = "cn=" + schema.getName() + "," + SCHEMA_BASE_DN;
+
+        // Creating the entry
+        wrapper.createEntry( dn, attributes, controls, monitor );
+    }
+
+
+    /**
+     * Creates an OrganizationalUnit entry with the given information.
+     *
+     * @param dn
+     *      the DN
+     * @param ouValue
+     *      the value of the 'ou' attribute
+     */
+    private void createOrganizationalUnitEntry( String dn, String ouValue )
+    {
+        Attribute objectClassAttribute = new AttributeImpl( "objectClass" );
+        objectClassAttribute.add( "top" );
+        objectClassAttribute.add( "organizationalUnit" );
+
+        Attribute ouAttribute = new AttributeImpl( "ou" );
+        ouAttribute.add( ouValue );
+
+        Attributes attributes = new AttributesImpl();
+        attributes.put( objectClassAttribute );
+        attributes.put( ouAttribute );
+
+        wrapper.createEntry( dn, attributes, controls, monitor );
+    }
+}

Copied: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaImporter.java (from r570699, directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/OnlineSchemaImporter.java)
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaImporter.java?p2=directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaImporter.java&p1=directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/OnlineSchemaImporter.java&r1=570699&r2=570782&rev=570782&view=diff
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/OnlineSchemaImporter.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/model/io/ApacheDSSchemaImporter.java Wed Aug 29 05:32:43 2007
@@ -47,7 +47,7 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class OnlineSchemaImporter
+public class ApacheDSSchemaImporter
 {
     /** The Schema DN */
     public static final String SCHEMA_DN = "ou=schema";
@@ -75,7 +75,7 @@
 
 
     /**
-     * Gets the Online Schema of the given Apache Directory Server JNDIConnectionWrapper.
+     * Imports the Schema of the given Apache Directory Server JNDIConnectionWrapper.
      * 
      * @param  wrapper
      * 		the JNDIConnectionWrapper
@@ -83,7 +83,7 @@
      * @throws NamingException 
      */
     @SuppressWarnings("unchecked")
-    public static List<Schema> getOnlineSchema( JNDIConnectionWrapper wrapper, StudioProgressMonitor monitor )
+    public static List<Schema> importSchema( JNDIConnectionWrapper wrapper, StudioProgressMonitor monitor )
         throws NamingException
     {
         List<Schema> schemas = new ArrayList<Schema>();

Modified: directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/CommitChangesWizard.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/CommitChangesWizard.java?rev=570782&r1=570781&r2=570782&view=diff
==============================================================================
--- directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/CommitChangesWizard.java (original)
+++ directory/studio/trunk/studio-apacheds-schemaeditor/src/main/java/org/apache/directory/studio/apacheds/schemaeditor/view/wizards/CommitChangesWizard.java Wed Aug 29 05:32:43 2007
@@ -23,11 +23,15 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
+import javax.naming.NamingException;
+
 import org.apache.directory.studio.apacheds.schemaeditor.Activator;
 import org.apache.directory.studio.apacheds.schemaeditor.model.DependenciesComputer;
 import org.apache.directory.studio.apacheds.schemaeditor.model.Project;
 import org.apache.directory.studio.apacheds.schemaeditor.model.Schema;
 import org.apache.directory.studio.apacheds.schemaeditor.model.DependenciesComputer.DependencyComputerException;
+import org.apache.directory.studio.apacheds.schemaeditor.model.io.ApacheDSSchemaExporter;
+import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -50,6 +54,9 @@
     /** The flag to know if the Schema contains errors */
     private boolean schemaContainsErrors = false;
 
+    /** The project */
+    private Project project;
+
     /** The DependenciesComputer */
     private DependenciesComputer dependenciesComputer;
 
@@ -86,23 +93,16 @@
             {
                 public void run( IProgressMonitor monitor )
                 {
-                    monitor.beginTask( "Committing changes:", orderedSchemas.size() );
-
-                    for ( Schema schema : orderedSchemas )
+                    ApacheDSSchemaExporter exporter = new ApacheDSSchemaExporter();
+                    try
                     {
-                        monitor.subTask( "Committing schema '" + schema.getName() + "'" );
-                        
-                        try
-                        {
-                            Thread.sleep( 500 );
-                        }
-                        catch ( InterruptedException e )
-                        {
-                            // TODO Auto-generated catch block
-                            e.printStackTrace();
-                        }
-                        
-                        // TODO implement
+                        exporter.exportSchema( orderedSchemas, dependenciesComputer, project.getConnection().getJNDIConnectionWrapper(),
+                            new StudioProgressMonitor( monitor ) );
+                    }
+                    catch ( NamingException e )
+                    {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
                     }
                 }
             } );
@@ -145,7 +145,8 @@
     {
         setNeedsProgressMonitor( true );
 
-        Project project = Activator.getDefault().getProjectsHandler().getOpenProject();
+        project = Activator.getDefault().getProjectsHandler().getOpenProject();
+
         try
         {
             dependenciesComputer = new DependenciesComputer( project.getSchemaHandler().getSchemas() );