diff --git a/rapidoid-web/src/main/java/org/rapidoid/goodies/Goodies.java b/rapidoid-web/src/main/java/org/rapidoid/goodies/Goodies.java index 1912662e49..abbf6a1b43 100644 --- a/rapidoid-web/src/main/java/org/rapidoid/goodies/Goodies.java +++ b/rapidoid-web/src/main/java/org/rapidoid/goodies/Goodies.java @@ -4,12 +4,10 @@ import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Since; import org.rapidoid.cls.Cls; -import org.rapidoid.dbadmin.DbAdmin; import org.rapidoid.dbadmin.ManageableRdbms; import org.rapidoid.goodies.discovery.DiscoveryIndexHandler; import org.rapidoid.goodies.discovery.DiscoveryRegistrationHandler; import org.rapidoid.goodies.discovery.DiscoveryState; -import org.rapidoid.group.Groups; import org.rapidoid.gui.GUI; import org.rapidoid.http.HttpUtils; import org.rapidoid.http.HttpVerb; @@ -117,17 +115,24 @@ public static void processes(Setup setup) { } public static void manageables(Setup setup) { - setup.page(uri("manageables")).mvc(new ManageablesOverviewPage()); - setup.page(uri("manageables/{type}/{id}/*")).mvc(new ManageableDetailsPage()); + String baseUri = uri("manageables"); + + ManageablesOverviewPage overview = new ManageablesOverviewPage() + .baseUri(baseUri); + + setup.page(baseUri).mvc(overview); + + ManageableDetailsPage details = new ManageableDetailsPage() + .baseUri(baseUri); + + setup.page(uri("manageables/{type}/{id}/*")).mvc(details); } public static void dbAdmin(Setup setup) { - DbAdmin.bootstrap(); - String baseUri = uri("db"); ManageablesOverviewPage overview = new ManageablesOverviewPage() - .groups(Groups.find(ManageableRdbms.class)) + .groupType(ManageableRdbms.class) .baseUri(baseUri); setup.page(baseUri).mvc(overview); diff --git a/rapidoid-web/src/main/java/org/rapidoid/goodies/ManageablesOverviewPage.java b/rapidoid-web/src/main/java/org/rapidoid/goodies/ManageablesOverviewPage.java index 4a0b42c179..ff58283788 100644 --- a/rapidoid-web/src/main/java/org/rapidoid/goodies/ManageablesOverviewPage.java +++ b/rapidoid-web/src/main/java/org/rapidoid/goodies/ManageablesOverviewPage.java @@ -7,8 +7,6 @@ import org.rapidoid.group.Manageable; import org.rapidoid.gui.GUI; import org.rapidoid.gui.Grid; -import org.rapidoid.http.Current; -import org.rapidoid.http.Req; import org.rapidoid.lambda.Mapper; import org.rapidoid.u.U; import org.rapidoid.util.Msc; @@ -43,13 +41,15 @@ public class ManageablesOverviewPage extends GUI implements Callable { private volatile Collection> groups; + private volatile Class groupType; + private volatile String baseUri; @Override public Object call() throws Exception { List info = U.list(); - Collection> targetGroups = groups != null ? groups : Groups.all(); + Collection> targetGroups = retrieveTargetGroups(); for (GroupOf group : targetGroups) { List items = group.items(); @@ -65,6 +65,18 @@ public Object call() throws Exception { return multi(info); } + private Collection> retrieveTargetGroups() { + if (groups != null) { + return groups; + } else { + if (groupType != null) { + return Groups.find(groupType); + } else { + return Groups.all(); + } + } + } + public static void addInfo(String baseUri, List info, List nav, List items) { if (U.notEmpty(items)) { List columns = U.list(U.first(items).getManageableProperties()); @@ -89,10 +101,8 @@ protected static void addInfo(final String baseUri, List info, final Lis @Override public String map(Manageable item) throws Exception { - Req req = Current.request(); - final List uri = U.list(nav); - uri.add(0, baseUri); + uri.add(0, U.safe(baseUri)); uri.add(item.id()); return Msc.uri(U.arrayOf(uri)); @@ -120,4 +130,13 @@ public ManageablesOverviewPage baseUri(String baseUri) { this.baseUri = baseUri; return this; } + + public Class groupType() { + return groupType; + } + + public ManageablesOverviewPage groupType(Class groupType) { + this.groupType = groupType; + return this; + } }