You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2009/10/02 13:54:27 UTC

svn commit: r820979 - /directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java

Author: seelmann
Date: Fri Oct  2 11:54:27 2009
New Revision: 820979

URL: http://svn.apache.org/viewvc?rev=820979&view=rev
Log:
DIRSTUDIO-519: sort attributes in LDIF entry editor (OC, must, may, operational)

Modified:
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java?rev=820979&r1=820978&r2=820979&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditorDocumentProvider.java Fri Oct  2 11:54:27 2009
@@ -21,12 +21,15 @@
 package org.apache.directory.studio.ldapbrowser.ui.editors.entry;
 
 
+import java.util.Arrays;
+
 import javax.naming.InvalidNameException;
 
 import org.apache.directory.studio.entryeditors.EntryEditorInput;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.DummyEntry;
+import org.apache.directory.studio.ldapbrowser.core.utils.AttributeComparator;
 import org.apache.directory.studio.ldapbrowser.core.utils.CompoundModification;
 import org.apache.directory.studio.ldapbrowser.core.utils.ModelConverter;
 import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
@@ -34,6 +37,7 @@
 import org.apache.directory.studio.ldifeditor.editor.LdifDocumentProvider;
 import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
 import org.apache.directory.studio.ldifparser.model.container.LdifRecord;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -144,12 +148,8 @@
             try
             {
                 inSetContent = true;
-
-                // set content
                 IEntry sharedWorkingCopy = input.getSharedWorkingCopy( editor );
-                LdifContentRecord record = ModelConverter.entryToLdifContentRecord( sharedWorkingCopy );
-                String newContent = record.toFormattedString( Utils.getLdifFormatParameters() );
-                document.set( newContent );
+                setDocumentInput( document, sharedWorkingCopy );
 
                 // reset dirty state
                 if ( !input.isSharedWorkingCopyDirty( editor ) )
@@ -169,6 +169,29 @@
     }
 
 
+    private void setDocumentInput( IDocument document, IEntry entry )
+    {
+        LdifContentRecord record = ModelConverter.entryToLdifContentRecord( entry );
+
+        // sort attribute-value lines
+        AttributeComparator comparator = new AttributeComparator( entry );
+        LdifAttrValLine[] attrValLines = record.getAttrVals();
+        Arrays.sort( attrValLines, comparator );
+        LdifContentRecord newRecord = new LdifContentRecord( record.getDnLine() );
+        for ( LdifAttrValLine attrValLine : attrValLines )
+        {
+            newRecord.addAttrVal( attrValLine );
+        }
+        newRecord.finish( record.getSepLine() );
+
+        // format
+        String newContent = newRecord.toFormattedString( Utils.getLdifFormatParameters() );
+
+        // set content
+        document.set( newContent );
+    }
+
+
     public IDocument getDocument( Object element )
     {
         if ( element instanceof EntryEditorInput )
@@ -189,13 +212,9 @@
     protected IDocument createDocument( Object element ) throws CoreException
     {
         input = getEntryEditorInput( element );
-
         IEntry entry = getEntryEditorInput( element ).getSharedWorkingCopy( editor );
-        LdifContentRecord record = ModelConverter.entryToLdifContentRecord( entry );
-        String content = record.toFormattedString( Utils.getLdifFormatParameters() );
-
         IDocument document = new Document();
-        document.set( content );
+        setDocumentInput( document, entry );
         setupDocument( document );
         return document;
     }