private static void parseDDLRoots(final DatabaseProvider provider, final NameConverters nameConverters, final Map<Class<? extends RawEntity<?>>, Set<Class<? extends RawEntity<?>>>> deps, final Set<Class<? extends RawEntity<?>>> roots, final ArrayList<DDLTable> parsedTables) { while (!roots.isEmpty()) { Class<? extends RawEntity<?>> clazz = roots.iterator().next(); roots.remove(clazz); if (clazz.getAnnotation(Polymorphic.class) == null) { parsedTables.add(parseInterface(provider, nameConverters, clazz)); } List<Class<? extends RawEntity<?>>> toRemove = new LinkedList<Class<? extends RawEntity<?>>>(); for (final Class<? extends RawEntity<?>> depClass : deps.keySet()) { Set<Class<? extends RawEntity<?>>> individualDeps = deps.get(depClass); individualDeps.remove(clazz); if (individualDeps.isEmpty()) { roots.add(depClass); toRemove.add(depClass); } } for (Class<? extends RawEntity<?>> remove : toRemove) { deps.remove(remove); } } }
private static void parseDDLRoots(final DatabaseProvider provider, final NameConverters nameConverters, final Map<Class<? extends RawEntity<?>>, Set<Class<? extends RawEntity<?>>>> deps, final Set<Class<? extends RawEntity<?>>> roots, final ArrayList<DDLTable> parsedTables) { while (!roots.isEmpty()) { Class<? extends RawEntity<?>> clazz = roots.iterator().next(); roots.remove(clazz); if (clazz.getAnnotation(Polymorphic.class) == null) { parsedTables.add(parseInterface(provider, nameConverters, clazz)); } List<Class<? extends RawEntity<?>>> toRemove = new LinkedList<Class<? extends RawEntity<?>>>(); for (final Class<? extends RawEntity<?>> depClass : deps.keySet()) { Set<Class<? extends RawEntity<?>>> individualDeps = deps.get(depClass); individualDeps.remove(clazz); if (individualDeps.isEmpty()) { roots.add(depClass); toRemove.add(depClass); } } for (Class<? extends RawEntity<?>> remove : toRemove) { deps.remove(remove); } } }