1 20 21 package org.apache.directory.ldapstudio.browser.core.jobs; 22 23 24 import java.io.File ; 25 import java.io.FileOutputStream ; 26 import java.io.PrintStream ; 27 import java.util.ArrayList ; 28 import java.util.List ; 29 30 import org.apache.commons.codec.digest.DigestUtils; 31 import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages; 32 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 33 import org.apache.directory.ldapstudio.dsmlv2.Dsmlv2ResponseParser; 34 import org.apache.directory.ldapstudio.dsmlv2.engine.Dsmlv2Engine; 35 import org.apache.directory.ldapstudio.dsmlv2.reponse.ErrorResponse; 36 import org.apache.directory.shared.ldap.codec.LdapResponse; 37 import org.apache.directory.shared.ldap.message.ResultCodeEnum; 38 39 40 46 public class ImportDsmlJob extends AbstractEclipseJob 47 { 48 49 private IConnection connection; 50 51 52 private File dsmlFile; 53 54 55 private File responseFile; 56 57 58 70 public ImportDsmlJob( IConnection connection, File dsmlFile, File saveFile ) 71 { 72 this.connection = connection; 73 this.dsmlFile = dsmlFile; 74 this.responseFile = saveFile; 75 76 setName( BrowserCoreMessages.jobs__import_dsml_name ); 77 } 78 79 80 90 public ImportDsmlJob( IConnection connection, File dsmlFile ) 91 { 92 this( connection, dsmlFile, null ); 93 } 94 95 96 99 protected IConnection[] getConnections() 100 { 101 return new IConnection[] 102 { connection }; 103 } 104 105 106 109 protected Object [] getLockedObjects() 110 { 111 List l = new ArrayList (); 112 l.add( connection.getUrl() + "_" + DigestUtils.shaHex( dsmlFile.toString() ) ); 113 return l.toArray(); 114 } 115 116 117 120 protected void executeAsyncJob( ExtendedProgressMonitor monitor ) 121 { 122 123 monitor.beginTask( BrowserCoreMessages.jobs__import_dsml_task, 2 ); 124 monitor.reportProgress( " " ); monitor.worked( 1 ); 126 127 Dsmlv2Engine engine = new Dsmlv2Engine( connection.getHost(), connection.getPort(), connection.getBindPrincipal(), connection.getBindPassword() ); 128 try 129 { 130 String response = engine.processDSMLFile( dsmlFile.getAbsolutePath() ); 132 133 if ( responseFile != null ) 135 { 136 FileOutputStream fout = new FileOutputStream ( responseFile ); 137 new PrintStream ( fout ).println( response ); 138 fout.close(); 139 } 140 141 int errorCount = 0; 143 Dsmlv2ResponseParser responseParser = new Dsmlv2ResponseParser(); 144 responseParser.setInput( response ); 145 LdapResponse ldapResponse = responseParser.getNextResponse(); 146 while ( ldapResponse != null ) 147 { 148 if ( ( ldapResponse instanceof ErrorResponse ) 149 || ( ldapResponse.getLdapResult().getResultCode() != ResultCodeEnum.SUCCESS ) ) 150 { 151 errorCount++; 152 } 153 ldapResponse = responseParser.getNextResponse(); 154 } 155 156 if ( errorCount > 0 ) 157 { 158 monitor.reportError( BrowserCoreMessages.bind( 159 BrowserCoreMessages.dsml__n_errors_see_responsefile, new String [] 160 { "" + errorCount } ) ); } 162 } 163 catch ( Exception e ) 164 { 165 monitor.reportError( e ); 166 } 167 } 168 169 170 173 protected String getErrorMessage() 174 { 175 return BrowserCoreMessages.jobs__import_dsml_error; 176 } 177 178 } 179 | Popular Tags |