public void objectClassAddedHierarchicalPresentation()

in plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/views/SchemaViewContentProvider.java [881:1007]


    public void objectClassAddedHierarchicalPresentation( ObjectClass oc )
    {
        // Removing unattached nodes for "top"
        List<Object> ocChildren = new ArrayList<Object>();
        List<Object> ocChildren2 = null;
        if ( "2.5.6.0".equals( oc.getOid() ) ) //$NON-NLS-1$
        {
            ocChildren2 = hierarchyManager.getChildren( "2.5.6.0" ); //$NON-NLS-1$
            if ( ocChildren2 != null )
            {
                ocChildren.addAll( ocChildren2 );
            }
            ocChildren2 = hierarchyManager.getChildren( "top" ); //$NON-NLS-1$
            if ( ocChildren2 != null )
            {
                ocChildren.addAll( ocChildren2 );
            }
        }
        ocChildren2 = hierarchyManager.getChildren( oc );
        if ( ocChildren2 != null )
        {
            ocChildren.addAll( ocChildren2 );
        }
        for ( Object ocChild : ocChildren )
        {
            List<TreeNode> wrappers = getWrappers( ocChild );
            if ( wrappers != null )
            {
                for ( TreeNode wrapper : wrappers )
                {
                    int group = store.getInt( PluginConstants.PREFS_SCHEMA_VIEW_GROUPING );
                    if ( group == PluginConstants.PREFS_SCHEMA_VIEW_GROUPING_FOLDERS )
                    {
                        if ( wrapper.getParent().getParent().equals( root ) )
                        {
                            wrapper.getParent().removeChild( wrapper );
                            elementsToWrappersMap.removeMapping( oc, wrapper );
                        }
                    }
                    else if ( group == PluginConstants.PREFS_SCHEMA_VIEW_GROUPING_MIXED )
                    {
                        if ( wrapper.getParent().equals( root ) )
                        {
                            wrapper.getParent().removeChild( wrapper );
                            elementsToWrappersMap.removeMapping( oc, wrapper );
                        }
                    }
                    removeRecursiveChildren( wrapper );
                }
            }
        }

        // Propagating the addition to the hierarchy manager
        hierarchyManager.objectClassAdded( oc );

        List<TreeNode> createdWrappers = new ArrayList<TreeNode>();

        List<Object> parents = hierarchyManager.getParents( oc );

        if ( parents != null )
        {
            for ( Object parent : parents )
            {
                ObjectClassWrapper parentOCW = ( ObjectClassWrapper ) getWrapper( parent );
                ObjectClassWrapper ocw = null;
                if ( parentOCW == null )
                {
                    int group = store.getInt( PluginConstants.PREFS_SCHEMA_VIEW_GROUPING );
                    if ( group == PluginConstants.PREFS_SCHEMA_VIEW_GROUPING_FOLDERS )
                    {
                        for ( TreeNode child : root.getChildren() )
                        {
                            if ( child instanceof Folder )
                            {
                                Folder folder = ( Folder ) child;
                                if ( folder.getType().equals( FolderType.OBJECT_CLASS ) )
                                {
                                    ocw = new ObjectClassWrapper( oc, folder );
                                    break;
                                }
                            }
                        }
                    }
                    else if ( group == PluginConstants.PREFS_SCHEMA_VIEW_GROUPING_MIXED )
                    {
                        ocw = new ObjectClassWrapper( oc, root );
                    }

                }
                else
                {
                    ocw = new ObjectClassWrapper( oc, parentOCW );
                }
                ocw.getParent().addChild( ocw );
                createdWrappers.add( ocw );
                elementsToWrappersMap.put( oc, ocw );
            }
        }

        List<Object> children = hierarchyManager.getChildren( oc );
        if ( children != null )
        {
            for ( Object child : children )
            {
                List<TreeNode> childOCWs = getWrappers( child );
                if ( childOCWs != null )
                {
                    for ( TreeNode childOCW : childOCWs )
                    {
                        if ( root.equals( childOCW.getParent() ) )
                        {
                            elementsToWrappersMap.remove( child );
                            childOCW.getParent().removeChild( childOCW );
                        }
                    }
                }

                for ( TreeNode createdWrapper : createdWrappers )
                {
                    ObjectClassWrapper ocw = new ObjectClassWrapper( ( ObjectClass ) child, createdWrapper );
                    ocw.getParent().addChild( ocw );
                    elementsToWrappersMap.put( child, ocw );
                    addHierarchyChildren( ocw, hierarchyManager.getChildren( child ) );
                }
            }
        }
    }