You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/09/27 17:17:53 UTC

svn commit: r1001776 - /directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java

Author: kayyagari
Date: Mon Sep 27 15:17:51 2010
New Revision: 1001776

URL: http://svn.apache.org/viewvc?rev=1001776&view=rev
Log:
o added a method to extract the config.ldif file

Modified:
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java?rev=1001776&r1=1001775&r2=1001776&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/LdifConfigExtractor.java Mon Sep 27 15:17:51 2010
@@ -29,6 +29,9 @@ import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Stack;
 import java.util.Map.Entry;
@@ -37,6 +40,7 @@ import java.util.regex.Pattern;
 import org.apache.directory.server.i18n.I18n;
 import org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor;
 import org.apache.directory.shared.ldap.schema.ldif.extractor.impl.ResourceMap;
+import org.apache.directory.shared.ldap.util.StringTools;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,6 +56,8 @@ import org.slf4j.LoggerFactory;
 public class LdifConfigExtractor
 {
 
+    public static final String LDIF_CONFIG_FILE = "config.ldif";
+
     private static final String CONFIG_SUBDIR = "config";
 
     private static final Logger LOG = LoggerFactory.getLogger( LdifConfigExtractor.class );
@@ -250,4 +256,67 @@ public class LdifConfigExtractor
         return destinationFile;
     }
 
+    
+    /**
+     * extracts or overwrites the configuration LDIF file and returns the absolute path of this file
+     *
+     * @param configDir the directory where the config file should be extracted to
+     * @param overwrite flag to indicate to overwrite the config file if already present in the given config directory
+     * @return complete path of the config file on disk
+     */
+    public static String extractSingleFileConfig( File configDir, boolean overwrite )
+    {
+        File configFile = new File( configDir, LDIF_CONFIG_FILE );
+
+        if ( !configDir.exists() )
+        {
+            LOG.debug( "creating non existing config directory {}", configDir.getAbsolutePath() );
+            configDir.mkdir();
+        }
+        else
+        {
+            if( configFile.exists() && !overwrite )
+            {
+                LOG.warn( "config file already exists, returning, cause overwrite flag was set to false" );
+                return configFile.getAbsolutePath();
+            }
+        }
+        
+        try
+        {
+            
+            URL configUrl = LdifConfigExtractor.class.getClassLoader().getResource( LDIF_CONFIG_FILE );
+
+            LOG.debug( "URL of the config ldif file {}", configUrl );
+
+            InputStream in = configUrl.openStream();
+            byte[] buf = new byte[1024*1024];
+            
+            FileWriter fw = new FileWriter( configFile );
+            
+            while( true )
+            {
+                int read = in.read( buf );
+                
+                if( read <= 0 )
+                {
+                    break;
+                }
+                
+                String s = StringTools.utf8ToString( buf, 0, read );
+                fw.write( s );
+            }
+            
+            fw.close();
+            in.close();
+            
+            LOG.info( "successfully extracted the config file {}", configFile.getAbsoluteFile() );
+            
+            return configFile.getAbsolutePath();
+        }
+        catch ( Exception e )
+        {
+            throw new RuntimeException( e );
+        }
+    }
 }