libSymbols = libSymbols.rename( packageName, libSymbols.getTableName() ); symbolTables.add( libSymbols );
file = new File(file, table.getTableName() + SdkConstants.DOT_JAVA); pw.println("public final class " + table.getTableName() + " {");
Pair<String, String> mainP = Pair.of(main.getTablePackage(), main.getTableName()); Map<Pair<String, String>, SymbolTable> toWrite = new HashMap<>(); for (SymbolTable st : libraries) { Pair<String, String> p = Pair.of(st.getTablePackage(), st.getTableName()); if (p.equals(mainP)) { continue; st = main.filter(st).rename(st.getTablePackage(), st.getTableName()); toWrite.put(k, st);
SymbolTable mainSymbols = mainRTxt.isFile()? SymbolIo.read(mainRTxt) : SymbolTable.builder().build(); mainSymbols = mainSymbols.rename(mainPackageName, mainSymbols.getTableName()); SymbolTable depSymbols = rFile.exists()? SymbolIo.read(rFile) : SymbolTable.builder().build(); depSymbols = depSymbols.rename(depPackageName, depSymbols.getTableName()); depSymbolTables.add(depSymbols);
/** * Merges a list of tables into a single table. The merge is order-sensitive: when multiple * symbols with the same class / name exist in multiple tables, the first one will be used. * * @param tables the tables to merge * @return the table with the result of the merge; this table will have the package / name of * the first table in {@code tables}, or the default one if there are no tables in * {@code tables} */ @NonNull public static SymbolTable merge(@NonNull List<SymbolTable> tables) { SymbolTable.Builder builder = SymbolTable.builder(); boolean first = true; for (SymbolTable t : tables) { if (first) { builder.tablePackage(t.getTablePackage()); builder.tableName(t.getTableName()); first = false; } for (Symbol s : t.allSymbols()) { if (!builder.contains(s)) { builder.add(s); } } } return builder.build(); }