private void generatePackageJdo()

in modello-plugins/modello-plugin-jpox/src/main/java/org/apache/archiva/redback/components/modello/jpox/JPoxJdoMappingModelloGenerator.java [183:272]


    private void generatePackageJdo( File file, Model model )
        throws IOException, ModelloException
    {
        try (FileOutputStream fileOutputStream = new FileOutputStream( file ))
        {
            try (OutputStreamWriter fileWriter = new OutputStreamWriter( fileOutputStream, "UTF-8" ))
            {

                try (PrintWriter printWriter = new PrintWriter( fileWriter ))
                {

                    XMLWriter writer = new PrettyPrintXMLWriter( printWriter );

                    Map<String, List<ModelClass>> classes = new HashMap<>();

                    for ( Iterator<ModelClass> it = model.getClasses( getGeneratedVersion() ).iterator();
                          it.hasNext(); )
                    {
                        ModelClass modelClass = it.next();

                        JPoxClassMetadata jpoxMetadata =
                            JPoxClassMetadata.class.cast( modelClass.getMetadata( JPoxClassMetadata.ID ) );

                        if ( !jpoxMetadata.isEnabled() )
                        {
                            // Skip generation of those classes that are not enabled for the jpox plugin.
                            continue;
                        }

                        String packageName = modelClass.getPackageName( isPackageWithVersion(), getGeneratedVersion() );

                        List<ModelClass> list = classes.get( packageName );

                        if ( list == null )
                        {
                            list = new ArrayList<>();
                        }

                        list.add( modelClass );

                        classes.put( packageName, list );
                    }

                    printWriter.println( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
                    printWriter.println();
                    printWriter.println( "<!DOCTYPE jdo PUBLIC" );
                    printWriter.println( "  \"-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN\"" );
                    printWriter.println( "  \"http://java.sun.com/dtd/jdo_2_0.dtd\">" );
                    printWriter.println();

                    writer.startElement( "jdo" );

                    for ( Map.Entry<String, List<ModelClass>> entry : classes.entrySet() )
                    {

                        List<ModelClass> list = entry.getValue();

                        if ( list.size() == 0 )
                        {
                            continue;
                        }

                        String packageName = entry.getKey();

                        writer.startElement( "package" );

                        writer.addAttribute( "name", packageName );

                        for ( ModelClass modelClass : list )
                        {
                            writeClass( writer, modelClass );
                        }

                        if ( packageName.equals(
                            model.getDefaultPackageName( isPackageWithVersion(), getGeneratedVersion() ) ) )
                        {
                            writeModelloMetadataClass( writer );
                        }

                        writer.endElement(); // package
                    }

                    writer.endElement(); // jdo

                    printWriter.println();

                }
            }
        }
    }