private void _generateTagDocs()

in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/tagdoc/TagdocIndexReport.java [185:388]


    private void _generateTagDocs() throws Exception
    {
        Model model = getModel();
        if (model.getComponents().size() == 0)
        {
            getLog().info("Nothing to generate - no components found");
            return;
        }

        Iterator components = model.components();

        Iterator validators = model.validators();

        Iterator converters = model.converters();
        
        Iterator behaviors = model.behaviors();
        
        Iterator tags = model.tags();
        
        Iterator faceletTags = model.faceletTags();
        
        Iterator faceletFunctions = model.faceletFunctions();
        
        Map<String, List<FaceletFunctionMeta>> faceletFunctionByModelId = 
            new HashMap<String, List<FaceletFunctionMeta>>();
        
        // =-=AEW Note that only updating out-of-date components, etc. is
        // permanently tricky, even if we had proper detection in place,
        // because the index always has to have all docs
        /*
        if (!components.hasNext() && !converters.hasNext() && !validators.hasNext())
        {
          getLog().info("Nothing to generate - all docs are up to date");
          return;
        }
        */

        Set componentPages = new TreeSet();
        Set converterPages = new TreeSet();
        Set behaviorPages = new TreeSet();
        Set validatorPages = new TreeSet();
        Set tagsPages = new TreeSet();
        Set faceletTagPages = new TreeSet();
        Set faceletFunctionPages = new TreeSet();

        int count = 0;
        while (components.hasNext())
        {
            ComponentMeta component = (ComponentMeta) components.next();
            if (canGenerate(component))
            {
                String pageName = _generateComponentDoc(component);
                if (pageName != null)
                {
                    componentPages.add(pageName);
                    count++;
                }
            }
        }
        while (converters.hasNext())
        {
            ConverterMeta converter = (ConverterMeta) converters.next();
            if (canGenerate(converter))
            {
                String pageName = _generateConverterDoc(converter);
                if (pageName != null)
                {
                    converterPages.add(pageName);
                    count++;
                }
            }
        }
        while (validators.hasNext())
        {
            ValidatorMeta validator = (ValidatorMeta) validators.next();

            if (canGenerate(validator))
            {
                String pageName = _generateValidatorDoc(validator);
                if (pageName != null)
                {
                    validatorPages.add(pageName);
                    count++;
                }
            }
        }
        while (behaviors.hasNext())
        {
            BehaviorMeta behavior = (BehaviorMeta) behaviors.next();
            if (canGenerate(behavior))
            {
                String pageName = _generateBehaviorDoc(behavior);
                if (pageName != null)
                {
                    behaviorPages.add(pageName);
                    count++;
                }
            }
        }

        while (tags.hasNext())
        {
            TagMeta tag = (TagMeta) tags.next();
            
            if (canGenerate(tag))
            {
                String pageName = _generateTagDoc(tag);
                if (pageName != null)
                {
                    tagsPages.add(pageName);
                    count++;
                }                
            }
        }
        
        while (faceletTags.hasNext())
        {
            FaceletTagMeta faceletTag = (FaceletTagMeta) faceletTags.next();
            
            if (canGenerate(faceletTag))
            {
                String pageName = _generateFaceletTagDoc(model, faceletTag);
                if (pageName != null)
                {
                    faceletTagPages.add(pageName);
                    count++;
                }
            }
        }
        
        for (int i = 0; i < modelIds.size(); i++)
        {
            String modelId = (String) modelIds.get(i);
            
            faceletFunctionByModelId.put(modelId, new ArrayList<FaceletFunctionMeta>());
        }

        while (faceletFunctions.hasNext())
        {
            FaceletFunctionMeta faceletFunction = (FaceletFunctionMeta) faceletFunctions.next();
            
            if (canGenerate(faceletFunction))
            {
                String pageName = _generateFaceletFunctionDoc(model, faceletFunction);
                if (pageName != null)
                {
                    faceletFunctionPages.add(pageName);
                    count++;
                }
            }
        }
        
        Set otherPages = _gatherOtherTags();

        getLog().info("Generated " + count + " page(s)");

        Sink sink = getSink();
        sink.head();
        sink.title();
        sink.text("Tag library documentation");
        sink.title_();
        sink.head_();
        sink.body();

        sink.sectionTitle1();
        sink.text("Tag library information");
        sink.sectionTitle1_();
        sink.section1();

        for (Iterator i = taglibs.entrySet().iterator(); i.hasNext();)
        {
            Map.Entry entry = (Map.Entry) i.next();
            sink.paragraph();

            sink.bold();
            sink.text("Short name:");
            sink.bold_();
            sink.nonBreakingSpace();
            sink.text(entry.getKey().toString());
            sink.lineBreak();

            sink.bold();
            sink.text("Namespace:");
            sink.bold_();
            sink.nonBreakingSpace();
            sink.text(entry.getValue().toString());
            sink.lineBreak();

            sink.paragraph_();
        }

        sink.section1_();

        _writeIndexSection(sink, componentPages, "Components");
        _writeIndexSection(sink, converterPages, "Converters");
        _writeIndexSection(sink, validatorPages, "Validators");
        _writeIndexSection(sink, behaviorPages, "Behaviors");
        _writeIndexSection(sink, tagsPages, "JSF Tags");
        _writeIndexSection(sink, faceletTagPages, "JSF Facelet Tags");
        _writeIndexSection(sink, faceletFunctionPages, "JSF Facelet EL Functions", "Function Name");
        _writeIndexSection(sink, otherPages, "Miscellaneous");

        sink.body_();
    }