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();
}
}
}
}