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 2008/09/09 18:01:57 UTC

svn commit: r693503 - /directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java

Author: pamarcelot
Date: Tue Sep  9 09:01:57 2008
New Revision: 693503

URL: http://svn.apache.org/viewvc?rev=693503&view=rev
Log:
Part of a fix for DIRSTUDIO-355 (DSML Import and Export fail with "Internal Error: null").
	o Added initial code to get the DSML Import working again.

Modified:
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java?rev=693503&r1=693502&r2=693503&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java (original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportDsmlJob.java Tue Sep  9 09:01:57 2008
@@ -21,20 +21,27 @@
 package org.apache.directory.studio.ldapbrowser.core.jobs;
 
 
+import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.PrintStream;
+import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.directory.shared.ldap.codec.LdapResponse;
-import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.codec.add.AddRequest;
+import org.apache.directory.shared.ldap.codec.compare.CompareRequest;
+import org.apache.directory.shared.ldap.codec.del.DelRequest;
+import org.apache.directory.shared.ldap.codec.extended.ExtendedRequest;
+import org.apache.directory.shared.ldap.codec.modify.ModifyRequest;
+import org.apache.directory.shared.ldap.codec.modifyDn.ModifyDNRequest;
+import org.apache.directory.shared.ldap.codec.search.SearchRequest;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.jobs.StudioProgressMonitor;
-import org.apache.directory.studio.dsmlv2.Dsmlv2ResponseParser;
-import org.apache.directory.studio.dsmlv2.engine.Dsmlv2Engine;
-import org.apache.directory.studio.dsmlv2.reponse.ErrorResponse;
+import org.apache.directory.studio.dsmlv2.Dsmlv2Parser;
+import org.apache.directory.studio.dsmlv2.reponse.BatchResponseDsml;
+import org.apache.directory.studio.dsmlv2.request.BatchRequest;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 
@@ -110,7 +117,7 @@
      */
     protected Object[] getLockedObjects()
     {
-        List l = new ArrayList();
+        List<Object> l = new ArrayList<Object>();
         l.add( browserConnection.getUrl() + "_" + DigestUtils.shaHex( dsmlFile.toString() ) );
         return l.toArray();
     }
@@ -121,47 +128,44 @@
      */
     protected void executeAsyncJob( StudioProgressMonitor monitor )
     {
-
         monitor.beginTask( BrowserCoreMessages.jobs__import_dsml_task, 2 );
         monitor.reportProgress( " " ); //$NON-NLS-1$
         monitor.worked( 1 );
-        
-        Dsmlv2Engine engine = new Dsmlv2Engine( browserConnection.getConnection().getHost(), browserConnection
-            .getConnection().getPort(), browserConnection.getConnection().getBindPrincipal(), browserConnection
-            .getConnection().getBindPassword() );
+
         try
         {
-            // Executing the DSML request and getting the response
-            String response = engine.processDSMLFile( dsmlFile.getAbsolutePath() );
-            
-            // Saving Response if needed
+            // Parsing the file
+            Dsmlv2Parser parser = new Dsmlv2Parser();
+            parser.setInput( new FileInputStream( dsmlFile ), "UTF-8" );
+            parser.parseAllRequests();
+
+            // Getting the batch request
+            BatchRequest batchRequest = parser.getBatchRequest();
+
+            // Creating a DSML batch response (only if needed)
+            BatchResponseDsml batchResponseDsml = null;
             if ( responseFile != null )
             {
-                FileOutputStream fout = new FileOutputStream( responseFile );
-                new PrintStream( fout ).println( response );
-                fout.close();
+                batchResponseDsml = new BatchResponseDsml();
             }
-            
-            // Processing Reponse (Reading and displaying possible errors)
-            int errorCount = 0;
-            Dsmlv2ResponseParser responseParser = new Dsmlv2ResponseParser();
-            responseParser.setInput( response );
-            LdapResponse ldapResponse = responseParser.getNextResponse();
-            while ( ldapResponse != null )
+
+            // Processing each request
+            List<?> requests = batchRequest.getRequests();
+            for ( Object request : requests )
             {
-                if ( ( ldapResponse instanceof ErrorResponse ) 
-                     || ( ldapResponse.getLdapResult().getResultCode() != ResultCodeEnum.SUCCESS ) )
-                {
-                    errorCount++;
-                }
-                ldapResponse = responseParser.getNextResponse();
+                processRequest( request, batchResponseDsml );
             }
-            
-            if ( errorCount > 0 )
+
+            // Writing the DSML response file to its final destination file.
+            if ( responseFile != null )
             {
-                monitor.reportError( BrowserCoreMessages.bind(
-                        BrowserCoreMessages.dsml__n_errors_see_responsefile, new String[]
-                            { "" + errorCount } ) ); //$NON-NLS-1$
+                FileOutputStream fos = new FileOutputStream( responseFile );
+                OutputStreamWriter osw = new OutputStreamWriter( fos );
+                BufferedWriter bufferedWriter = new BufferedWriter( osw );
+                bufferedWriter.write( batchResponseDsml.toDsml() );
+                bufferedWriter.close();
+                osw.close();
+                fos.close();
             }
         }
         catch ( Exception e )
@@ -171,6 +175,48 @@
     }
 
 
+    private void processRequest( Object request, BatchResponseDsml batchResponseDsml )
+    {
+        if ( request instanceof AddRequest )
+        {
+            AddRequest addRequest = ( AddRequest ) request;
+
+        }
+        else if ( request instanceof CompareRequest )
+        {
+            CompareRequest compareRequest = ( CompareRequest ) request;
+
+        }
+        else if ( request instanceof DelRequest )
+        {
+            DelRequest delRequest = ( DelRequest ) request;
+
+        }
+        else if ( request instanceof ExtendedRequest )
+        {
+            ExtendedRequest extendedRequest = ( ExtendedRequest ) request;
+
+        }
+        else if ( request instanceof ModifyRequest )
+        {
+            ModifyRequest modifyRequest = ( ModifyRequest ) request;
+
+        }
+        else if ( request instanceof ModifyDNRequest )
+        {
+            ModifyDNRequest modifyDNRequest = ( ModifyDNRequest ) request;
+
+        }
+        else if ( request instanceof SearchRequest )
+        {
+            SearchRequest searchRequest = ( SearchRequest ) request;
+
+        }
+
+        System.out.println( request );
+    }
+
+
     /* (non-Javadoc)
      * @see org.apache.directory.studio.ldapbrowser.core.jobs.AbstractEclipseJob#getErrorMessage()
      */