From 50be17c101a5e56e37dab6cfdffdc309ff9d4b27 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 19 Mar 2022 17:30:31 +0100 Subject: [PATCH] Removed depcrecated package com.arsdigita.ui.admin.applications and several other depcrecated classes from ccm-core --- .../ui/admin/ApplicationInstanceForm.java | 63 -- .../contentsection/ui/admin/SettingsPane.java | 72 --- .../com/arsdigita/ui/admin/AdminServlet.java | 324 ---------- .../arsdigita/ui/admin/GlobalizationUtil.java | 41 -- .../com/arsdigita/ui/admin/JpqlConsole.java | 168 ------ .../ui/admin/SystemInformationTab.java | 320 ---------- .../applications/AbstractAppInstanceForm.java | 84 --- .../applications/AbstractAppSettingsPane.java | 78 --- .../AbstractApplicationTypeInstancesPane.java | 101 ---- .../AbstractApplicationTypePane.java | 97 --- .../AbstractSingletonApplicationManager.java | 52 -- .../ApplicationInstanceAwareContainer.java | 41 -- .../ApplicationInstanceTreeCdiUtil.java | 86 --- .../ApplicationInstanceTreeNode.java | 85 --- .../applications/ApplicationManager.java | 82 --- .../applications/ApplicationManagers.java | 73 --- .../applications/ApplicationTreeModel.java | 160 ----- .../ApplicationTreeModelBuilder.java | 43 -- .../ApplicationTypePropertySheetModel.java | 133 ----- ...licationTypePropertySheetModelBuilder.java | 67 --- .../applications/ApplicationTypeTreeNode.java | 57 -- .../ApplicationsAdministrationTab.java | 252 -------- .../admin/applications/ApplicationsTab.java | 470 --------------- .../DefaultApplicationInstanceForm.java | 228 -------- .../DefaultApplicationSettingsPane.java | 97 --- ...gacyApplicationInfoPropertySheetModel.java | 157 ----- ...licationInfoPropertySheetModelBuilder.java | 51 -- .../LegacyApplicationInstancePane.java | 90 --- ...ApplicationInstancePropertySheetModel.java | 111 ---- ...tionInstancePropertySheetModelBuilder.java | 52 -- .../LegacyBaseApplicationPane.java | 47 -- .../LegacyMultiInstanceApplicationPane.java | 223 ------- .../LegacySingletonApplicationPane.java | 50 -- .../LegacyApplicationInstanceTreeNode.java | 96 --- .../tree/LegacyApplicationTreeModel.java | 196 ------- .../LegacyApplicationTreeModelBuilder.java | 44 -- .../tree/LegacyApplicationTypeTreeNode.java | 73 --- .../categories/CategoriesController.java | 86 --- .../ui/admin/categories/CategoriesTab.java | 552 ------------------ .../admin/categories/CategoriesTreeModel.java | 135 ----- .../CategoriesTreeModelBuilder.java | 59 -- .../admin/categories/CategoryCreateForm.java | 132 ----- .../categories/CategoryDescriptionForm.java | 175 ------ .../categories/CategoryDescriptionTable.java | 256 -------- .../ui/admin/categories/CategoryDetails.java | 359 ------------ .../ui/admin/categories/CategoryEditForm.java | 186 ------ .../ui/admin/categories/CategoryMover.java | 110 ---- .../admin/categories/CategoryMoverModel.java | 142 ----- .../categories/CategoryMoverModelBuilder.java | 71 --- .../CategoryPropertySheetModel.java | 101 ---- .../CategoryPropertySheetModelBuilder.java | 66 --- .../admin/categories/CategoryTitleForm.java | 167 ------ .../admin/categories/CategoryTitleTable.java | 255 -------- .../categories/DomainDescriptionForm.java | 173 ------ .../categories/DomainDescriptionTable.java | 256 -------- .../ui/admin/categories/DomainDetails.java | 317 ---------- .../ui/admin/categories/DomainForm.java | 230 -------- .../categories/DomainMappingAddForm.java | 142 ----- .../admin/categories/DomainMappingsTable.java | 219 ------- .../categories/DomainPropertySheetModel.java | 108 ---- .../DomainPropertySheetModelBuilder.java | 68 --- .../ui/admin/categories/DomainTitleForm.java | 169 ------ .../ui/admin/categories/DomainTitleTable.java | 253 -------- .../ui/admin/categories/DomainsTable.java | 282 --------- .../admin/categories/SubCategoriesTable.java | 354 ----------- .../main/java/org/libreccm/core/CcmCore.java | 74 ++- .../org/libreccm/web/ApplicationType.java | 12 +- 67 files changed, 36 insertions(+), 9937 deletions(-) delete mode 100644 ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java delete mode 100644 ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModelBuilder.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java delete mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java deleted file mode 100644 index 7f6a35651..000000000 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package org.librecms.contentsection.ui.admin; - -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm; - -import org.libreccm.cdi.utils.CdiUtil; -import org.librecms.contentsection.ContentSectionManager; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationInstanceForm extends DefaultApplicationInstanceForm { - - public ApplicationInstanceForm( - final String name, - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - - super(name, selectedAppType, selectedAppInstance); - } - - @Override - protected FormProcessListener createProcessListener() { - return (FormSectionEvent e) -> { - final PageState state = e.getPageState(); - if (getSaveCancelSection().getSaveButton().isSelected(state)) { - final FormData data = e.getFormData(); - - final String primaryUrlData = data.getString( - "new_instance_primary_url"); - - final ContentSectionManager manager = CdiUtil.createCdiUtil() - .findBean(ContentSectionManager.class); - - manager.createContentSection(primaryUrlData); - } - }; - } - -} diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java deleted file mode 100644 index 07e6e6be9..000000000 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package org.librecms.contentsection.ui.admin; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Link; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane; -import com.arsdigita.web.RedirectSignal; -import com.arsdigita.web.URL; - -import org.librecms.CmsConstants; - -/** - * - * @author Jens Pelzetter - */ -public class SettingsPane extends AbstractAppSettingsPane { - - public SettingsPane( - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - super(selectedAppType, selectedAppInstance); - } - - @Override - protected void createWidgets() { - final Label label = new Label(new GlobalizedMessage( - "contentsection.ui.admin.app_note", CmsConstants.CMS_BUNDLE)); - add(label); - - final ActionLink link = new ActionLink(new GlobalizedMessage( - "contentsection.ui.admin.link_app", CmsConstants.CMS_BUNDLE)); - link.addActionListener(e -> { - final PageState state = e.getPageState(); - final String primaryUrl; - if (getSelectedAppInstance(state).get().getPrimaryUrl().startsWith( - "/")) { - primaryUrl = getSelectedAppInstance(state).get().getPrimaryUrl(); - } else { - primaryUrl = String.format( - "/%s", - getSelectedAppInstance(state).get().getPrimaryUrl()); - } - throw new RedirectSignal( - URL.there(state.getRequest(), primaryUrl, null), - false); - }); - add(link); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java deleted file mode 100644 index b3d3b0bb1..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java +++ /dev/null @@ -1,324 +0,0 @@ -/* - * Copyright (C) 2012 Peter Boy All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin; - -import com.arsdigita.ui.admin.usersgroupsroles.UsersGroupsRolesTab; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageFactory; -import com.arsdigita.bebop.TabbedPane; -import com.arsdigita.dispatcher.AccessDeniedException; -import com.arsdigita.dispatcher.DispatcherHelper; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.templating.Templating; -import com.arsdigita.ui.SiteBanner; -import com.arsdigita.ui.UserBanner; -import com.arsdigita.ui.admin.applications.ApplicationsTab; -import com.arsdigita.ui.admin.categories.CategoriesTab; -import com.arsdigita.ui.admin.configuration.ConfigurationTab; -import com.arsdigita.ui.admin.importexport.ImportExportTab; -import com.arsdigita.ui.admin.pagemodels.PageModelsTab; -import com.arsdigita.ui.admin.sites.SitesTab; -import com.arsdigita.web.BaseApplicationServlet; -import com.arsdigita.web.LoginSignal; -import com.arsdigita.xml.Document; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.shiro.subject.Subject; -import org.libreccm.security.PermissionChecker; -import org.libreccm.web.CcmApplication; - -import java.io.IOException; - -import javax.enterprise.inject.spi.CDI; -import javax.servlet.ServletContext; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.configuration.ConfigurationManager; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * Web Developer Support Application Servlet class, central entry point to - * create and process the applications UI. - * - * We should have subclassed BebopApplicationServlet but couldn't overwrite - * doService() method to add permission checking. So we use our own page - * mapping. The general logic is the same as for BebopApplicationServlet. - * - * { - * - * @see com.arsdigita.bebop.page.BebopApplicationServlet} - * - * @author Jens Pelzetter - * @author pb - */ -@WebServlet(urlPatterns = {ADMIN_SERVLET_PATH}) -public class AdminServlet extends BaseApplicationServlet { - - private static final long serialVersionUID = -3912367600768871630L; - - private static final Logger LOGGER = LogManager - .getLogger(AdminServlet.class); - - /** - * Logger instance for debugging - */ - //private static final Logger LOGGER = Logger.getLogger(AdminServlet.class.getName()); - /** - * URL (pathinfo) -> Page object mapping. Based on it (and the http request - * url) the doService method to selects a page to display - */ -// private final Map pages = new HashMap(); - private Page adminPage; - - /** - * User extension point, overwrite this method to setup a URL - page mapping - * - * @throws ServletException - */ - @Override - public void doInit() throws ServletException { - //addPage("/", buildAdminIndexPage()); // index page at address ~/ds - // addPage("/index.jsp", buildIndexPage()); // index page at address ~/ds - - adminPage = PageFactory.buildPage("admin", "LibreCCM NG Admin"); -// adminPage.addGlobalStateParam(USER_ID_PARAM); -// adminPage.addGlobalStateParam(GROUP_ID_PARAM); -// adminPage.addGlobalStateParam(APPLICATIONS_ID_PARAM); - - adminPage.add(new UserBanner()); - adminPage.add(new SiteBanner()); - - //Create tab bar - final TabbedPane tabbedPane = new TabbedPane(); - tabbedPane.setIdAttr("page-body"); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.applications", - ADMIN_BUNDLE)), - new ApplicationsTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.sites.title", - ADMIN_BUNDLE)), - new SitesTab()); - - tabbedPane.addTab(new Label(new GlobalizedMessage("ui.admin.tab.pagemodels.title", - ADMIN_BUNDLE)), - new PageModelsTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage( - "ui.admin.tab.users_groups_roles.title", - ADMIN_BUNDLE)), - new UsersGroupsRolesTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.categories.title", - ADMIN_BUNDLE)), - new CategoriesTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.configuration.title", - ADMIN_BUNDLE)), - new ConfigurationTab()); - -// tabbedPane.addTab( -// new Label(new GlobalizedMessage("ui.admin.tab.workflows.title", -// ADMIN_BUNDLE)), -// new WorkflowAdminTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.importexport.title", - ADMIN_BUNDLE)), - new ImportExportTab()); - - tabbedPane.addTab( - new Label(new GlobalizedMessage("ui.admin.tab.sysinfo.title", - ADMIN_BUNDLE)), - new SystemInformationTab()); - - final ServletContext servletContext = getServletContext(); - final String develMode = servletContext - .getInitParameter("ccm.develmode"); - if (develMode != null && "true".equals(develMode.toLowerCase())) { - - } - - //page.add(new Label("admin")); - adminPage.add(tabbedPane); - - adminPage.lock(); - - } - - /** - * Central service method, checks for required permission, determines the - * requested page and passes the page object to PresentationManager. - * - * @param sreq - * @param sresp - * @param app - * - * @throws ServletException - * @throws IOException - */ - @Override - public final void doService(final HttpServletRequest sreq, - final HttpServletResponse sresp, - final CcmApplication app) throws - ServletException, IOException { - // /////// Some preparational steps /////////////// - /* Determine access privilege: only logged in users may access */ - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final Subject subject = cdiUtil.findBean(Subject.class); - final PermissionChecker permissionChecker = cdiUtil.findBean( - PermissionChecker.class); - - final ConfigurationManager confManager = CDI.current().select( - ConfigurationManager.class).get(); - if (confManager == null) { - throw new IllegalStateException(); - } - - LOGGER.debug("Checking if subject {} is authenticated...", - subject.toString()); - LOGGER.debug("Current session is: {}", sreq.getSession().getId()); - LOGGER.debug("Current Shiro session is {}", - subject.getSession().getId().toString()); - if (!subject.isAuthenticated()) { - LOGGER.debug( - "Subject {} is not authenticated, redirecting to login...", - subject.toString()); - throw new LoginSignal(sreq); - } - - /* Determine access privilege: Admin privileges must be granted */ - LOGGER.debug( - "Subject is loggedin, checking if subject has required permissions..."); - if (!permissionChecker.isPermitted("admin")) { - LOGGER.debug("Subject does *not* have required permissions. " - + "Access denied."); - throw new AccessDeniedException("User is not an administrator"); - } - - LOGGER.debug("Serving admin page..."); - /* Want admin to always show the latest stuff... */ - DispatcherHelper.cacheDisable(sresp); - - // /////// Everything OK here - DO IT /////////////// -// String pathInfo = sreq.getPathInfo(); -// Assert.exists(pathInfo, "String pathInfo"); -// if (pathInfo.length() > 1 && pathInfo.endsWith("/")) { -// /* NOTE: ServletAPI specifies, pathInfo may be empty or will -// * start with a '/' character. It currently carries a -// * trailing '/' if a "virtual" page, i.e. not a real jsp, but -// * result of a servlet mapping. But Application requires url -// * NOT to end with a trailing '/' for legacy free applications. */ -// pathInfo = pathInfo.substring(0, pathInfo.length() - 1); -// } -// final Page page = pages.get(pathInfo); -// if (page == null) { -// sresp.sendError(404, "No such page for path " + pathInfo); -// } else { -// final Document doc = page.buildDocument(sreq, sresp); -// Templating.getPresentationManager().servePage(doc, sreq, sresp); -// } - final Document doc = adminPage.buildDocument(sreq, sresp); - Templating.getPresentationManager().servePage(doc, sreq, sresp); - } - - /** - * Adds one pair of Url - Page to the internal hash map, used as a cache. - * - * @param pathInfo url stub for a page to display - * @param page Page object to display - */ -// private void addPage(final String pathInfo, final Page page) { -// Assert.exists(pathInfo, String.class); -// Assert.exists(page, Page.class); -// // Current Implementation requires pathInfo to start with a leading '/' -// // SUN Servlet API specifies: "PathInfo *may be empty* or will start -// // with a '/' character." -// Assert.isTrue(pathInfo.charAt(0) == '/', "path starts not with '/'"); -// -// pages.put(pathInfo, page); -// } - /** - * Index page for the admin section - */ -// private Page buildAdminIndexPage() { -// -// final Page page = PageFactory.buildPage("admin", PAGE_TITLE_LABEL); -// page.addGlobalStateParam(USER_ID_PARAM); -// page.addGlobalStateParam(GROUP_ID_PARAM); -// page.addGlobalStateParam(APPLICATIONS_ID_PARAM); -// -// /* -// * Create User split panel. -// * Note: Will change soon. -// */ -// //final AdminSplitPanel userSplitPanel = new AdminSplitPanel(USER_NAVBAR_TITLE); -//// final UserBrowsePane browsePane = new UserBrowsePane(); -//// userSplitPanel.addTab(USER_TAB_SUMMARY, new UserSummaryPane(userSplitPanel, browsePane)); -//// userSplitPanel.addTab(USER_TAB_BROWSE, browsePane); -//// userSplitPanel.addTab(USER_TAB_SEARCH, new UserSearchPane(userSplitPanel, browsePane)); -//// userSplitPanel.addTab(USER_TAB_CREATE_USER, new CreateUserPane(userSplitPanel)); -// // Create the Admin's page tab bar -// final TabbedPane tabbedPane = new TabbedPane(); -// tabbedPane.setIdAttr("page-body"); -// -// /** -// * Create and add info tab -// */ -// //tabbedPane.addTab(INFO_TAB_TITLE, new AdminInfoTab()); -// /* -// * Create and add the user and group tabs. -// */ -// //tabbedPane.addTab(USER_TAB_TITLE, userSplitPanel); -// final GroupAdministrationTab groupAdminTab -// = new GroupAdministrationTab(); -// tabbedPane.addTab(USER_TAB_TITLE, new UserAdministrationTab(tabbedPane, -// groupAdminTab)); -// tabbedPane.addTab(GROUP_TAB_TITLE, groupAdminTab); -// -// /* -// * Create application administration panel -// */ -// tabbedPane.addTab(APPLICATIONS_TAB_TITLE, -// new ApplicationsAdministrationTab()); -// -//// browsePane.setTabbedPane(tabbedPane); -//// browsePane.setGroupAdministrationTab(groupAdminTab); -// //Add System information tab -// tabbedPane.addTab(SYSINFO_TAB_TITLE, new SystemInformationTab()); -// -// page.add(tabbedPane); -// page.lock(); -// -// return page; -// } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java deleted file mode 100644 index 0641f5c4a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin; - -import com.arsdigita.globalization.GlobalizedMessage; - -/** - * Globalization Util for admin classes - * - * @author Jens Pelzetter - * @version $Id$ - */ -public class GlobalizationUtil { - - private static final String BUNDLE_NAME = "com.arsdigita.ui.admin.AdminResources"; - - public static GlobalizedMessage globalize(final String key) { - return new GlobalizedMessage(key, BUNDLE_NAME); - } - - public static GlobalizedMessage globalize(final String key, final Object[] args) { - return new GlobalizedMessage(key, BUNDLE_NAME, args); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java deleted file mode 100644 index a834ad223..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2017 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.SimpleComponent; -import com.arsdigita.bebop.form.TextArea; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.LayoutPanel; -import com.arsdigita.xml.Element; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -/** - * - * @author Jens Pelzetter - */ -public class JpqlConsole extends LayoutPanel { - - private static final Logger LOGGER = LogManager.getLogger(JpqlConsole.class); - - private final Form queryForm; - private final TextArea queryArea; - - public JpqlConsole() { - super(); - - final SegmentedPanel panel = new SegmentedPanel(); - - queryForm = new Form("jpql-console-query-form"); - - queryArea = new TextArea("jpql-console-query-area"); - queryArea.setCols(132); - queryArea.setRows(42); - - final BoxPanel hpanel = new BoxPanel(BoxPanel.HORIZONTAL); - hpanel.add(new Label(new GlobalizedMessage( - "ui.admin.jpqlconsole.query.label", - AdminUiConstants.ADMIN_BUNDLE))); - hpanel.add(queryArea); - - final BoxPanel vpanel = new BoxPanel(BoxPanel.VERTICAL); - vpanel.add(hpanel); - final SaveCancelSection saveCancelSection = new SaveCancelSection(); - saveCancelSection.getSaveButton().setLabel( - new GlobalizedMessage("ui.admin.jpqlconsole.query.execute", - AdminUiConstants.ADMIN_BUNDLE)); - saveCancelSection.getCancelButton().setLabel( - new GlobalizedMessage("ui.admin.jpqlconsole.query.clear", - AdminUiConstants.ADMIN_BUNDLE)); - vpanel.add(saveCancelSection); - - queryForm.add(hpanel); - - panel.addSegment(new Label(new GlobalizedMessage( - "ui.admin.jpqlconsole.query.segment.title", - AdminUiConstants.ADMIN_BUNDLE)), - queryForm); - - setBody(panel); - } - - private class QueryResults extends SimpleComponent { - - private List results; - - public List getResults() { - return results; - } - - public void setResults(final List results) { - this.results = results; - } - - private List getProperties(final List results) - throws IntrospectionException { - - final Set propertyDescriptors = new HashSet<>(); - - for (final Object obj : results) { - final PropertyDescriptor[] properties = Introspector - .getBeanInfo(obj.getClass()).getPropertyDescriptors(); - - for (final PropertyDescriptor property : properties) { - propertyDescriptors.add(property); - } - } - - final List propertiesList - = new ArrayList<>(propertyDescriptors); - propertiesList.sort((prop1, prop2) -> { - return prop1.getName().compareTo(prop2.getName()); - }); - - return propertiesList; - } - - @Override - public void generateXML(final PageState state, - final Element parent) { - - final Element queryResults = parent - .newChildElement("bebop:query-results", BEBOP_XML_NS); - - // Find all properties in the results - final List properties; - try { - properties = getProperties(results); - } catch (IntrospectionException ex) { - queryArea.addError(new GlobalizedMessage( - "ui.admin.jpqlconsole.failed_to_render_results", - AdminUiConstants.ADMIN_BUNDLE)); - LOGGER.error("Failed to render results.", ex); - return; - } - - final Element columns = queryResults - .newChildElement("bebop:query-result-columns", BEBOP_XML_NS); - for (final PropertyDescriptor property : properties) { - final Element column = columns - .newChildElement("bebop:query-result-column", BEBOP_XML_NS); - column.setText(property.getName()); - } - - final Element resultList = queryResults - .newChildElement("bebop:query-result-list", BEBOP_XML_NS); - for(final Object obj : results) { - for(final PropertyDescriptor property : properties) { - final Method readMethod = property.getReadMethod(); - - - } - } - - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java deleted file mode 100644 index 80cee79bf..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */package com.arsdigita.ui.admin; - -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.bebop.PropertySheetModelBuilder; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.LayoutPanel; -import com.arsdigita.util.LockableImpl; -import com.arsdigita.util.SystemInformation; - -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Map; -import java.util.Properties; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerFactory; - -import org.xml.sax.SAXException; - -/** - * - * @author Jens Pelzetter - */ -public class SystemInformationTab extends LayoutPanel { - - public SystemInformationTab() { - super(); - - final SegmentedPanel panel = new SegmentedPanel(); - - panel.addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.sysinfo.appinfo")), - new PropertySheet( - new CCMSysInfoPropertySheetModelBuilder())); - - panel.addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.sysinfo.java_system_properties")), - new PropertySheet( - new JavaSystemPropertiesSheetModelBuilder())); - - panel.addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.sysinfo.xml_config")), - new PropertySheet(new XMLConfigSheetModelBuilder())); - - setRight(panel); - } - - private class CCMSysInfoPropertySheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - public CCMSysInfoPropertySheetModelBuilder() { - super(); - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - return new CCMSysInfoPropertySheetModel(); - } - - } - - private class CCMSysInfoPropertySheetModel implements PropertySheetModel { - - private final SystemInformation sysInfo; - private final Iterator> sysInfoIterator; - private Map.Entry currentProperty; - - public CCMSysInfoPropertySheetModel() { - sysInfo = SystemInformation.getInstance(); - sysInfoIterator = sysInfo.iterator(); - } - - @Override - public boolean nextRow() { - final boolean result = sysInfoIterator.hasNext(); - if (result) { - currentProperty = sysInfoIterator.next(); - } - return result; - - } - - @Override - public String getLabel() { - if (currentProperty == null) { - return null; - } else { - return currentProperty.getKey(); - } - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - return GlobalizationUtil.globalize(currentProperty.getKey()); - } - - @Override - public String getValue() { - return currentProperty.getValue(); - } - - } - - private class JavaSystemPropertiesSheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - public JavaSystemPropertiesSheetModelBuilder() { - super(); - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - return new JavaSystemPropertiesSheetModel(); - } - - } - - private class JavaSystemPropertiesSheetModel implements PropertySheetModel { - - private final Properties systemProperties; - private final Enumeration enumeration; - private Object currentElement; - - public JavaSystemPropertiesSheetModel() { - systemProperties = System.getProperties(); - enumeration = systemProperties.propertyNames(); - } - - @Override - public boolean nextRow() { - final boolean result = enumeration.hasMoreElements(); - if (result) { - currentElement = enumeration.nextElement(); - } - return result; - } - - @Override - public String getLabel() { - return currentElement.toString(); - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - return GlobalizationUtil.globalize(currentElement.toString()); - } - - @Override - public String getValue() { - return systemProperties.getProperty(currentElement.toString()); - } - - } - - private class XMLConfigSheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - public XMLConfigSheetModelBuilder() { - super(); - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - return new XMLConfigSheetModel(); - } - - } - - private class XMLConfigSheetModel implements PropertySheetModel { - - private static final int TRANSFORMER_FACTORY_INDEX = 0; - private static final int TRANSFORMER_INDEX = 1; - private static final int DOCUMENT_BUILDER_FACTORY_INDEX = 2; - private static final int DOCUMENT_BUILDER_INDEX = 3; - private static final int SAX_PARSER_FACTORY_INDEX = 4; - private static final int SAX_PARSER_INDEX = 5; - private int currentIndex = -1; - - public XMLConfigSheetModel() { - //Nothing - } - - @Override - public boolean nextRow() { - currentIndex++; - return currentIndex <= SAX_PARSER_INDEX; - } - - @Override - public String getLabel() { - switch (currentIndex) { - case TRANSFORMER_FACTORY_INDEX: - return "XML Transformer Factory"; - case TRANSFORMER_INDEX: - return "XML Transformer"; - case DOCUMENT_BUILDER_FACTORY_INDEX: - return "XML Document Builder Factory"; - case DOCUMENT_BUILDER_INDEX: - return "XML Document Builder"; - case SAX_PARSER_FACTORY_INDEX: - return "SAX Parser Factory"; - case SAX_PARSER_INDEX: - return "SAX Parser"; - default: - return ""; - } - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - switch (currentIndex) { - case TRANSFORMER_FACTORY_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.xml_transformer_factory"); - case TRANSFORMER_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.xml_transformer"); - case DOCUMENT_BUILDER_FACTORY_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.xml_document_builder_factory"); - case DOCUMENT_BUILDER_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.xml_document_builder"); - case SAX_PARSER_FACTORY_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.sax_parser_factory"); - case SAX_PARSER_INDEX: - return GlobalizationUtil.globalize( - "ui.admin.sysinfo.sax_parser"); - default: - return GlobalizationUtil.globalize("unknown"); - } - } - - @Override - public String getValue() { - switch (currentIndex) { - case TRANSFORMER_FACTORY_INDEX: - return TransformerFactory - .newInstance() - .getClass() - .getName(); - case TRANSFORMER_INDEX: - try { - return TransformerFactory - .newInstance() - .newTransformer() - .getClass() - .getName(); - } catch (TransformerConfigurationException ex) { - return "???"; - } - case DOCUMENT_BUILDER_FACTORY_INDEX: - return DocumentBuilderFactory - .newInstance() - .getClass() - .getName(); - case DOCUMENT_BUILDER_INDEX: - try { - return DocumentBuilderFactory - .newInstance() - .newDocumentBuilder() - .getClass() - .getName(); - } catch (ParserConfigurationException ex) { - return "???"; - } - case SAX_PARSER_FACTORY_INDEX: - return SAXParserFactory - .newInstance() - .getClass() - .getName(); - case SAX_PARSER_INDEX: - try { - return SAXParserFactory - .newInstance() - .newSAXParser() - .getClass() - .getName(); - } catch (ParserConfigurationException | SAXException ex) { - return "???"; - } - default: - return ""; - } - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java deleted file mode 100644 index 0113ffc29..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.event.FormProcessListener; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.util.Optional; - -/** - * - * @author Jens Pelzetter - */ -public abstract class AbstractAppInstanceForm extends Form { - - private final ParameterSingleSelectionModel selectedAppType; - private final ParameterSingleSelectionModel selectedAppInstance; - - public AbstractAppInstanceForm( - final String name, - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - - super(name); - - this.selectedAppType = selectedAppType; - this.selectedAppInstance = selectedAppInstance; - - createWidgets(); - - addProcessListener(createProcessListener()); - } - - protected abstract void createWidgets(); - - protected abstract FormProcessListener createProcessListener(); - - protected ApplicationType getSelectedAppType(final PageState state) { - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class); - - return appManager.getApplicationTypes().get(selectedAppType - .getSelectedKey(state)); - } - - protected Optional getSelectedAppInstance( - final PageState state) { - - if (selectedAppInstance.getSelectedKey(state) == null - || selectedAppInstance.getSelectedKey(state).isEmpty()) { - return Optional.empty(); - } else { - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - - return appRepo.findById(Long.parseLong( - selectedAppInstance.getSelectedKey(state))); - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java deleted file mode 100644 index e1400247b..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SimpleContainer; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.util.Optional; - -/** - * - * @author Jens Pelzetter - */ -public abstract class AbstractAppSettingsPane extends SimpleContainer { - - private final ParameterSingleSelectionModel selectedAppType; - private final ParameterSingleSelectionModel selectedAppInstance; - - public AbstractAppSettingsPane( - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - - super(); - - this.selectedAppType = selectedAppType; - this.selectedAppInstance = selectedAppInstance; - - createWidgets(); - } - - protected abstract void createWidgets(); - - protected ApplicationType getSelectedAppType(final PageState state) { - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class); - - return appManager.getApplicationTypes().get(selectedAppType - .getSelectedKey(state)); - } - - protected Optional getSelectedAppInstance( - final PageState state) { - - if (selectedAppInstance.getSelectedKey(state) == null - || selectedAppInstance.getSelectedKey(state).isEmpty()) { - return Optional.empty(); - } else { - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - - return appRepo.findById(Long.parseLong( - selectedAppInstance.getSelectedKey(state))); - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java deleted file mode 100644 index 9b7d1f483..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.globalization.GlobalizedMessage; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public abstract class AbstractApplicationTypeInstancesPane extends BoxPanel { - - private final ParameterSingleSelectionModel selectedAppType; - - private final Form instanceForm; - - public AbstractApplicationTypeInstancesPane( - final ParameterSingleSelectionModel selectedAppType) { - - super(BoxPanel.VERTICAL); - - this.selectedAppType = selectedAppType; - - instanceForm = createInstanceForm(); - add(instanceForm); - - } - - protected abstract Form createInstanceForm(); - - @Override - public void register(final Page page) { - - page.setVisibleDefault(instanceForm, false); - } - - private class InstanceTable extends Table { - - private static final int COL_TITLE = 0; - private static final int COL_URL = 1; - private static final int COL_EDIT = 2; - - private final AbstractApplicationTypeInstancesPane instancesPane; - private final ParameterSingleSelectionModel selectedAppType; - - public InstanceTable( - final AbstractApplicationTypeInstancesPane instancesPane, - final ParameterSingleSelectionModel selectedAppType) { - super(); - - this.instancesPane = instancesPane; - this.selectedAppType = selectedAppType; - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_TITLE, - new Label(new GlobalizedMessage( - "ui.admin.applications.instances.col_title", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_URL, - new Label(new GlobalizedMessage( - "ui.admin.applications.instances.col_url", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.applications.instances.col_edit", - ADMIN_BUNDLE)))); - - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java deleted file mode 100644 index 60be6ac14..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.globalization.GlobalizedMessage; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public abstract class AbstractApplicationTypePane extends BoxPanel { - - private final ParameterSingleSelectionModel selectedAppType; - - private final SimpleContainer pane; - private final PropertySheet propertySheet; - - public AbstractApplicationTypePane( - final ParameterSingleSelectionModel selectedAppType) { - - super(BoxPanel.VERTICAL); - - this.selectedAppType = selectedAppType; - - final BoxPanel links = new BoxPanel(BoxPanel.HORIZONTAL); - final ActionLink paneLink = new ActionLink(getPaneLabel()); - paneLink.addActionListener(e -> { - final PageState state = e.getPageState(); - showPane(state); - }); - links.add(paneLink); - final ActionLink propertySheetLink = new ActionLink( - new GlobalizedMessage( - "ui.admin.appliations.type_pane.info_sheet", - ADMIN_BUNDLE)); - propertySheetLink.addActionListener(e -> { - final PageState state = e.getPageState(); - showPropertySheet(state); - }); - links.add(propertySheetLink); - add(links); - - pane = createPane(); - add(pane); - - propertySheet = new PropertySheet( - new ApplicationTypePropertySheetModelBuilder(selectedAppType)); - } - - protected abstract SimpleContainer createPane(); - - protected abstract GlobalizedMessage getPaneLabel(); - - @Override - public void register(final Page page) { - super.register(page); - - page.setVisibleDefault(pane, true); - page.setVisibleDefault(propertySheet, false); - } - - protected void showPane(final PageState state) { - pane.setVisible(state, true); - propertySheet.setVisible(state, false); - } - - protected void showPropertySheet(final PageState state) { - pane.setVisible(state, false); - propertySheet.setVisible(state, false); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java deleted file mode 100644 index 6e6cc39d3..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Form; - -import org.libreccm.web.CcmApplication; - -/** - * An abstract class providing a default implementation of - * {@link ApplicationManager#getApplicationCreateForm()}. - * - * @param Type of the application for which this ApplicationManager provides - * the administration forms. - * - * @author Jens Pelzetter - * @version $Id: AbstractSingletonApplicationManager.java 3703 2015-10-21 - * 08:52:39Z jensp $ - */ -public abstract class AbstractSingletonApplicationManager - implements ApplicationManager { - - /** - * Implementation of {@link ApplicationManager#getApplicationCreateForm()} - * for singleton applications. - * - * @return {@code} null because it is not possible to create instances of - * singleton applications. - */ - @SuppressWarnings("PMD.EmptyMethodInAbstractClassShouldBeAbstract") - @Override - public final Form getApplicationCreateForm() { - return null; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java deleted file mode 100644 index a050eac29..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.SimpleContainer; -import org.libreccm.web.CcmApplication; - -/** - * - * @author Jens Pelzetter - * @version $Id: ApplicationInstanceAwareContainer.java 2234 2013-06-29 12:41:57Z jensp $ - */ -public class ApplicationInstanceAwareContainer extends SimpleContainer { - - private CcmApplication appInstance; - - public CcmApplication getAppInstance() { - return appInstance; - } - - public void setAppInstance(final CcmApplication appInstance) { - this.appInstance = appInstance; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java deleted file mode 100644 index 4025a2ef1..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2021 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.kernel.KernelConfig; - -import org.libreccm.configuration.ConfigurationManager; -import org.libreccm.l10n.GlobalizationHelper; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.CcmApplication; - -import java.io.Serializable; -import java.util.Locale; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.transaction.Transactional; - -/** - * - * @author Jens Pelzetter - */ -@RequestScoped -class ApplicationInstanceTreeCdiUtil implements Serializable { - - private static final long serialVersionUID = 1L; - - @Inject - private ApplicationRepository applicationRepo; - - @Inject - private ConfigurationManager confManager; - - @Inject - private GlobalizationHelper globalizationHelper; - - @Transactional(Transactional.TxType.REQUIRED) - public String getTitle(final CcmApplication ofApplication) { - final CcmApplication application = applicationRepo - .findById(ofApplication.getObjectId()) - .orElseThrow( - () -> new IllegalArgumentException( - String.format( - "No CcmApplication with ID %d available.", - ofApplication.getObjectId() - ) - ) - ); - - final KernelConfig kernelConfig = confManager.findConfiguration( - KernelConfig.class); - final Locale defaultLocale = kernelConfig.getDefaultLocale(); - - final String title; - if (application.getTitle().hasValue(globalizationHelper - .getNegotiatedLocale())) { - title = application.getTitle().getValue(globalizationHelper - .getNegotiatedLocale()); - } else if (application.getTitle().hasValue(defaultLocale)) { - title = application.getTitle().getValue(defaultLocale); - } else if (application.getTitle().hasValue(Locale.getDefault())) { - title = application.getTitle().getValue(Locale.getDefault()); - } else { - title = application.getPrimaryUrl(); - } - - return title; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java deleted file mode 100644 index 93231b444..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.tree.TreeNode; -import com.arsdigita.kernel.KernelConfig; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.configuration.ConfigurationManager; -import org.libreccm.l10n.GlobalizationHelper; -import org.libreccm.web.CcmApplication; - -import java.util.Locale; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationInstanceTreeNode implements TreeNode { - - protected static final String INSTANCE_NODE_KEY_PREFIX = "appinstance_"; - - private final CcmApplication application; - - public ApplicationInstanceTreeNode(final CcmApplication application) { - this.application = application; - } - - @Override - public Object getKey() { - return String.format("%s%d", - INSTANCE_NODE_KEY_PREFIX, - application.getObjectId()); - } - - @Override - public Object getElement() { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); -// final GlobalizationHelper globalizationHelper = cdiUtil -// .findBean(GlobalizationHelper.class); - final ConfigurationManager confManager = cdiUtil - .findBean(ConfigurationManager.class); -// final KernelConfig kernelConfig = confManager.findConfiguration( -// KernelConfig.class); -// final Locale defaultLocale = kernelConfig.getDefaultLocale(); - final ApplicationInstanceTreeCdiUtil util = cdiUtil - .findBean(ApplicationInstanceTreeCdiUtil.class); - -// final String title; -// if (application.getTitle().hasValue(globalizationHelper -// .getNegotiatedLocale())) { -// title = application.getTitle().getValue(globalizationHelper -// .getNegotiatedLocale()); -// } else if (application.getTitle().hasValue(defaultLocale)) { -// title = application.getTitle().getValue(defaultLocale); -// } else if (application.getTitle().hasValue(Locale.getDefault())) { -// title = application.getTitle().getValue(Locale.getDefault()); -// } else { -// title = application.getPrimaryUrl(); -// } -// return title; - return util.getTitle(application); - } - - public CcmApplication getApplication() { - return application; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java deleted file mode 100644 index ee1929552..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Form; - -import java.util.ServiceLoader; - -import org.libreccm.web.CcmApplication; - -/** - * Implementations of this class are used by the new - * {@link ApplicationsAdministrationTab} to get the forms for editing the - * configuration of an application and for creating new instances of an - * application. - * - * The {@link ApplicationsAdministrationTab} uses the {@link ServiceLoader} - * from the Java Standard Library to find all implementations of this interface. - * To make implementations of this interface known add an file named - * {@code com.arsdigita.ui.admin.applications.ApplicationManager} to the - * {@code META-INF/services} directory of the module which provides the - * application. In this file add a line with the full qualified class name - * of each implementations of this interface provided by the module. - * - * There a two abstract classes to help you with implementing this class. - * {@link AbstractSingletonApplicationManager} is suitable for singleton - * applications. {@link AbstractApplicationManager} is for multi-instance - * applications. - * - * @param Type of the application for which this ApplicationManager - * provides the administration forms. - * - * @author Jens Pelzetter - * @version $Id: ApplicationManager.java 2275 2013-07-26 14:20:28Z jensp $ - */ -public interface ApplicationManager { - - /** - * Used to determine the Applications class for which this - * manager provides the administration forms. - * - * @return The class of the application for which this - * manager provides the administration forms. - */ - Class getApplication(); - - /** - * Provides a pane with administration forms for the application or for an - * instance of the application if the application is not a singleton. - * - * @return A container containing one or more forms for managing instances - * of an application. - */ - ApplicationInstanceAwareContainer getApplicationAdminForm(); - - /** - * Provides a form for creating new instances of applications. For - * singleton applications an implementation of this method will return - * {@code null}. - * - * @return A form for creating new instances of applications or - * {@code null} if the is a singleton. - */ - Form getApplicationCreateForm(); - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java deleted file mode 100644 index eec1959ed..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2010 Jens Pelzetter, ScientificCMS.org team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * Helper class for managing the implementations of the {@link ApplicationManager} interface - * - * @author Jens Pelzetter - * @version $Id: ApplicationManagers.java 2294 2013-08-05 18:39:46Z jensp $ - */ -public class ApplicationManagers { - - private Map> appManagers = new HashMap>(); - - /** - * The one and only instance of this class. The pattern used here ensures that - * the instance is created at the first access, but not earlier. - */ - private static class Instance { - private static final ApplicationManagers INSTANCE = new ApplicationManagers(); - } - - /** - * Private constructor to ensure that no instances of this class can be created. - */ - private ApplicationManagers() { - //Nothing - } - - /** - * @return The instance of this class. - */ - public static ApplicationManagers getInstance() { - return Instance.INSTANCE; - } - - public static void register(final ApplicationManager appManager) { - getInstance().registerApplicationManager(appManager); - } - - public void registerApplicationManager(final ApplicationManager appManager) { - appManagers.put(appManager.getApplication().getName(), appManager); - } - - protected Map> getApplicationManagers() { - return Collections.unmodifiableMap(appManagers); - } - - protected ApplicationManager getApplicationManager(final String appClassName) { - return appManagers.get(appClassName); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java deleted file mode 100644 index 6a8b739e3..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeNode; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationTreeModel implements TreeModel { - - public ApplicationTreeModel() { - - } - - @Override - public TreeNode getRoot(final PageState state) { - return new RootTreeNode(); - } - - @Override - public boolean hasChildren(final TreeNode node, - final PageState state) { - if (node instanceof RootTreeNode) { - return true; - } else if (node instanceof ApplicationTypeTreeNode) { - final ApplicationTypeTreeNode typeNode - = (ApplicationTypeTreeNode) node; - final ApplicationType appType = typeNode.getApplicationType(); - if (appType.singleton()) { - return false; - } else { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ApplicationRepository appRepo = cdiUtil.findBean( - ApplicationRepository.class); - final List apps = appRepo.findByType(appType - .name()); - return !apps.isEmpty(); - } - } else if (node instanceof ApplicationInstanceTreeNode) { - return false; - } else { - throw new IllegalArgumentException( - "The ApplicationTreeModel can only work with " - + "ApplicationTypeTreeNodes and " - + "ApplicationInstanceTreeNodes."); - } - } - - @Override - public Iterator getChildren(final TreeNode node, - final PageState state) { - if (node instanceof RootTreeNode) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final org.libreccm.web.ApplicationManager appManager = cdiUtil - .findBean(org.libreccm.web.ApplicationManager.class); - return new AppTypesIterator(appManager.getApplicationTypes() - .values()); - } else if (node instanceof ApplicationTypeTreeNode) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ApplicationRepository appRepo = cdiUtil.findBean( - ApplicationRepository.class); - return new AppIterator(appRepo.findByType( - ((ApplicationTypeTreeNode) node).getApplicationType().name())); - } else { - throw new IllegalArgumentException( - "ApplicationTreeModel#getChildren can only process " - + "the RootTreeNode and the instances of " - + "ApplicationTypeTreeNode."); - } - } - - private class RootTreeNode implements TreeNode { - - public RootTreeNode() { - //Nothing - } - - @Override - public Object getKey() { - return "-1"; - } - - @Override - public Object getElement() { - return "/"; - } - - } - - private class AppTypesIterator - implements Iterator { - - private final Iterator appTypes; - - public AppTypesIterator(final Collection appTypes) { - this.appTypes = appTypes.iterator(); - } - - @Override - public boolean hasNext() { - return appTypes.hasNext(); - } - - @Override - public ApplicationTypeTreeNode next() { - return new ApplicationTypeTreeNode(appTypes.next()); - } - - } - - private class AppIterator implements Iterator { - - private final Iterator applications; - - public AppIterator(final Collection applications) { - this.applications = applications.iterator(); - } - - @Override - public boolean hasNext() { - return applications.hasNext(); - } - - @Override - public ApplicationInstanceTreeNode next() { - return new ApplicationInstanceTreeNode(applications.next()); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java deleted file mode 100644 index fba22304d..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeModelBuilder; -import com.arsdigita.util.LockableImpl; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationTreeModelBuilder - extends LockableImpl implements TreeModelBuilder { - - @Override - public TreeModel makeModel(final Tree tree, - final PageState state) { - tree.expand("-1", state); - return new ApplicationTreeModel(); - } - - - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java deleted file mode 100644 index 374c44be6..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.globalization.GlobalizedMessage; - -import com.fasterxml.jackson.databind.deser.CreatorProperty; -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationType; - -import java.util.Arrays; -import java.util.Iterator; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationTypePropertySheetModel implements PropertySheetModel { - - private static enum AppTypeProperty { - NAME, - TITLE, - DESC, - APP_CLASS, - CREATOR, - SINGLETON, - SERVLET_CLASS, - SERVLET_PATH, - } - - private final ApplicationType applicationType; - private final Iterator propertyIterator; - private AppTypeProperty currentProperty; - - public ApplicationTypePropertySheetModel( - final ApplicationType applicationType) { - - this.applicationType = applicationType; - propertyIterator = Arrays.asList(AppTypeProperty.values()).iterator(); - } - - @Override - public boolean nextRow() { - if (applicationType == null) { - return false; - } - - if (propertyIterator.hasNext()) { - currentProperty = propertyIterator.next(); - return true; - } else { - return false; - } - } - - @Override - public String getLabel() { - return currentProperty.toString(); - } - - private GlobalizedMessage generateGlobalizedLabel( - final AppTypeProperty property) { - - final String key = String.join( - "", - "ui.admin.applications.type.property_sheet.", - property.toString().toLowerCase()); - - return new GlobalizedMessage(key, ADMIN_BUNDLE); - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - return generateGlobalizedLabel(currentProperty); - } - - @Override - public String getValue() { - switch(currentProperty) { - case NAME: - return applicationType.name(); - case TITLE: - return getAppTypeTitle(); - case DESC: - return getAppTypeDesc(); - case APP_CLASS: - return applicationType.applicationClass().getName(); - case CREATOR: - return applicationType.creator().getName(); - case SINGLETON: - return Boolean.toString(applicationType.singleton()); - case SERVLET_CLASS: - return applicationType.servlet().getName(); - case SERVLET_PATH: - return applicationType.servletPath(); - default: - return ""; - } - } - - private String getAppTypeTitle() { - final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - - return appManager.getApplicationTypeTitle(applicationType); - } - - private String getAppTypeDesc() { - final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - - return appManager.getApplicationTypeDescription(applicationType); - } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java deleted file mode 100644 index 1b94de47a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.bebop.PropertySheetModelBuilder; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationType; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationTypePropertySheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - private final ParameterSingleSelectionModel selectedAppType; - - public ApplicationTypePropertySheetModelBuilder( - final ParameterSingleSelectionModel selectedAppType) { - - this.selectedAppType = selectedAppType; - - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - final String selectedAppTypeStr = selectedAppType.getSelectedKey(state); - final ApplicationType applicationType; - - if (selectedAppTypeStr == null || selectedAppTypeStr.isEmpty()) { - applicationType = null; - } else { - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - applicationType = appManager.getApplicationTypes().get( - selectedAppTypeStr); - } - - return new ApplicationTypePropertySheetModel(applicationType); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java deleted file mode 100644 index 7b5fd1483..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.tree.TreeNode; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationType; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationTypeTreeNode implements TreeNode { - - protected final static String TYPE_NODE_KEY_PREFIX = "apptype_"; - - private final ApplicationType applicationType; - - public ApplicationTypeTreeNode(final ApplicationType applicationType) { - this.applicationType = applicationType; - } - - @Override - public Object getKey() { - return String.join("", TYPE_NODE_KEY_PREFIX, applicationType.name()); - } - - @Override - public Object getElement() { - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class); - - return appManager.getApplicationTypeTitle(applicationType); - } - - public ApplicationType getApplicationType() { - return applicationType; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java deleted file mode 100644 index a621470b9..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.event.ChangeEvent; -import com.arsdigita.bebop.event.ChangeListener; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.LayoutPanel; -import com.arsdigita.ui.admin.applications.tree.LegacyApplicationTreeModelBuilder; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.util.Optional; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * A tab for managing CcmApplication and application instances. - * - * @author pb - * @author Jens Pelzetter - */ -public class ApplicationsAdministrationTab extends LayoutPanel { - - private final Tree applicationTree; - private final Map appPanes - = new HashMap<>(); - private final Map instancePanes - = new HashMap<>(); - private final BoxPanel appPanel; - - /** - * Constructor - */ - public ApplicationsAdministrationTab() { - - super(); - - setClassAttr("sidebarNavPanel"); - setAttribute("navbar-title", "Sitemap"); - - applicationTree = new Tree(new LegacyApplicationTreeModelBuilder()); - applicationTree.addChangeListener(new TreeStateChangeListener()); - - setClassAttr("navbar"); - - setLeft(applicationTree); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final org.libreccm.web.ApplicationManager appManager = cdiUtil.findBean( - org.libreccm.web.ApplicationManager.class); - - final Collection applicationTypes = appManager. - getApplicationTypes().values(); - - final Map> appManagers - = ApplicationManagers. - getInstance(). - getApplicationManagers(); - - for (ApplicationType appType : applicationTypes) { - if (appType.singleton()) { - createSingletonAppPane(appType, appManagers); - } else { - createAppPane(appType, appManagers); - } - } - - appPanel = new BoxPanel(); - appPanel.setClassAttr("main"); - for (Map.Entry entry : appPanes.entrySet()) { - appPanel.add(entry.getValue()); - } - - for (Map.Entry entry : instancePanes. - entrySet()) { - appPanel.add(entry.getValue()); - } - - //setRight(appPanel); - setBody(appPanel); - } - - private void createSingletonAppPane(final ApplicationType applicationType, - final Map> appManagers) { - final String appObjectType = applicationType.name(); - - final ApplicationManager manager = appManagers.get(appObjectType); - final LegacySingletonApplicationPane pane; - if (manager == null) { - pane = new LegacySingletonApplicationPane(applicationType, null); - } else { - pane = new LegacySingletonApplicationPane( - applicationType, appManagers.get(appObjectType). - getApplicationAdminForm()); - } - appPanes.put(appObjectType, pane); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - private void createAppPane( - final ApplicationType applicationType, - final Map> appManagers) { - final ApplicationManager appManager = appManagers.get( - applicationType.name()); - final Form createForm; - if (appManager == null) { - createForm = null; - } else { - createForm = appManager.getApplicationCreateForm(); - } - - final LegacyMultiInstanceApplicationPane appPane - = new LegacyMultiInstanceApplicationPane( - applicationType, createForm); - appPanes.put(applicationType.name(), appPane); - createInstancePane(applicationType, appManagers); - } - - private void createInstancePane( - final ApplicationType applicationType, - final Map> managementForms) { - final ApplicationManager manager = managementForms.get( - applicationType.name()); - final LegacyApplicationInstancePane instPane; - if (manager == null) { - instPane = new LegacyApplicationInstancePane(new Placeholder()); - } else { - instPane = new LegacyApplicationInstancePane(managementForms.get( - applicationType.name()). - getApplicationAdminForm()); - } - - instancePanes.put(applicationType.name(), instPane); - } - - @Override - public void register(final Page page) { - super.register(page); - - for (Map.Entry entry : appPanes.entrySet()) { - page.setVisibleDefault(entry.getValue(), false); - } - for (Map.Entry entry : instancePanes. - entrySet()) { - page.setVisibleDefault(entry.getValue(), false); - } - } - - private void setPaneVisible(final SimpleContainer pane, - final PageState state) { - for (Map.Entry entry : appPanes.entrySet()) { - entry.getValue().setVisible(state, false); - } - for (Map.Entry entry : instancePanes. - entrySet()) { - entry.getValue().setVisible(state, false); - } - - pane.setVisible(state, true); - } - - private class TreeStateChangeListener implements ChangeListener { - - public TreeStateChangeListener() { - //Nothing - } - - @Override - public void stateChanged(final ChangeEvent event) { - final PageState state = event.getPageState(); - - final String selectedKey = (String) applicationTree.getSelectedKey( - state); - if (selectedKey != null) { - if (selectedKey.contains(".")) { - // Selected key is a classname and therefore the key of an ApplicationPane - final LegacyBaseApplicationPane pane = appPanes.get(selectedKey); - if (pane != null) { - setPaneVisible(pane, state); - } - } else { - // Selected key is the name of a instance pane - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ApplicationRepository appRepo = cdiUtil.findBean( - ApplicationRepository.class); - - final Optional application = appRepo - .retrieveApplicationForPath(selectedKey); - - final LegacyApplicationInstancePane pane; - if (application.isPresent()) { - pane = instancePanes.get(application.getClass(). - getName()); - if (pane != null) { - pane.setApplication(application.get()); - } - } else { - pane = null; - } - - if (pane != null) { - setPaneVisible(pane, state); - } - } - } - } - - } - - private class Placeholder extends ApplicationInstanceAwareContainer { - - public Placeholder() { - super(); - final Label label = new Label(new GlobalizedMessage( - "ui.admin.applications.placeholder", ADMIN_BUNDLE)); - add(label); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java deleted file mode 100644 index d355179f9..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java +++ /dev/null @@ -1,470 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.LayoutPanel; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class ApplicationsTab extends LayoutPanel { - - private final StringParameter selectedAppTypeParam; - private final ParameterSingleSelectionModel selectedAppType; - - private final StringParameter selectedAppInstanceParam; - private final ParameterSingleSelectionModel selectedAppInstance; - - private final Tree applicationTree; - private final BoxPanel managementLinks; - private final Text placeholderInstances; - private final Text placeholderSingletonSettings; - private final BoxPanel appInfo; - - private final Map instanceForms; - private final Map settingsPanes; - - public ApplicationsTab() { - super(); - - setClassAttr("sidebarNavPanel"); - - selectedAppTypeParam = new StringParameter("selectedAppType"); - selectedAppType = new ParameterSingleSelectionModel<>( - selectedAppTypeParam); - - selectedAppInstanceParam = new StringParameter("selectedAppInstance"); - selectedAppInstance = new ParameterSingleSelectionModel<>( - selectedAppInstanceParam); - - instanceForms = new HashMap<>(); - settingsPanes = new HashMap<>(); - - applicationTree = new Tree(new ApplicationTreeModelBuilder()); - applicationTree.addChangeListener(e -> { - - final PageState state = e.getPageState(); - final String key = (String) applicationTree.getSelectedKey(state); - - if (key.startsWith( - ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX)) { - - //Instance is selected - final String instanceId = key.substring( - ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX - .length()); - selectedAppInstance.setSelectedKey(state, instanceId); - - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - final Optional application = appRepo.findById( - Long.parseLong(instanceId)); - if (application.isPresent()) { - selectedAppType.setSelectedKey( - state, application.get().getApplicationType()); - } - - showAppSettings(state); - - } else if (key.startsWith( - ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX)) { - - //ApplicationType node is selected - showManagementLinks(state); - final String appTypeKey = key.substring( - ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX.length()); - - selectedAppType.setSelectedKey(state, appTypeKey); - - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - final ApplicationType appType = appManager.getApplicationTypes() - .get(appTypeKey); - - if (appType == null) { - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - hideAppInfo(state); - hideInstances(state); - hideManagementLinks(state); - hideSingletonAppSettings(state); - } else if (appType.singleton()) { - showSingletonAppSettings(state); - } else { - showInstances(state); - } - - } else { - throw new IllegalArgumentException( - "The key of the selected must be Long or a String"); - } - - }); - - setLeft(applicationTree); - - final BoxPanel managementPanel = new BoxPanel(BoxPanel.VERTICAL); - managementLinks = new BoxPanel(BoxPanel.HORIZONTAL); - - final ActionLink singletonAppSettingsLink - = new SingletonAppSettingsLink( - new GlobalizedMessage("ui.admin.applications.singleton.link", - ADMIN_BUNDLE)); - singletonAppSettingsLink.addActionListener(e -> { - final PageState state = e.getPageState(); - - showSingletonAppSettings(state); - }); - managementLinks.add(singletonAppSettingsLink); - - final ActionLink instancesLink = new InstancesLink( - new GlobalizedMessage("ui.admin.applications.instances.link", - ADMIN_BUNDLE)); - instancesLink.addActionListener(e -> { - final PageState state = e.getPageState(); - - showInstances(state); - }); - managementLinks.add(instancesLink); - - final ActionLink infoLink = new ActionLink(new GlobalizedMessage( - "ui.admin.applications.info.link", ADMIN_BUNDLE)); - infoLink.addActionListener(e -> { - final PageState state = e.getPageState(); - - showAppInfo(state); - }); - managementLinks.add(infoLink); - - managementPanel.add(managementLinks); - - placeholderInstances = new Text("placeholder instances"); - managementPanel.add(placeholderInstances); - - placeholderSingletonSettings - = new Text("placeholder singleton settings"); - managementPanel.add(placeholderSingletonSettings); - - appInfo = new BoxPanel(BoxPanel.VERTICAL); - final Label appInfoHeading = new Label(new GlobalizedMessage( - "ui.admin.applications.info.heading", ADMIN_BUNDLE)); - appInfoHeading.setClassAttr("heading"); - appInfo.add(appInfoHeading); - - final PropertySheet appInfoSheet = new PropertySheet( - new ApplicationTypePropertySheetModelBuilder(selectedAppType)); - appInfo.add(appInfoSheet); - managementPanel.add(appInfo); - - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class); - final Map appTypes = appManager - .getApplicationTypes(); - - appTypes.entrySet().forEach(e -> { - final String appTypeName = e.getKey(); - final Class instanceFormClass - = e.getValue() - .instanceForm(); - final Class settingsPaneClass - = e.getValue() - .settingsPane(); - final boolean singleton = e.getValue().singleton(); - - if (singleton) { - final AbstractAppSettingsPane settingsPane = createSettingsPane( - settingsPaneClass); - managementPanel.add(settingsPane); - settingsPanes.put(appTypeName, settingsPane); - } else { - final AbstractAppInstanceForm instanceForm = createInstanceForm( - String.format("%s_instance_form", appTypeName), - instanceFormClass); - managementPanel.add(instanceForm); - instanceForms.put(appTypeName, instanceForm); - final AbstractAppSettingsPane settingsPane = createSettingsPane( - settingsPaneClass); - managementPanel.add(settingsPane); - settingsPanes.put(appTypeName, settingsPane); - } - - }); - - setBody(managementPanel); - - } - - @Override - public void register(final Page page) { - super.register(page); - - page.addGlobalStateParam(selectedAppTypeParam); - page.addGlobalStateParam(selectedAppInstanceParam); - - page.setVisibleDefault(managementLinks, false); - page.setVisibleDefault(placeholderInstances, false); - page.setVisibleDefault(placeholderSingletonSettings, false); - page.setVisibleDefault(appInfo, false); - - settingsPanes.forEach((k, v) -> { - page.setVisibleDefault(v, false); - }); - - instanceForms.forEach((k, v) -> { - page.setVisibleDefault(v, false); - }); - - } - - protected void showManagementLinks(final PageState state) { - managementLinks.setVisible(state, true); - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - } - - protected void hideManagementLinks(final PageState state) { - managementLinks.setVisible(state, false); - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - } - - protected void showInstances(final PageState state) { - - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - - //placeholderInstances.setVisible(state, true); - final String appType = selectedAppType.getSelectedKey(state); - if (instanceForms.containsKey(appType)) { - instanceForms.get(appType).setVisible(state, true); - } - placeholderSingletonSettings.setVisible(state, false); - appInfo.setVisible(state, false); - } - - protected void hideInstances(final PageState state) { - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - placeholderInstances.setVisible(state, false); - } - - protected void showSingletonAppSettings(final PageState state) { - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - placeholderInstances.setVisible(state, false); - //placeholderSingletonSettings.setVisible(state, true); - - final String appType = selectedAppType.getSelectedKey(state); - if (settingsPanes.containsKey(appType)) { - settingsPanes.get(appType).setVisible(state, true); - } - - appInfo.setVisible(state, false); - } - - protected void showAppSettings(final PageState state) { - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - hideManagementLinks(state); - placeholderInstances.setVisible(state, false); - placeholderSingletonSettings.setVisible(state, false); - - if (settingsPanes.containsKey(selectedAppType.getSelectedKey(state))) { - settingsPanes.get(selectedAppType.getSelectedKey(state)).setVisible( - state, true); - } - -// final String appId = selectedAppInstance.getSelectedKey(state); -// final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean( -// ApplicationRepository.class); -// final CcmApplication application = appRepo.findById(Long -// .parseLong(appId)); -// if (application != null) { -// final String appType = application.getApplicationType(); -// if (settingsPanes.containsKey(appType)) { -// settingsPanes.get(appType).setVisible(state, true); -// } -// } - } - - protected void hideSingletonAppSettings(final PageState state) { - placeholderSingletonSettings.setVisible(state, false); - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - } - - protected void showAppInfo(final PageState state) { - placeholderInstances.setVisible(state, false); - placeholderSingletonSettings.setVisible(state, false); - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - appInfo.setVisible(state, true); - } - - protected void hideAppInfo(final PageState state) { - hideAllInstanceForms(state); - hideAllSettingsPanes(state); - appInfo.setVisible(state, false); - } - - private void hideAllInstanceForms(final PageState state) { - instanceForms.values().forEach(f -> { - f.setVisible(state, false); - }); - } - - private void hideAllSettingsPanes(final PageState state) { - settingsPanes.values().forEach(p -> { - p.setVisible(state, false); - }); - } - - private AbstractAppInstanceForm createInstanceForm( - final String name, - final Class instanceFormClass) { - - try { - final Constructor constructor - = instanceFormClass - .getConstructor(String.class, - ParameterSingleSelectionModel.class, - ParameterSingleSelectionModel.class); - - return constructor.newInstance(name, - selectedAppType, - selectedAppInstance); - } catch (NoSuchMethodException | - SecurityException | - InstantiationException | - IllegalAccessException | - IllegalArgumentException | - InvocationTargetException ex) { - throw new UncheckedWrapperException(ex); - } - - } - - private AbstractAppSettingsPane createSettingsPane( - Class settingsPaneClass) { - - try { - final Constructor constructor - = settingsPaneClass - .getDeclaredConstructor(ParameterSingleSelectionModel.class, - ParameterSingleSelectionModel.class); - - return constructor.newInstance(selectedAppType, - selectedAppInstance); - - } catch (NoSuchMethodException | - SecurityException | - InstantiationException | - IllegalAccessException | - IllegalArgumentException | - InvocationTargetException ex) { - throw new UncheckedWrapperException(ex); - } - } - - private class SingletonAppSettingsLink extends ActionLink { - - public SingletonAppSettingsLink(final GlobalizedMessage label) { - super(label); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - if (selectedAppType.getSelectedKey(state) == null) { - return false; - } else { - final org.libreccm.web.ApplicationManager appManager - = CdiUtil - .createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - final ApplicationType appType = appManager - .getApplicationTypes().get(selectedAppType - .getSelectedKey(state)); - - return appType.singleton(); - } - } else { - return false; - } - } - - } - - private class InstancesLink extends ActionLink { - - public InstancesLink(final GlobalizedMessage label) { - super(label); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - if (selectedAppType.getSelectedKey(state) == null) { - return false; - } else { - final org.libreccm.web.ApplicationManager appManager - = CdiUtil - .createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - final ApplicationType appType = appManager - .getApplicationTypes().get(selectedAppType - .getSelectedKey(state)); - - return !appType.singleton(); - } - } else { - return false; - } - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java deleted file mode 100644 index a70b6808c..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.bebop.parameters.NotEmptyValidationListener; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationCreateException; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class DefaultApplicationInstanceForm extends AbstractAppInstanceForm { - - private static final int COL_PRIMARY_URL = 0; - - private SaveCancelSection saveCancelSection; - - public DefaultApplicationInstanceForm( - final String name, - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - - super(name, selectedAppType, selectedAppInstance); - - } - - @Override - protected void createWidgets() { - - addInstanceTable(); - - final Label newInstanceFormHeading = new Label(new GlobalizedMessage( - "ui.admin.applications.new_instance_form.title", ADMIN_BUNDLE)); - newInstanceFormHeading.setClassAttr("heading"); - add(newInstanceFormHeading); - - final TextField primaryUrl = new TextField("new_instance_primary_url"); - primaryUrl.setLabel(new GlobalizedMessage( - "ui.admin.applications.new_instance.primary_url", ADMIN_BUNDLE)); - primaryUrl.addValidationListener(new NotEmptyValidationListener( - new GlobalizedMessage( - "ui.admin.applications.new_instance.primary_url.error.not_empty", - ADMIN_BUNDLE))); - add(primaryUrl); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - //add(new Text("placeholder")); - } - - protected SaveCancelSection getSaveCancelSection() { - return saveCancelSection; - } - - protected void addInstanceTable() { - final Label tableHeading = new Label(new GlobalizedMessage( - "ui.admin.applications.instance_table.heading", ADMIN_BUNDLE)); - tableHeading.setClassAttr("heading"); - add(tableHeading); - - final Table instanceTable = new Table(); - final TableColumnModel colModel = instanceTable.getColumnModel(); - colModel.add(new TableColumn( - COL_PRIMARY_URL, - new Label(new GlobalizedMessage( - "ui.admin.applications.instances_table.col_primary_url", - ADMIN_BUNDLE)))); - instanceTable.setModelBuilder(new InstanceTableModelBuilder(this)); - add(instanceTable); - } - - @Override - @SuppressWarnings("unchecked") - protected FormProcessListener createProcessListener() { - return (FormSectionEvent e) -> { - final PageState state = e.getPageState(); - if (saveCancelSection.getSaveButton().isSelected(state)) { - final FormData data = e.getFormData(); - - final String primaryUrlData = data.getString( - "new_instance_primary_url"); - - final org.libreccm.web.ApplicationManager appManager = CdiUtil - .createCdiUtil().findBean( - org.libreccm.web.ApplicationManager.class); - try { - appManager.createInstance( - getSelectedAppType(state), - primaryUrlData, - (Class) getSelectedAppType(state) - .applicationClass()); - } catch (ApplicationCreateException ex) { - throw new UncheckedWrapperException( - "Failed to create new application instance.", ex); - } - - final Class clazz = getSelectedAppType(state) - .applicationClass(); - if (!clazz.isAssignableFrom(CcmApplication.class)) { - throw new UncheckedWrapperException(String.format( - "Application class \"%s\" is not a sub class of " - + "class \"%s\". Something is wrong...", - clazz.getName(), CcmApplication.class.getName())); - } - final CcmApplication application; - try { - application = (CcmApplication) clazz.newInstance(); - } catch (InstantiationException | IllegalAccessException ex) { - throw new UncheckedWrapperException( - String.format("Failed to create object of " - + "class \"%s\".", - clazz.getName()), - ex); - } - - application.setPrimaryUrl(primaryUrlData); - - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - appRepo.save(application); - } - }; - } - - private class InstanceTableModelBuilder extends LockableImpl - implements TableModelBuilder { - - private final AbstractAppInstanceForm instanceForm; - - public InstanceTableModelBuilder( - final AbstractAppInstanceForm instanceForm) { - this.instanceForm = instanceForm; - } - - @Override - public TableModel makeModel(final Table table, final PageState state) { - return new InstanceTableModel(instanceForm.getSelectedAppType(state)); - } - - } - - private class InstanceTableModel implements TableModel { - - private final List instances; - private int index = -1; - - public InstanceTableModel(final ApplicationType appType) { - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - instances = appRepo.findByType(appType.name()); - } - - @Override - public int getColumnCount() { - return 1; - } - - @Override - public boolean nextRow() { - index++; - return index < instances.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - switch (columnIndex) { - case COL_PRIMARY_URL: - return instances.get(index).getPrimaryUrl(); - default: - throw new IllegalArgumentException("Illegal columnIndex"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return Long.toString(instances.get(index).getObjectId()); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java deleted file mode 100644 index 791acd5b4..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.libreccm.web.ApplicationType; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class DefaultApplicationSettingsPane - extends AbstractAppSettingsPane { - - public DefaultApplicationSettingsPane( - final ParameterSingleSelectionModel selectedAppType, - final ParameterSingleSelectionModel selectedAppInstance) { - - super(selectedAppType, selectedAppInstance); - - final Label label = new Label(); - label.addPrintListener(e -> { - final PageState state = e.getPageState(); - final ApplicationType appType = getSelectedAppType(state); - - final GlobalizedMessage message; - if (appType.singleton()) { - message = new GlobalizedMessage( - "ui.admin.applications.settings.singleton.no_setting_for", - ADMIN_BUNDLE, - new String[]{appType.name()}); - } else { - message = new GlobalizedMessage( - "ui.admin.applications.settings.instance.no_setting_for", - ADMIN_BUNDLE, - new String[]{appType.name()}); - } - - final Label target = (Label) e.getTarget(); - target.setLabel(message); - }); - - add(label); - } - - @Override - protected void createWidgets() { - -// final Label label = new Label(); -// label.addPrintListener(e -> { -// final PageState state = e.getPageState(); -// final ApplicationType appType = getSelectedAppType(state); -// -// final GlobalizedMessage message; -// if (appType.singleton()) { -// message = new GlobalizedMessage( -// "ui.admin.applications.settings.singleton.no_setting_for", -// ADMIN_BUNDLE, -// new String[]{appType.name()}); -// } else { -// message = new GlobalizedMessage( -// "ui.admin.applications.settings.instance.no_setting_for", -// ADMIN_BUNDLE, -// new String[]{appType.name()}); -// } -// -// final Label target = (Label) e.getTarget(); -// target.setLabel(message); -// }); -// -// add(label); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java deleted file mode 100644 index d894bf1cb..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.ui.admin.GlobalizationUtil; -import com.arsdigita.globalization.GlobalizedMessage; - -import java.util.List; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -/** - * A property sheet model for displaying informations about an - * {@link ApplicationType} using a {@link PropertySheet}. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationInfoPropertySheetModel.java 2220 2013-06-19 - 15:26:58Z jensp $ - */ -public class LegacyApplicationInfoPropertySheetModel implements PropertySheetModel { - - private static final int APP_TITLE = 0; - private static final int APP_CLASS = 1; - private static final int APP_SINGLETON = 2; - private static final int APP_DESC = 3; - private static final int SINGLETON_PATH = 4; - private final ApplicationType applicationType; - private int currentIndex = -1; - - public LegacyApplicationInfoPropertySheetModel( - final ApplicationType applicationType) { - this.applicationType = applicationType; - } - - @Override - public boolean nextRow() { - if (applicationType.singleton() && currentIndex < SINGLETON_PATH) { - currentIndex++; - return true; - } else if (!applicationType.singleton() && currentIndex < APP_DESC) { - currentIndex++; - return true; - } else { - currentIndex = -1; - return false; - } - } - - public String getLabel() { - switch (currentIndex) { - case APP_TITLE: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.title.label"). - localize(); - case APP_CLASS: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.app_class.label") - .localize(); - case APP_SINGLETON: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton.label") - .localize(); - case APP_DESC: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.desc.label"). - localize(); - case SINGLETON_PATH: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton_instance.path.label") - .localize(); - default: - return "unknown"; - } - } - - public GlobalizedMessage getGlobalizedLabel() { - switch (currentIndex) { - case APP_TITLE: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.title.label"); - case APP_CLASS: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.app_class.label"); - case APP_SINGLETON: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton.label"); - case APP_DESC: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.desc.label"); - case SINGLETON_PATH: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton_instance.path.label"); - default: - return GlobalizationUtil.globalize("unknown"); - } - } - - @Override - public String getValue() { - switch (currentIndex) { - case APP_TITLE: - return applicationType.name(); - case APP_CLASS: - return applicationType.name(); - case APP_SINGLETON: - if (applicationType.singleton()) { - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton.yes") - .localize(); - } else { - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.singleton.no") - .localize(); - } - case APP_DESC: - return applicationType.descKey(); - case SINGLETON_PATH: - final String path; - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - final List instances - = appRepo.findByType( - applicationType.name()); - if (instances.isEmpty()) { - path = ""; - } else { - path = instances.get(0).getPrimaryUrl(); - } - - return path; - default: - return ""; - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java deleted file mode 100644 index 194d83ffb..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.bebop.PropertySheetModelBuilder; -import com.arsdigita.util.LockableImpl; -import org.libreccm.web.ApplicationType; - -/** - * {@link PropertySheetModelBuilder} implementation for the the {@link LegacyApplicationInfoPropertySheetModel}. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationInfoPropertySheetModelBuilder.java 2219 2013-06-19 08:16:11Z jensp $ - */ -public class LegacyApplicationInfoPropertySheetModelBuilder -extends LockableImpl implements PropertySheetModelBuilder { - - private final ApplicationType applicationType; - - public LegacyApplicationInfoPropertySheetModelBuilder( - final ApplicationType applicationType) { - super(); - this.applicationType = applicationType; - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - return new LegacyApplicationInfoPropertySheetModel(applicationType); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java deleted file mode 100644 index 47dde0d1f..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; -import com.arsdigita.ui.admin.GlobalizationUtil; -import org.libreccm.web.CcmApplication; - - - -/** - * This pane shows informations about a specific instance of a multi instance application, like - * title, parent application (if any) and the path. Also it contains a form for editing settings - * specific to the instance. - * - * @author Jens Pelzetter - * @version $Id$ - */ -public class LegacyApplicationInstancePane extends SegmentedPanel { - - private CcmApplication application; - private final ApplicationInstanceAwareContainer appAdminPane; - private final LegacyApplicationInstancePropertySheetModelBuilder modelBuilder; - - public LegacyApplicationInstancePane( - final ApplicationInstanceAwareContainer appAdminPane) { - - super(); - this.appAdminPane = appAdminPane; - - modelBuilder = new LegacyApplicationInstancePropertySheetModelBuilder(); - final PropertySheet appInstInfoPanel = new PropertySheet(modelBuilder); - - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInstancePane.info.heading")), - appInstInfoPanel); - - if (appAdminPane == null) { - - final Label noAdminPaneLabel = new Label(); - noAdminPaneLabel.addPrintListener(new PrintListener() { - @Override - public void prepare(final PrintEvent event) { - final Label target = (Label) event.getTarget(); - - target.setLabel(GlobalizationUtil.globalize( - "ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found", - new String[]{application.getApplicationType()})); - } - - }); - - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstanceApplicationPane.manage.heading")), - noAdminPaneLabel); - } else { - //appAdminPane.setAppInstance(appInstance); - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInstancePane.manage.heading")), - appAdminPane); - } - } - - public void setApplication(final CcmApplication application) { - this.application = application; - appAdminPane.setAppInstance(application); - modelBuilder.setApplication(application); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java deleted file mode 100644 index 4b26cd68a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.ui.admin.GlobalizationUtil; -import org.libreccm.web.CcmApplication; - -/** - * A {@link PropertySheetModel} implementation for displaying informations about an instance of an application - * using a {@link PropertySheet}. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationInstancePropertySheetModel.java 2923 2014-10-27 18:55:26Z jensp $ - */ -public class LegacyApplicationInstancePropertySheetModel implements PropertySheetModel { - - private static final int INST_TITLE = 0; - private static final int INST_PARENT = 1; - private static final int INST_PATH = 2; - private static final int INST_DESC = 3; - private final CcmApplication application; - private int currentIndex = -1; - - - public LegacyApplicationInstancePropertySheetModel(final CcmApplication application) { - this.application = application; - } - - @Override - public boolean nextRow() { - currentIndex++; - return currentIndex <= INST_DESC; - } - - @Override - public String getLabel() { - switch (currentIndex) { - case INST_TITLE: - return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.title.label"). - localize(); - case INST_PARENT: - return (String) GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInstancePane.parent_app.label").localize(); - case INST_PATH: - return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.path.label"). - localize(); - case INST_DESC: - return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.desc.label"). - localize(); - default: - return ""; - } - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - switch (currentIndex) { - case INST_TITLE: - return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.title.label"); - case INST_PARENT: - return GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInstancePane.parent_app.label"); - case INST_PATH: - return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.path.label"); - case INST_DESC: - return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.desc.label"); - default: - return GlobalizationUtil.globalize("unknown"); - } - } - - @Override - public String getValue() { - switch (currentIndex) { - case INST_TITLE: - return application.getTitle().getValue(); - case INST_PARENT: - if (application.getParent() == null) { - return ""; - } else { - return application.getParent().getTitle().getValue(); - } - case INST_PATH: - return application.getPrimaryUrl(); - case INST_DESC: - return application.getDescription().getValue(); - default: - return ""; - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java deleted file mode 100644 index 0bcc1e78c..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.bebop.PropertySheetModelBuilder; -import com.arsdigita.util.LockableImpl; -import org.libreccm.web.CcmApplication; - -/** - * {@link PropertySheetModelBuilder} implementation for the {@link LegacyApplicationInstancePropertySheetModel}. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationInstancePropertySheetModelBuilder.java 2293 2013-08-05 11:00:18Z jensp $ - */ -public class LegacyApplicationInstancePropertySheetModelBuilder -extends LockableImpl implements PropertySheetModelBuilder { - - private CcmApplication application; - - public LegacyApplicationInstancePropertySheetModelBuilder() { - super(); - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) { - return new LegacyApplicationInstancePropertySheetModel(application); - } - - public void setApplication(final CcmApplication application) { - this.application = application; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java deleted file mode 100644 index ac88994cc..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.ui.admin.GlobalizationUtil; -import org.libreccm.web.ApplicationType; - -/** - * Basic application pane containing the parts common for singleton and multi instance applications types. Shows - * informations about a specific application type. - * - * @author Jens Pelzetter - * @version $Id$ - */ -public class LegacyBaseApplicationPane extends SegmentedPanel { - - public LegacyBaseApplicationPane(final ApplicationType applicationType) { - super(); - - final PropertySheet appInfoPanel = new PropertySheet( - new LegacyApplicationInfoPropertySheetModelBuilder( - applicationType)); - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.applications.ApplicationInfoSection.heading")), - appInfoPanel); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java deleted file mode 100644 index 7954b2d3f..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.ui.admin.GlobalizationUtil; -import com.arsdigita.util.LockableImpl; - -import java.util.ArrayList; -import java.util.List; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -/** - * Pane for multi instance applications. Additional to the data provided by - * {@link LegacyBaseApplicationPane} it shows a table of all instances of the - * application type and a form for creating new instances of the application - * type. - * - * @param - * @author Jens Pelzetter - * @version $Id$ - */ -public class LegacyMultiInstanceApplicationPane - extends LegacyBaseApplicationPane { - - private final static int COL_TITLE = 0; - private final static int COL_URL = 1; - private final static int COL_DESC = 2; - - public LegacyMultiInstanceApplicationPane(final ApplicationType applicationType, - final Form createForm) { - super(applicationType); - - //final ApplicationCollection applications = Application.retrieveAllApplications(applicationType. - // getApplicationObjectType()); - //applications.rewind(); - final Table table = new Table(); - table.getColumnModel().add( - new TableColumn(COL_TITLE, - new Label(GlobalizationUtil.globalize( - "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_title.header")))); - table.getColumnModel().add( - new TableColumn(COL_URL, - new Label(GlobalizationUtil. - globalize( - "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_url.header")))); - table.getColumnModel().add( - new TableColumn(COL_DESC, - new Label(GlobalizationUtil. - globalize( - "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_desc.header")))); - - //table.setModelBuilder(new ApplicationInstancesTableModelBuilder(applications)); - table.setModelBuilder(new ApplicationInstancesTableModelBuilder( - applicationType.name())); - - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstanceApplicationPane.instances")), - table); - - if (createForm == null) { - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstanceApplicationPane.manage_instances.heading")), - new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstancePane.manage.no_create_form_found", - new String[]{applicationType.name()}))); - } else { - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstanceApplicationPane.create_instance")), - createForm); - - } - } - - private class ApplicationInstancesTableModelBuilder extends LockableImpl - implements TableModelBuilder { - - //private final ApplicationCollection applications; - private final String appType; - - //public ApplicationInstancesTableModelBuilder(final ApplicationCollection applications) { - // super(); - // - // this.applications = applications; - //} - public ApplicationInstancesTableModelBuilder(final String appType) { - super(); - - //this.applications = Application.retrieveAllApplications(appType); - this.appType = appType; - } - - @Override - public TableModel makeModel(final Table table, final PageState state) { - return new ApplicationInstancesTableModel(table, appType); - } - } - - private class ApplicationInstancesTableModel implements TableModel { - - private final Table table; - //private final ApplicationCollection applications; - private final List appData = new ArrayList<>(); - private int currentIndex = -1; - - //public ApplicationInstancesTableModel(final Table table, final ApplicationCollection applications) { - // this.table = table; - // this.applications = applications; - //} - public ApplicationInstancesTableModel(final Table table, - final String appType) { - this.table = table; - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - final List applications = appRepo. - findByType(appType); - for (CcmApplication application : applications) { - addAppData(application); - } - } - - private void addAppData(final CcmApplication application) { - appData.add(new AppData(application.getTitle().getValue(), - application.getDescription().getValue(), - application.getPrimaryUrl())); - } - - @Override - public int getColumnCount() { - return table.getColumnModel().size(); - } - - @Override - public boolean nextRow() { - currentIndex++; - return currentIndex < appData.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - switch (columnIndex) { - case COL_TITLE: - //return applications.getApplication().getTitle(); - return appData.get(currentIndex).getTitle(); - case COL_DESC: - //return applications.getApplication().getDescription(); - return appData.get(currentIndex).getDescription(); - case COL_URL: - //return applications.getApplication().getPath(); - return appData.get(currentIndex).getPath(); - default: - return null; - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - //if (SessionManager.getSession().getTransactionContext().inTxn()) { - // SessionManager.getSession().getTransactionContext().commitTxn(); - //} - //return applications.getApplication().getPath(); - return appData.get(currentIndex).getPath(); - } - } - - private class AppData { - - private final String title; - private final String description; - private final String path; - - public AppData() { - title = ""; - description = ""; - path = ""; - } - - public AppData(final String title, final String description, - final String path) { - this.title = title; - this.description = description; - this.path = path; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public String getPath() { - return path; - } - } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java deleted file mode 100644 index 8a0bf3943..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications; - -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.ui.admin.GlobalizationUtil; -import org.libreccm.web.ApplicationType; - -/** - * Pane for managing singleton applications. Shows a form to edit application specific settings. - * - * @author Jens Pelzetter - * @version $Id$ - */ -public class LegacySingletonApplicationPane extends LegacyBaseApplicationPane { - - public LegacySingletonApplicationPane(final ApplicationType applicationType, final SimpleContainer appAdminPane) { - super(applicationType); - - if (appAdminPane == null) { - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.SingletonApplicationPane.manage.heading")), - new Label(GlobalizationUtil.globalize( - "ui.admin.SingletonApplicationPane.manage.no_admin_pane_found", - new String[]{applicationType.name()}))); - } else { - addSegment(new Label(GlobalizationUtil.globalize( - "ui.admin.SingletonApplicationPane.manage.heading")), - appAdminPane); - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java deleted file mode 100644 index 34b8fc8c2..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications.tree; - -import com.arsdigita.bebop.tree.TreeNode; -import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab; - -import org.libreccm.web.CcmApplication; - -/** - * Tree Node for the application tree representing an instance of a application. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationInstanceTreeNode.java 2282 2013-08-01 10:45:42Z jensp $ - * - * @see ApplicationTreeModel - * @see ApplicationTreeModelBuilder - * @see ApplicationTypeTreeNode - * @see ApplicationsAdministrationTab - * @see TreeNode - */ -public class LegacyApplicationInstanceTreeNode implements TreeNode { - - /** - * The application instance represented by this {@code TreeNode} - */ - //private final Application application; - private final String path; - private final String title; - private final String appType; - - /** - * Constructor - * - * @param application The application instance to represent by this {@code TreeNode} - */ - public LegacyApplicationInstanceTreeNode(final CcmApplication application) { - //this.application = application; - path = application.getPrimaryUrl(); - title = application.getTitle().getValue(); - appType = application.getClass().getName(); - } - - public String getPath() { - return path; - } - - public String getTitle() { - return title; - } - - public String getAppType() { - return appType; - } - - /** - * Returns the key for this {@link TreeNode}. - * - * @return The path of the application instance. - * @see TreeNode#getKey() - */ - @Override - public Object getKey() { - //return application.getPath(); - return path; - } - - /** - * Data to show in the tree for this node. - * - * @return The title of the application instance - * @see TreeNode#getElement() - */ - @Override - public Object getElement() { - //return application.getTitle(); - return title; - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java deleted file mode 100644 index 2507010ca..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications.tree; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeNode; -import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationManager; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.ApplicationType; -import org.libreccm.web.CcmApplication; - -/** - * A {@link TreeModel} for the tree of applications in - * {@link ApplicationsAdministrationTab}. The tree consists of two different - * types of nodes: Nodes for {@link ApplicationTypes} and nodes for - * {@link CCmApplication} instances. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationTreeModel.java 2406 2013-10-31 19:52:22Z jensp $ - */ -public class LegacyApplicationTreeModel implements TreeModel { - - public LegacyApplicationTreeModel() { - //Nothing - } - - @Override - public TreeNode getRoot(final PageState state) { - return new RootTreeNode(); - } - - @Override - public boolean hasChildren(final TreeNode node, final PageState state) { - if (node instanceof RootTreeNode) { - return true; - } else if (node instanceof LegacyApplicationTypeTreeNode) { - final LegacyApplicationTypeTreeNode typeTreeNode - = (LegacyApplicationTypeTreeNode) node; - - //if (typeTreeNode.getApplicationType().isSingleton()) { - if (typeTreeNode.isSingleton()) { - return false; - } else { - //return !retrieveApplicationInstances(typeTreeNode.getApplicationType()).isEmpty(); - //return !retrieveApplicationInstances(typeTreeNode.getApplicationType()).isEmpty(); - return !retrieveApplicationInstances(typeTreeNode.getObjecType()) - .isEmpty(); - } - } else if (node instanceof LegacyApplicationInstanceTreeNode) { - return false; - } else { - throw new IllegalArgumentException( - "The ApplicationTreeModel can only work with ApplicationTypeTreeNodes and" - + "ApplicationInstanceTreeNodes."); - } - } - - @Override - public Iterator getChildren(final TreeNode node, final PageState state) { - if (node instanceof RootTreeNode) { - final ApplicationManager appManager = CdiUtil.createCdiUtil() - .findBean(ApplicationManager.class); - - final Collection appTypes = appManager - .getApplicationTypes().values(); - - return new AppTypesIterator(appTypes); - } else if (node instanceof LegacyApplicationTypeTreeNode) { - final LegacyApplicationTypeTreeNode typeTreeNode - = (LegacyApplicationTypeTreeNode) node; - - final ApplicationRepository appRepo = CdiUtil.createCdiUtil() - .findBean(ApplicationRepository.class); - - final List applications = appRepo.findByType( - typeTreeNode.getObjecType()); - - return new AppIterator(applications); - } else if (node instanceof LegacyApplicationInstanceTreeNode) { - return null; - } else { - throw new IllegalArgumentException( - "The ApplicationTreeModel can only work with ApplicationTypeTreeNodes and" - + "ApplicationInstanceTreeNodes."); - } - } - - private List retrieveApplicationInstances( - final ApplicationType applicationType) { - final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean( - ApplicationRepository.class); - - return appRepo.findByType(applicationType.name()); - } - - private List retrieveApplicationInstances( - final String appObjectType) { - final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean( - ApplicationRepository.class); - - return appRepo.findByType(appObjectType); - } - - private class RootTreeNode implements TreeNode { - - public RootTreeNode() { - //Nothing - } - - @Override - public Object getKey() { - return "-1"; - } - - @Override - public Object getElement() { - return "/"; - } - - } - - private class AppTypesIterator implements Iterator { - - private final Iterator appTypes; - - public AppTypesIterator(final Collection appTypes) { - this.appTypes = appTypes.iterator(); - } - - @Override - public boolean hasNext() { - return appTypes.hasNext(); - } - - @Override - public LegacyApplicationTypeTreeNode next() { - return new LegacyApplicationTypeTreeNode(appTypes.next()); - } - - @Override - public void remove() { - throw new UnsupportedOperationException("Not supported."); - } - - } - - private class AppIterator implements Iterator { - - private final Iterator applications; - - public AppIterator(final Collection applications) { - this.applications = applications.iterator(); - } - - @Override - public boolean hasNext() { - return applications.hasNext(); - } - - @Override - public LegacyApplicationInstanceTreeNode next() { - return new LegacyApplicationInstanceTreeNode(applications.next()); - } - - @Override - public void remove() { - throw new UnsupportedOperationException("Not supported."); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java deleted file mode 100644 index 0ca945aac..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications.tree; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeModelBuilder; -import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab; -import com.arsdigita.util.LockableImpl; - -/** - * The {@link TreeModelBuilder} creating the {@link TreeModel} for the - * applications tree used in {@link ApplicationsAdministrationTab}. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationTreeModelBuilder.java 2294 2013-08-05 18:39:46Z - jensp $ - */ -public class LegacyApplicationTreeModelBuilder extends LockableImpl - implements TreeModelBuilder { - - @Override - public TreeModel makeModel(final Tree tree, final PageState state) { - tree.expand("-1", state); - return new LegacyApplicationTreeModel(); - } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java deleted file mode 100644 index eb33c53c3..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2013 Jens Pelzetter - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.ui.admin.applications.tree; - -import com.arsdigita.bebop.tree.TreeNode; -import java.math.BigDecimal; -import org.libreccm.web.ApplicationType; - -/** - * Tree Node implementation for the Application Tree in the Application admin tab. - * - * @author Jens Pelzetter - * @version $Id: LegacyApplicationTypeTreeNode.java 2282 2013-08-01 10:45:42Z jensp $ - */ -public class LegacyApplicationTypeTreeNode implements TreeNode { - - private final String name; - private final String objectType; - private final boolean singleton; - private final String description; - // Needed: - // isSingleton - // getObjectType - - public LegacyApplicationTypeTreeNode(final ApplicationType applicationType) { - //this.applicationType = applicationType; - name = applicationType.name(); - objectType = applicationType.name(); - singleton = applicationType.singleton(); - description = applicationType.descKey(); - } - - public String getName() { - return name; - } - - public String getObjecType() { - return objectType; - } - - public boolean isSingleton() { - return singleton; - } - - public String getDescription() { - return description; - } - - public Object getKey() { - //return applicationType.getApplicationObjectType(); - return objectType; - } - - public Object getElement() { - return name; - } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java deleted file mode 100644 index fa658c715..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2017 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import org.libreccm.categorization.Categorization; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryManager; -import org.libreccm.categorization.CategoryRepository; - -import java.util.ArrayList; -import java.util.List; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.transaction.Transactional; - -/** - * - * @author Jens Pelzetter - */ -@RequestScoped -class CategoriesController { - - @Inject - private CategoryRepository categoryRepo; - - @Inject - private CategoryManager categoryManager; - - @Transactional(Transactional.TxType.REQUIRED) - protected List getSubCategories(final Category ofCategory) { - - final Category category = categoryRepo - .findById(ofCategory.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No Category with ID %d in the database.", - ofCategory.getObjectId()))); - - return new ArrayList<>(category.getSubCategories()); - } - - @Transactional(Transactional.TxType.REQUIRED) - protected boolean hasChildren(final Category category) { - - final Category categoryToCheck = categoryRepo - .findById(category.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No Category with ID %d in the database.", - category.getObjectId()))); - - return categoryManager.hasSubCategories(categoryToCheck); - } - - @Transactional(Transactional.TxType.REQUIRED) - protected boolean isDeletable(final Category category) { - - final Category categoryToCheck = categoryRepo - .findById(category.getObjectId()) - .orElseThrow(() -> new IllegalArgumentException(String - .format("No Category with ID %d in the database.", - category.getObjectId()))); - - final List subCats = categoryToCheck.getSubCategories(); - final List objects = categoryToCheck.getObjects(); - - return (subCats == null || subCats.isEmpty()) - && (objects == null || objects.isEmpty()); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java deleted file mode 100644 index 2179a1c0d..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java +++ /dev/null @@ -1,552 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.form.Submit; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.toolbox.ui.LayoutPanel; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoriesTab extends LayoutPanel { - - protected static final String DOMAINS_FILTER = "domainsFilter"; - - private final StringParameter domainIdParameter; - private final ParameterSingleSelectionModel selectedDomainId; - - private final StringParameter categoryIdParameter; - private final ParameterSingleSelectionModel selectedCategoryId; - - private final StringParameter languageParameter; - private final ParameterSingleSelectionModel selectedLanguage; - - private final Label domainsFilterFormHeader; - private final Form domainsFilterForm; - private final BoxPanel domainsTablePanel; - - private final DomainForm domainForm; - - private final DomainDetails domainDetails; - private final DomainTitleForm domainTitleForm; - private final DomainDescriptionForm domainDescriptionForm; - - private final Label categoriesTreeHeader; - private final BoxPanel categoriesTreePanel; - - private final CategoryDetails categoryDetails; - private final CategoryTitleForm categoryTitleForm; - private final CategoryDescriptionForm categoryDescriptionForm; - private final CategoryCreateForm categoryCreateForm; - private final CategoryEditForm categoryEditForm; - private final CategoryMover categoryMover; - - public CategoriesTab() { - super(); - - setClassAttr("sidebarNavPanel"); - - domainIdParameter = new StringParameter("selected_domain_id"); - selectedDomainId = new ParameterSingleSelectionModel<>( - domainIdParameter); - - categoryIdParameter = new StringParameter("selected_category_id"); - selectedCategoryId = new ParameterSingleSelectionModel<>( - categoryIdParameter); - - languageParameter = new StringParameter("selected_language"); - selectedLanguage = new ParameterSingleSelectionModel<>( - languageParameter); - - final SegmentedPanel left = new SegmentedPanel(); - - domainsFilterFormHeader = new Label(new GlobalizedMessage( - "ui.admin.categories.domains.table.filter.header", - ADMIN_BUNDLE)); - domainsFilterForm = new Form("domainFilterForm"); - final TextField domainsFilter = new TextField(DOMAINS_FILTER); - domainsFilterForm.add(domainsFilter); - domainsFilterForm.add(new Submit(new GlobalizedMessage( - "ui.admin.categories.domains.table.filter", ADMIN_BUNDLE))); - final ActionLink clearLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.domains.table.filter.clear", - ADMIN_BUNDLE)); - clearLink.addActionListener(e -> { - final PageState state = e.getPageState(); - domainsFilter.setValue(state, null); - }); - domainsFilterForm.add(clearLink); - left.addSegment(domainsFilterFormHeader, domainsFilterForm); - - categoriesTreeHeader = new Label(new GlobalizedMessage( - "ui.admin.categories.tree.header", - ADMIN_BUNDLE)); - categoriesTreePanel = new BoxPanel(BoxPanel.VERTICAL); - final Tree categoriesTree = new Tree(new CategoriesTreeModelBuilder( - selectedDomainId)); - categoriesTree.addChangeListener(e -> { - final PageState state = e.getPageState(); - - selectedCategoryId.setSelectedKey( - state, (String) categoriesTree.getSelectedKey(state)); - - showCategoryDetails(state); - }); - selectedCategoryId.addChangeListener(e -> { - final PageState state = e.getPageState(); - - categoriesTree.setSelectedKey(state, selectedCategoryId - .getSelectedKey(state)); - }); - - final ActionLink backToDomain = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.tree.back", - ADMIN_BUNDLE)); - backToDomain.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTree.getSelectionModel().clearSelection(state); - showDomainDetails(state); - }); - categoriesTreePanel.add(backToDomain); - categoriesTreePanel.add(categoriesTree); - left.addSegment(categoriesTreeHeader, categoriesTreePanel); - - setLeft(left); - - final BoxPanel body = new BoxPanel(BoxPanel.VERTICAL); - - final DomainsTable domainsTable = new DomainsTable( - this, selectedDomainId, domainsFilter); - domainsTable.setStyleAttr("min-width: 30em;"); - domainsTablePanel = new BoxPanel(BoxPanel.VERTICAL); - domainsTablePanel.add(domainsTable); - final ActionLink addDomain = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.domains.create_new", ADMIN_BUNDLE)); - addDomain.addActionListener(e -> { - showDomainForm(e.getPageState()); - }); - domainsTablePanel.add(addDomain); - - body.add(domainsTablePanel); - - domainForm = new DomainForm(this, selectedDomainId); - body.add(domainForm); - - domainDetails = new DomainDetails(this, - selectedDomainId, - selectedLanguage); - body.add(domainDetails); - - domainTitleForm = new DomainTitleForm(this, - selectedDomainId, - selectedLanguage); - body.add(domainTitleForm); - - domainDescriptionForm = new DomainDescriptionForm(this, - selectedDomainId, - selectedLanguage); - body.add(domainDescriptionForm); - - categoryDetails = new CategoryDetails(this, - selectedDomainId, - selectedCategoryId, - selectedLanguage); - body.add(categoryDetails); - - categoryTitleForm = new CategoryTitleForm(this, - selectedCategoryId, - selectedLanguage); - body.add(categoryTitleForm); - - categoryDescriptionForm = new CategoryDescriptionForm(this, - selectedCategoryId, - selectedLanguage); - body.add(categoryDescriptionForm); - - categoryCreateForm = new CategoryCreateForm(this, selectedCategoryId); - body.add(categoryCreateForm); - - categoryEditForm = new CategoryEditForm(this, selectedCategoryId); - body.add(categoryEditForm); - - categoryMover = new CategoryMover(this, - selectedDomainId, - selectedCategoryId); - body.add(categoryMover); - - setBody(body); - - } - - @Override - public void register(final Page page) { - super.register(page); - - page.addGlobalStateParam(domainIdParameter); - page.addGlobalStateParam(categoryIdParameter); - page.addGlobalStateParam(languageParameter); - - page.setVisibleDefault(domainsFilterFormHeader, true); - page.setVisibleDefault(domainsFilterForm, true); - page.setVisibleDefault(domainsTablePanel, true); - page.setVisibleDefault(domainForm, false); - page.setVisibleDefault(domainDetails, false); - page.setVisibleDefault(domainTitleForm, false); - page.setVisibleDefault(domainDescriptionForm, false); - - page.setVisibleDefault(categoriesTreeHeader, false); - page.setVisibleDefault(categoriesTreePanel, false); - - page.setVisibleDefault(categoryDetails, false); - page.setVisibleDefault(categoryTitleForm, false); - page.setVisibleDefault(categoryDescriptionForm, false); - page.setVisibleDefault(categoryCreateForm, false); - page.setVisibleDefault(categoryEditForm, false); - page.setVisibleDefault(categoryMover, false); - } - - protected void showDomainsTable(final PageState state) { - domainsFilterFormHeader.setVisible(state, true); - domainsFilterForm.setVisible(state, true); - domainsTablePanel.setVisible(state, true); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void showDomainForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, true); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideDomainForm(final PageState state) { - if (selectedDomainId.getSelectedKey(state) == null) { - domainsFilterFormHeader.setVisible(state, true); - domainsFilterForm.setVisible(state, true); - domainsTablePanel.setVisible(state, true); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } else { - showDomainDetails(state); - } - - } - - protected void showDomainDetails(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, true); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, true); - categoriesTreePanel.setVisible(state, true); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideDomainDetails(final PageState state) { - selectedDomainId.clearSelection(state); - - domainsFilterFormHeader.setVisible(state, true); - domainsFilterForm.setVisible(state, true); - domainsTablePanel.setVisible(state, true); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void showDomainTitleForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, true); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideDomainTitleForm(final PageState state) { - selectedLanguage.clearSelection(state); - - showDomainDetails(state); - } - - protected void showDomainDescriptionForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, true); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideDomainDescriptionForm(final PageState state) { - selectedLanguage.clearSelection(state); - - showDomainDetails(state); - } - - protected void showCategoryDetails(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, true); - categoriesTreePanel.setVisible(state, true); - - categoryDetails.setVisible(state, true); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideCategoryDetails(final PageState state) { - selectedCategoryId.clearSelection(state); - - showDomainDetails(state); - } - - protected void showCategoryCreateForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, true); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideCategoryCreateForm(final PageState state) { - //Show category details of new category (or the selected category if - //creation was canceled - showCategoryDetails(state); - } - - protected void showCategoryEditForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, true); - categoryMover.setVisible(state, false); - } - - protected void hideCategoryEditForm(final PageState state) { - //We want to go back to the details of the selected category, therefore - //we don't reset the selection. - showCategoryDetails(state); - } - - protected void showCategoryTitleForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, true); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideCategoryTitleForm(final PageState state) { - selectedLanguage.clearSelection(state); - - showCategoryDetails(state); - } - - protected void showCategoryDescriptionForm(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, true); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, false); - } - - protected void hideCategoryDescriptionForm(final PageState state) { - selectedLanguage.clearSelection(state); - - showCategoryDetails(state); - } - - protected void showCategoryMover(final PageState state) { - domainsFilterFormHeader.setVisible(state, false); - domainsFilterForm.setVisible(state, false); - domainsTablePanel.setVisible(state, false); - domainForm.setVisible(state, false); - domainDetails.setVisible(state, false); - domainTitleForm.setVisible(state, false); - domainDescriptionForm.setVisible(state, false); - - categoriesTreeHeader.setVisible(state, false); - categoriesTreePanel.setVisible(state, false); - - categoryDetails.setVisible(state, false); - categoryTitleForm.setVisible(state, false); - categoryDescriptionForm.setVisible(state, false); - categoryCreateForm.setVisible(state, false); - categoryEditForm.setVisible(state, false); - categoryMover.setVisible(state, true); - } - - protected void hideCategoryMover(final PageState state) { - showCategoryDetails(state); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java deleted file mode 100644 index 85c6c825d..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeNode; - -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.categorization.Domain; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.Iterator; -import java.util.List; - -/** - * A reusable implementation of {@link TreeModel} for creating category trees. - * - * @author Jens Pelzetter - */ -public class CategoriesTreeModel implements TreeModel { - - private final Tree tree; - private final Domain domain; - - public CategoriesTreeModel(final Tree tree, final Domain domain) { - this.tree = tree; - this.domain = domain; - } - - @Override - public TreeNode getRoot(final PageState state) { - final CategoryRepository categoryRepository = CdiUtil.createCdiUtil() - .findBean(CategoryRepository.class); - final Category category = categoryRepository.findById(domain.getRoot() - .getObjectId()).get(); - - tree.expand(Long.toString(category.getObjectId()), state); - - return new CategoryTreeNode(category); - } - - @Override - public boolean hasChildren(final TreeNode node, - final PageState state) { - - final CategoriesController controller = CdiUtil - .createCdiUtil() - .findBean(CategoriesController.class); - return controller.hasChildren(((CategoryTreeNode) node).getCategory()); - } - - @Override - public Iterator getChildren(final TreeNode node, - final PageState state) { - - if (node.getKey().equals(getRoot(state).getKey()) - && tree.isCollapsed(node.getKey().toString(), state)) { - - tree.expand(node.getKey().toString(), state); - } - - final CategoriesController controller = CdiUtil - .createCdiUtil() - .findBean(CategoriesController.class); - final List subCategories = controller - .getSubCategories(((CategoryTreeNode) node).getCategory()); - - return new SubCategoryNodesIterator(subCategories); - } - - private class CategoryTreeNode implements TreeNode { - - private final Category category; - - public CategoryTreeNode(final Category category) { - this.category = category; - } - - public Category getCategory() { - return category; - } - - @Override - public Object getKey() { - return Long.toString(category.getObjectId()); - } - - @Override - public Object getElement() { - return category.getName(); - } - - } - - private class SubCategoryNodesIterator - implements Iterator { - - private final Iterator subCategoriesIterator; - - public SubCategoryNodesIterator(final List subCategories) { - subCategoriesIterator = subCategories.iterator(); - } - - @Override - public boolean hasNext() { - return subCategoriesIterator.hasNext(); - } - - @Override - public CategoryTreeNode next() { - return new CategoryTreeNode(subCategoriesIterator.next()); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java deleted file mode 100644 index 8564e2e35..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeModelBuilder; -import com.arsdigita.util.LockableImpl; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -/** - * - * @author Jens Pelzetter - */ -class CategoriesTreeModelBuilder - extends LockableImpl - implements TreeModelBuilder { - - private final ParameterSingleSelectionModel selectedDomainId; - - public CategoriesTreeModelBuilder( - final ParameterSingleSelectionModel selectedDomainId) { - - this.selectedDomainId = selectedDomainId; - - } - - @Override - public TreeModel makeModel(final Tree tree, - final PageState state) { - final DomainRepository domainRepository = CdiUtil.createCdiUtil(). - findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - - return new CategoriesTreeModel(tree, domain); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java deleted file mode 100644 index 0c4d11216..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryManager; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryCreateForm extends Form { - - private static final String CATEGORY_NAME = "categoryName"; - - private final ParameterSingleSelectionModel selectedCategoryId; - - private final TextField categoryName; - private final SaveCancelSection saveCancelSection; - - public CategoryCreateForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId) { - - super("categoryCreateForm"); - - this.selectedCategoryId = selectedCategoryId; - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - - final CategoryRepository categoryRepository = CdiUtil - .createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById(Long - .parseLong(selectedCategoryId.getSelectedKey(state))).get(); - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.create_new_subcategory", - ADMIN_BUNDLE, - new String[]{category.getName()})); - }); - heading.setClassAttr("heading"); - add(heading); - - categoryName = new TextField(CATEGORY_NAME); - categoryName.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.name.label", ADMIN_BUNDLE)); - add(categoryName); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addValidationListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final FormData data = e.getFormData(); - final String categoryNameData = data.getString(CATEGORY_NAME); - - if (Strings.isBlank(categoryNameData)) { - data.addError( - CATEGORY_NAME, - new GlobalizedMessage( - "ui.admin.categories.category.name.errors.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepository = cdiUtil.findBean( - CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil.findBean( - CategoryManager.class); - - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))) - .get(); - - final FormData data = e.getFormData(); - final String categoryNameData = data.getString(CATEGORY_NAME); - - final Category category = new Category(); - category.setName(categoryNameData); - - categoryRepository.save(category); - categoryManager.addSubCategoryToCategory(category, - selectedCategory); - - selectedCategoryId.setSelectedKey( - state, Long.toString(category.getObjectId())); - } - - categoriesTab.hideCategoryCreateForm(state); - }); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java deleted file mode 100644 index b450bfabf..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.TextArea; -import com.arsdigita.globalization.GlobalizedMessage; - -import java.util.Locale; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryDescriptionForm extends Form { - - private static final String LOCALIZED_CATEGORY_DESC = "description"; - - private final CategoriesTab categoriesTab; - - private final TextArea description; - private final SaveCancelSection saveCancelSection; - - public CategoryDescriptionForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId, - final ParameterSingleSelectionModel selectedLanguage) { - - super("categoryDescriptionForm", new BoxPanel(BoxPanel.VERTICAL)); - - this.categoriesTab = categoriesTab; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.category.description.edit.back", - ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - categoriesTab.hideDomainTitleForm(e.getPageState()); - }); - add(backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil() - .findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final Label target = (Label) e.getTarget(); - - if (selectedCategory.getDescription().hasValue(selectedLocale)) { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.description.edit_for_lang", - ADMIN_BUNDLE, - new String[]{selectedCategory.getName(), - selectedLocale.toString()})); - } else { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.description.add_for_lang", - ADMIN_BUNDLE, - new String[]{selectedCategory.getName(), - selectedLocale.toString()})); - } - }); - heading.setClassAttr("heading"); - add(heading); - - description = new TextArea(LOCALIZED_CATEGORY_DESC); - description.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.description.label", ADMIN_BUNDLE)); - description.setCols(60); - description.setRows(10); - add(description); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - if (selectedCategory.getDescription().hasValue(selectedLocale)) { - description.setValue(state, selectedCategory.getDescription() - .getValue(selectedLocale)); - } - }); - - addValidationListener(e -> { - - if (saveCancelSection.getSaveButton().isSelected( - e.getPageState())) { - final FormData data = e.getFormData(); - - final String titleData = data.getString(LOCALIZED_CATEGORY_DESC); - - if (Strings.isBlank(titleData)) { - data.addError( - LOCALIZED_CATEGORY_DESC, - new GlobalizedMessage( - "ui.admin.categories.category.description.error.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final CategoryRepository categoryRepository = CdiUtil - .createCdiUtil() - .findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))) - .get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final String titleData = e.getFormData().getString( - LOCALIZED_CATEGORY_DESC); - - selectedCategory.getDescription().putValue(selectedLocale, - titleData); - categoryRepository.save(selectedCategory); - } - - categoriesTab.hideCategoryDescriptionForm(state); - - }); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java deleted file mode 100644 index 922f1507a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryDescriptionTable extends Table { - - private static final int COL_LOCALE = 0; - private static final int COL_VALUE = 1; - private static final int COL_EDIT = 2; - private static final int COL_DEL = 3; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedCategoryId; - private final ParameterSingleSelectionModel selectedLanguage; - - public CategoryDescriptionTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId, - final ParameterSingleSelectionModel selectedLanguage) { - - super(); - - this.categoriesTab = categoriesTab; - this.selectedCategoryId = selectedCategoryId; - this.selectedLanguage = selectedLanguage; - - setIdAttr("categoryDescriptionTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.none", - ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_LOCALE, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.col_lang", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_VALUE, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.col_value", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.col_edit", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DEL, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.col_del", - ADMIN_BUNDLE)))); - - columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((Component) value); - } - - }); - - columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.category_details.description" - + ".del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_EDIT: - selectedLanguage.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showCategoryDescriptionForm(state); - break; - case COL_DEL: - final Locale locale = new Locale((String) event - .getRowKey()); - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean( - CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId. - getSelectedKey(state))).get(); - category.getDescription().removeValue(locale); - - categoryRepository.save(category); - - break; - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new CategoryDescriptionTableModelBuilder()); - } - - private class CategoryDescriptionTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, - final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new CategoryDescriptionTableModel(state); - } - - } - - private class CategoryDescriptionTableModel implements TableModel { - - private final Category selectedCategory; - private final List locales; - private int index = -1; - - public CategoryDescriptionTableModel(final PageState state) { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - selectedCategory = categoryRepository.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - locales = new ArrayList<>(); - if (selectedCategory.getDescription() != null) { - locales.addAll( - selectedCategory.getDescription().getAvailableLocales()); - } - locales.sort((l1, l2) -> { - return l1.toString().compareTo(l2.toString()); - }); - - } - - @Override - public int getColumnCount() { - return 4; - } - - @Override - public boolean nextRow() { - index++; - return index < locales.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - final Locale locale = locales.get(index); - - switch (columnIndex) { - case COL_LOCALE: - return locale.toString(); - case COL_VALUE: - return selectedCategory.getDescription().getValue(locale); - case COL_EDIT: - return new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.edit", - ADMIN_BUNDLE)); - case COL_DEL: - return new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description.del", - ADMIN_BUNDLE)); - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return locales.get(index); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java deleted file mode 100644 index 2142ce066..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.bebop.form.SingleSelect; -import com.arsdigita.bebop.form.Submit; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.kernel.KernelConfig; -import com.arsdigita.util.UncheckedWrapperException; -import java.util.HashSet; -import java.util.Set; -import java.util.TooManyListenersException; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class CategoryDetails extends SegmentedPanel { - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedCategoryId; - private final ParameterSingleSelectionModel selectedLanguage; - private final CategoryTitleAddForm categoryTitleAddForm; - private final CategoryDescriptionAddForm categoryDescriptionAddForm; - private final SubCategoriesTable subCategoriesTable; - - public CategoryDetails( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedCategoryId, - final ParameterSingleSelectionModel selectedLanguage) { - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.selectedCategoryId = selectedCategoryId; - this.selectedLanguage = selectedLanguage; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.category_details.back", ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTab.hideCategoryDetails(state); - }); - addSegment("category-details-back", backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - - final CategoryRepository categoryRepo = CdiUtil.createCdiUtil() - .findBean(CategoryRepository.class); - final Category category = categoryRepo.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category_details.heading", - ADMIN_BUNDLE, - new String[]{category.getName()})); - - }); - heading.setClassAttr("heading"); - add(heading); - - final BoxPanel propertiesPanel = new BoxPanel(BoxPanel.VERTICAL); - propertiesPanel.add(new PropertySheet( - new CategoryPropertySheetModelBuilder(selectedCategoryId))); - final ActionLink editBasicPropertiesLink = new ActionLink( - new GlobalizedMessage( - "ui.admin.categories.category_details.basic_properties.edit", - ADMIN_BUNDLE)); - editBasicPropertiesLink.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTab.showCategoryEditForm(state); - }); - propertiesPanel.add(editBasicPropertiesLink); - final ActionLink moveLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.category_details.move_category", ADMIN_BUNDLE)) { - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - final CategoryRepository categoryRepo = CdiUtil - .createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepo.findById(Long - .parseLong(selectedCategoryId.getSelectedKey(state))) - .get(); - - //If the category has no parent category it is the root - //category of a domain and can't be moved - return category.getParentCategory() != null; - } else { - return false; - } - } - - }; - moveLink.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTab.showCategoryMover(state); - }); - propertiesPanel.add(moveLink); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.basic_properties", - ADMIN_BUNDLE)), - propertiesPanel - ); - - final BoxPanel titlesPanel = new BoxPanel(BoxPanel.VERTICAL); - titlesPanel.add(new CategoryTitleTable(categoriesTab, - selectedCategoryId, - selectedLanguage)); - categoryTitleAddForm = new CategoryTitleAddForm(); - titlesPanel.add(categoryTitleAddForm); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.category_title", - ADMIN_BUNDLE)), - titlesPanel); - - final BoxPanel descPanel = new BoxPanel(BoxPanel.VERTICAL); - descPanel.add(new CategoryDescriptionTable(categoriesTab, - selectedCategoryId, - selectedLanguage)); - categoryDescriptionAddForm = new CategoryDescriptionAddForm(); - descPanel.add(categoryDescriptionAddForm); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.description", - ADMIN_BUNDLE)), - descPanel); - - final BoxPanel subCategoriesPanel = new BoxPanel(BoxPanel.VERTICAL); - subCategoriesTable = new SubCategoriesTable(categoriesTab, - selectedCategoryId); - subCategoriesPanel.add(subCategoriesTable); - final ActionLink addSubCategory = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.category_details.subcategories.add", - ADMIN_BUNDLE)); - addSubCategory.addActionListener(e -> { - final PageState state = e.getPageState(); - - categoriesTab.showCategoryCreateForm(state); - }); - subCategoriesPanel.add(addSubCategory); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.subcategories.header", - ADMIN_BUNDLE)), - subCategoriesPanel); - } - - private class CategoryTitleAddForm extends Form { - - private static final String TITLE_SELECT_LANG = "titleSelectLang"; - - public CategoryTitleAddForm() { - super("categoryTitleAddForm", new BoxPanel(BoxPanel.HORIZONTAL)); - - final SingleSelect titleSelectLang = new SingleSelect( - TITLE_SELECT_LANG); - titleSelectLang.setLabel(new GlobalizedMessage( - "ui.admin.categories.category_details.category_title.add.label", - ADMIN_BUNDLE)); - try { - titleSelectLang.addPrintListener(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig. - getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - category.getTitle().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - final SingleSelect target = (SingleSelect) e.getTarget(); - - target.clearOptions(); - - supportedLanguages.forEach(l -> { - if (!assignedLanguages.contains(l)) { - target.addOption(new Option(l, new Text(l))); - } - }); - }); - } catch (TooManyListenersException ex) { - throw new UncheckedWrapperException(ex); - } - - add(titleSelectLang); - add(new Submit(new GlobalizedMessage( - "ui.admin.categories.category_details.category_title.add.submit", - ADMIN_BUNDLE))); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final String language = data.getString(TITLE_SELECT_LANG); - selectedLanguage.setSelectedKey(state, language); - - categoriesTab.showCategoryTitleForm(state); - }); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig. - getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - category.getTitle().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - //If all supported languages are assigned the form is not - //visible - return !assignedLanguages.equals(supportedLanguages); - } else { - return false; - } - } - - } - - private class CategoryDescriptionAddForm extends Form { - - private static final String DESC_SELECT_LANG = "descSelectLang"; - - public CategoryDescriptionAddForm() { - super("categoryAddDescLang", new BoxPanel(BoxPanel.HORIZONTAL)); - - final SingleSelect descSelectLang = new SingleSelect( - DESC_SELECT_LANG); - descSelectLang.setLabel(new GlobalizedMessage( - "ui.admin.categories.category_details.category_desc.add.label", - ADMIN_BUNDLE)); - try { - descSelectLang.addPrintListener(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig. - getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - category.getDescription().getAvailableLocales().forEach( - l -> { - assignedLanguages.add(l.toString()); - }); - - final SingleSelect target = (SingleSelect) e.getTarget(); - - target.clearOptions(); - - supportedLanguages.forEach(l -> { - if (!assignedLanguages.contains(l)) { - target.addOption(new Option(l, new Text(l))); - } - }); - }); - - } catch (TooManyListenersException ex) { - throw new UncheckedWrapperException(ex); - } - - add(descSelectLang); - add(new Submit(new GlobalizedMessage( - "ui.admin.categories.category_details.category_desc.add.submit", - ADMIN_BUNDLE))); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final String language = data.getString(DESC_SELECT_LANG); - selectedLanguage.setSelectedKey(state, language); - - categoriesTab.showCategoryDescriptionForm(state); - }); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig. - getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - category.getDescription().getAvailableLocales().forEach( - l -> { - assignedLanguages.add(l.toString()); - }); - - //If all supported languages are assigned the form is not - //visible - return !assignedLanguages.equals(supportedLanguages); - } else { - return false; - } - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java deleted file mode 100644 index 76123f3b6..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.CheckboxGroup; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryManager; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryEditForm extends Form { - - private static final String CATEGORY_NAME = "categoryName"; - private static final String CATEGORY_PROPERTIES = "categoryProperties"; - - private static final String ENABLED = "enabled"; - private static final String VISIBLE = "visible"; - private static final String ABSTRACT = "abstract"; - - private final ParameterSingleSelectionModel selectedCategoryId; - - private final TextField categoryName; - private final CheckboxGroup properties; - private final SaveCancelSection saveCancelSection; - - public CategoryEditForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId) { - - super("categoryEditForm"); - - this.selectedCategoryId = selectedCategoryId; - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - - final CategoryRepository categoryRepository = CdiUtil - .createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepository.findById(Long - .parseLong(selectedCategoryId.getSelectedKey(state))).get(); - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.edit_category", - ADMIN_BUNDLE, - new String[]{category.getName()})); - }); - heading.setClassAttr("heading"); - add(heading); - - categoryName = new TextField(CATEGORY_NAME); - categoryName.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.name.label", ADMIN_BUNDLE)); - add(categoryName); - - properties = new CheckboxGroup(CATEGORY_PROPERTIES); - properties.addOption(new Option( - ENABLED, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.name.enabled", - ADMIN_BUNDLE)))); - properties.addOption(new Option( - VISIBLE, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.name.visible", - ADMIN_BUNDLE)))); - properties.addOption(new Option( - ABSTRACT, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.name.abstract", - ADMIN_BUNDLE)))); - add(properties); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepository = cdiUtil.findBean( - CategoryRepository.class); - final Category category = categoryRepository.findById(Long - .parseLong(selectedCategoryId.getSelectedKey(state))).get(); - - categoryName.setValue(state, category.getName()); - final List props = new ArrayList<>(); - if (category.isEnabled()) { - props.add(ENABLED); - } - if (category.isVisible()) { - props.add(VISIBLE); - } - if (category.isAbstractCategory()) { - props.add(ABSTRACT); - } - properties.setValue(state, props.toArray(new String[props.size()])); - }); - - addValidationListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final FormData data = e.getFormData(); - final String categoryNameData = data.getString(CATEGORY_NAME); - - if (Strings.isBlank(categoryNameData)) { - data.addError( - CATEGORY_NAME, - new GlobalizedMessage( - "ui.admin.categories.category.name.errors.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepository = cdiUtil.findBean( - CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil.findBean( - CategoryManager.class); - - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))) - .get(); - - final FormData data = e.getFormData(); - final String categoryNameData = data.getString(CATEGORY_NAME); - - category.setName(categoryNameData); - - final List propertiesData = Arrays.asList( - (String[]) data.get( - CATEGORY_PROPERTIES)); - category.setEnabled(propertiesData.contains(ENABLED)); - category.setVisible(propertiesData.contains(VISIBLE)); - category.setAbstractCategory(propertiesData.contains(ABSTRACT)); - - categoryRepository.save(category); - } - - categoriesTab.hideCategoryEditForm(state); - }); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java deleted file mode 100644 index 16cf225c3..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.Tree; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryManager; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryMover extends Form { - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedCategoryId; - - private final Tree categoryTree; - private final SaveCancelSection saveCancelSection; - - public CategoryMover( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedCategoryId) { - - super("categoryMover", new BoxPanel(BoxPanel.VERTICAL)); - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.selectedCategoryId = selectedCategoryId; - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - - final CategoryRepository categoryRepo = CdiUtil - .createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepo.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.move.heading", - ADMIN_BUNDLE, - new String[]{category.getName()})); - }); - heading.setClassAttr("heading"); - add(heading); - - categoryTree = new Tree(new CategoryMoverModelBuilder( - selectedDomainId, selectedCategoryId)); - add(categoryTree); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepo = cdiUtil.findBean( - CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil.findBean( - CategoryManager.class); - - final Category category = categoryRepo.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - final Category parent = category.getParentCategory(); - final Category target = categoryRepo.findById(Long.parseLong( - (String) categoryTree.getSelectedKey(state))).get(); - - categoryManager.removeSubCategoryFromCategory(category, parent); - categoryManager.addSubCategoryToCategory(category, target); - } - - categoriesTab.hideCategoryMover(state); - }); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java deleted file mode 100644 index 73ad2de53..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeNode; - -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.categorization.Domain; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryMoverModel implements TreeModel { - - private final Domain domain; - private final Category selectedCategory; - - public CategoryMoverModel(final Domain domain, - final Category selectedCategory) { - this.domain = domain; - this.selectedCategory = selectedCategory; - } - - @Override - public TreeNode getRoot(final PageState data) { - final CategoryRepository categoryRepository = CdiUtil.createCdiUtil() - .findBean(CategoryRepository.class); - final Category category = categoryRepository.findById(domain.getRoot() - .getObjectId()).get(); - return new CategoryMoverNode(category); - } - - /** - * Creates a list of the sub categories of the provided node - * without - * the selected category. This prevents the selected category and its sub - * categories from be added to tree. Therefore the user can't move a - * category beneath itself. - * - * @param node The current node. - * - * @return A list of the subcategories of the category managed by the - * provided node. - */ - private List getSubCategories(final TreeNode node) { - final CategoryRepository categoryRepo = CdiUtil.createCdiUtil() - .findBean(CategoryRepository.class); - final Category category = categoryRepo.findById( - ((CategoryMoverNode) node).getCategory().getObjectId()).get(); - - final List subCategories = new ArrayList<>(); - category.getSubCategories().forEach(c -> { - if (!c.equals(selectedCategory)) { - subCategories.add(c); - } - }); - - return subCategories; - } - - @Override - public boolean hasChildren(final TreeNode node, final PageState state) { - final List subCategories = getSubCategories(node); - return (subCategories != null && !subCategories.isEmpty()) ; - } - - @Override - public Iterator getChildren(final TreeNode node, final PageState state) { - return new SubCategoryNodesIterator(getSubCategories(node)); - } - - private class CategoryMoverNode implements TreeNode { - - private final Category category; - - public CategoryMoverNode(final Category category) { - this.category = category; - } - - public Category getCategory() { - return category; - } - - @Override - public Object getKey() { - return Long.toString(category.getObjectId()); - } - - @Override - public Object getElement() { - return category.getName(); - } - - } - - private class SubCategoryNodesIterator - implements Iterator { - - private final Iterator subCategoriesIterator; - - public SubCategoryNodesIterator(final List subCategories) { - subCategoriesIterator = subCategories.iterator(); - } - - @Override - public boolean hasNext() { - return subCategoriesIterator.hasNext(); - } - - @Override - public CategoryMoverNode next() { - return new CategoryMoverNode(subCategoriesIterator.next()); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java deleted file mode 100644 index 085c33a71..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Tree; -import com.arsdigita.bebop.tree.TreeModel; -import com.arsdigita.bebop.tree.TreeModelBuilder; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryMoverModelBuilder - extends LockableImpl - implements TreeModelBuilder { - - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedCategoryId; - - public CategoryMoverModelBuilder( - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedCategoryId) { - - this.selectedDomainId = selectedDomainId; - this.selectedCategoryId = selectedCategoryId; - - } - - @Override - public TreeModel makeModel(final Tree tree, final PageState state) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - final Domain domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - - final CategoryRepository categoryRepository = cdiUtil.findBean( - CategoryRepository.class); - final Category category = categoryRepository.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - return new CategoryMoverModel(domain, category); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java deleted file mode 100644 index 302ead517..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.globalization.GlobalizedMessage; -import java.util.Arrays; -import java.util.Iterator; -import org.libreccm.categorization.Category; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryPropertySheetModel implements PropertySheetModel { - - private static enum CategoryProperty { - NAME, - ENABLED, - VISIBLE, - ABSTRACT - } - - private final Category selectedCategory; - private final Iterator propertyIterator; - private CategoryProperty currentProperty; - - public CategoryPropertySheetModel(final Category selectedCategory) { - this.selectedCategory = selectedCategory; - propertyIterator = Arrays.asList(CategoryProperty.values()).iterator(); - } - - @Override - public boolean nextRow() { - if (selectedCategory == null) { - return false; - } - - if (propertyIterator.hasNext()) { - currentProperty = propertyIterator.next(); - return true; - } else { - return false; - } - } - - @Override - public String getLabel() { - return currentProperty.toString(); - } - - private GlobalizedMessage generatedGlobalizedLabel( - final CategoryProperty property) { - - final String key = String.join( - "", - "ui.admin.categories.category.property_sheet.", - property.toString().toLowerCase()); - return new GlobalizedMessage(key, ADMIN_BUNDLE); - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - return generatedGlobalizedLabel(currentProperty); - } - - @Override - public String getValue() { - switch (currentProperty) { - case NAME: - return selectedCategory.getName(); - case ENABLED: - return Boolean.toString(selectedCategory.isEnabled()); - case VISIBLE: - return Boolean.toString(selectedCategory.isVisible()); - case ABSTRACT: - return Boolean.toString(selectedCategory.isAbstractCategory()); - default: - return ""; - } - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java deleted file mode 100644 index 1cac71666..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.bebop.PropertySheetModelBuilder; -import com.arsdigita.util.LockableImpl; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryPropertySheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - private final ParameterSingleSelectionModel selectedCategoryId; - - public CategoryPropertySheetModelBuilder( - final ParameterSingleSelectionModel selectedCategoryId) { - - this.selectedCategoryId = selectedCategoryId; - - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - final String categoryIdStr = selectedCategoryId.getSelectedKey(state); - final Category selectedCategory; - - if (categoryIdStr == null || categoryIdStr.isEmpty()) { - selectedCategory = null; - } else { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - selectedCategory = categoryRepository.findById(Long.parseLong( - categoryIdStr)).get(); - } - - return new CategoryPropertySheetModel(selectedCategory); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java deleted file mode 100644 index ab4edac5a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.globalization.GlobalizedMessage; - -import java.util.Locale; -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryTitleForm extends Form { - - private static final String LOCALIZED_CATEGORY_TITLE = "title"; - - private final CategoriesTab categoriesTab; - - private final TextField title; - private final SaveCancelSection saveCancelSection; - - public CategoryTitleForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId, - final ParameterSingleSelectionModel selectedLanguage) { - - super("categoryTitleForm", new BoxPanel(BoxPanel.VERTICAL)); - - this.categoriesTab = categoriesTab; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.category.title.edit.back", ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - categoriesTab.hideDomainTitleForm(e.getPageState()); - }); - add(backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil() - .findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final Label target = (Label) e.getTarget(); - - if (selectedCategory.getTitle().hasValue(selectedLocale)) { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.title.edit_for_lang", - ADMIN_BUNDLE, - new String[]{selectedCategory.getName(), - selectedLocale.toString()})); - } else { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.title.add_for_lang", - ADMIN_BUNDLE, - new String[]{selectedCategory.getName(), - selectedLocale.toString()})); - } - }); - heading.setClassAttr("heading"); - add(heading); - - title = new TextField(LOCALIZED_CATEGORY_TITLE); - title.setLabel(new GlobalizedMessage( - "ui.admin.categories.category.title.label", ADMIN_BUNDLE)); - add(title); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - if (selectedCategory.getTitle().hasValue(selectedLocale)) { - title.setValue(state, selectedCategory.getTitle().getValue( - selectedLocale)); - } - }); - - addValidationListener(e -> { - if (saveCancelSection.getSaveButton().isSelected(e.getPageState())) { - final FormData data = e.getFormData(); - - final String titleData = data. - getString(LOCALIZED_CATEGORY_TITLE); - - if (Strings.isBlank(titleData)) { - data.addError( - LOCALIZED_CATEGORY_TITLE, - new GlobalizedMessage( - "ui.admin.categories.category.title.error.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category selectedCategory = categoryRepository.findById( - Long.parseLong(selectedCategoryId.getSelectedKey(state))) - .get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final String titleData = e.getFormData().getString( - LOCALIZED_CATEGORY_TITLE); - - selectedCategory.getTitle().putValue(selectedLocale, titleData); - categoryRepository.save(selectedCategory); - } - - categoriesTab.hideCategoryTitleForm(state); - }); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java deleted file mode 100644 index c1cf27a93..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class CategoryTitleTable extends Table { - - private static final int COL_LOCALE = 0; - private static final int COL_VALUE = 1; - private static final int COL_EDIT = 2; - private static final int COL_DEL = 3; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedCategoryId; - private final ParameterSingleSelectionModel selectedLanguage; - - public CategoryTitleTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId, - final ParameterSingleSelectionModel selectedLanguage) { - - super(); - - this.categoriesTab = categoriesTab; - this.selectedCategoryId = selectedCategoryId; - this.selectedLanguage = selectedLanguage; - - setIdAttr("categoryTitleTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.none", ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_LOCALE, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.col_lang", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_VALUE, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.col_value", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.col_edit", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DEL, - new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.col_del", - ADMIN_BUNDLE)))); - - columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((Component) value); - } - - }); - - columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.category_details.title.del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_EDIT: - selectedLanguage.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showCategoryTitleForm(state); - break; - case COL_DEL: - final Locale locale = new Locale((String) event. - getRowKey()); - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean( - CategoryRepository.class); - final Category category = categoryRepository.findById( - Long.parseLong(selectedCategoryId. - getSelectedKey(state))).get(); - category.getTitle().removeValue(locale); - - categoryRepository.save(category); - - break; - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new CategoryTitleTableModelBuilder()); - - } - - private class CategoryTitleTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new CategoryTitleTableModel(state); - } - - } - - private class CategoryTitleTableModel implements TableModel { - - private final Category selectedCategory; - private final List locales; - private int index = -1; - - public CategoryTitleTableModel(final PageState state) { - final CategoryRepository categoryRepository = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - selectedCategory = categoryRepository.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - locales = new ArrayList<>(); - if (selectedCategory.getTitle() != null) { - locales.addAll( - selectedCategory.getTitle().getAvailableLocales()); - } - locales.sort((l1, l2) -> { - return l1.toString().compareTo(l2.toString()); - }); - } - - @Override - public int getColumnCount() { - return 4; - } - - @Override - public boolean nextRow() { - index++; - return index < locales.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - final Locale locale = locales.get(index); - - switch (columnIndex) { - case COL_LOCALE: - return locale.toString(); - case COL_VALUE: - return selectedCategory.getTitle().getValue(locale); - case COL_EDIT: - return new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.edit", - ADMIN_BUNDLE - )); - case COL_DEL: - return new Label(new GlobalizedMessage( - "ui.admin.categories.category_details.title.del", - ADMIN_BUNDLE - )); - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return locales.get(index); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java deleted file mode 100644 index 02cc677a1..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.TextArea; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.Locale; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainDescriptionForm extends Form { - - private static final String LOCALIZED_DOMAIN_DESC = "description"; - - private final CategoriesTab categoriesTab; - - private final TextArea description; - private final SaveCancelSection saveCancelSection; - - public DomainDescriptionForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedLanguage) { - - super("domainDescriptionForm", new BoxPanel(BoxPanel.VERTICAL)); - - this.categoriesTab = categoriesTab; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.domain.description.edit.back", ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - categoriesTab.hideDomainTitleForm(e.getPageState()); - }); - add(backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final Label target = (Label) e.getTarget(); - - if (selectedDomain.getTitle().hasValue(selectedLocale)) { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.description.edit_for_lang", - ADMIN_BUNDLE, - new String[]{selectedDomain.getDomainKey(), - selectedLocale.toString()})); - } else { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.description.add_for_lang", - ADMIN_BUNDLE, - new String[]{selectedDomain.getDomainKey(), - selectedLocale.toString()})); - } - }); - heading.setClassAttr("heading"); - add(heading); - - description = new TextArea(LOCALIZED_DOMAIN_DESC); - description.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.description.label", ADMIN_BUNDLE)); - description.setCols(60); - description.setRows(10); - add(description); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - if (selectedDomain.getTitle().hasValue(selectedLocale)) { - description.setValue(state, selectedDomain.getDescription() - .getValue(selectedLocale)); - } - }); - - addValidationListener(e -> { - - if (saveCancelSection.getSaveButton().isSelected( - e.getPageState())) { - final FormData data = e.getFormData(); - - final String titleData = data.getString(LOCALIZED_DOMAIN_DESC); - - if (Strings.isBlank(titleData)) { - data.addError( - LOCALIZED_DOMAIN_DESC, - new GlobalizedMessage( - "ui.admin.categories.domain.description.error.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final DomainRepository domainRepository = CdiUtil - .createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))) - .get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final String titleData = e.getFormData().getString( - LOCALIZED_DOMAIN_DESC); - - selectedDomain.getDescription().putValue(selectedLocale, - titleData); - domainRepository.save(selectedDomain); - } - - categoriesTab.hideDomainDescriptionForm(state); - - }); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java deleted file mode 100644 index 8f8474ddc..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainDescriptionTable extends Table { - - private static final int COL_LOCALE = 0; - private static final int COL_VALUE = 1; - private static final int COL_EDIT = 2; - private static final int COL_DEL = 3; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedLanguage; - - public DomainDescriptionTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedLanguage) { - - super(); - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.selectedLanguage = selectedLanguage; - - setIdAttr("domainDescriptionTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.none", - ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_LOCALE, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.col_lang", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_VALUE, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.col_value", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.col_edit", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DEL, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.col_del", - ADMIN_BUNDLE)))); - - columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((Component) value); - } - - }); - - columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.domain_details.description" - + ".del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_EDIT: - selectedLanguage.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showDomainDescriptionForm(state); - break; - case COL_DEL: - final Locale locale = new Locale((String) event - .getRowKey()); - final DomainRepository domainRepository = CdiUtil - .createCdiUtil(). - findBean(DomainRepository.class); - final Domain domain = domainRepository.findById( - Long.parseLong(selectedDomainId - .getSelectedKey(state))).get(); - domain.getDescription().removeValue(locale); - - domainRepository.save(domain); - - break; - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new DomainDescriptionTableModelBuilder()); - - } - - private class DomainDescriptionTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, - final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new DomainDescriptionTableModel(state); - } - - } - - private class DomainDescriptionTableModel implements TableModel { - - private final Domain selectedDomain; - private final List locales; - private int index = -1; - - public DomainDescriptionTableModel(final PageState state) { - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - locales = new ArrayList<>(); - locales.addAll(selectedDomain.getDescription() - .getAvailableLocales()); - locales.sort((l1, l2) -> { - return l1.toString().compareTo(l2.toString()); - }); - } - - @Override - public int getColumnCount() { - return 4; - } - - @Override - public boolean nextRow() { - index++; - return index < locales.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - final Locale locale = locales.get(index); - - switch (columnIndex) { - case COL_LOCALE: - return locale.toString(); - case COL_VALUE: - return selectedDomain.getDescription().getValue(locale); - case COL_EDIT: - return new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.edit", - ADMIN_BUNDLE)); - case COL_DEL: - return new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description.del", - ADMIN_BUNDLE)); - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return locales.get(index); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java deleted file mode 100644 index fa2734d9e..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.PropertySheet; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.bebop.form.SingleSelect; -import com.arsdigita.bebop.form.Submit; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.kernel.KernelConfig; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.HashSet; -import java.util.Set; -import java.util.TooManyListenersException; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainDetails extends SegmentedPanel { - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedLanguage; - private final DomainTitleAddForm domainTitleAddForm; - private final DomainDescriptionAddForm domainDescriptionAddForm; - - public DomainDetails( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedLanguage) { - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.selectedLanguage = selectedLanguage; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.domain_details.back", ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTab.hideDomainDetails(state); - }); - addSegment("domain-details-back", backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.details.heading", - ADMIN_BUNDLE, - new String[]{domain.getDomainKey()})); - }); - heading.setClassAttr("heading"); - add(heading); - - final BoxPanel propertiesPanel = new BoxPanel(BoxPanel.VERTICAL); - propertiesPanel.add(new PropertySheet( - new DomainPropertySheetModelBuilder(selectedDomainId))); - final ActionLink editBasicPropertiesLink = new ActionLink( - new GlobalizedMessage( - "ui.admin.categories.domain_details.basic_properties.edit", - ADMIN_BUNDLE)); - editBasicPropertiesLink.addActionListener(e -> { - final PageState state = e.getPageState(); - categoriesTab.showDomainForm(state); - }); - propertiesPanel.add(editBasicPropertiesLink); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.basic_properties", - ADMIN_BUNDLE)), - propertiesPanel); - - final BoxPanel titlesPanel = new BoxPanel(BoxPanel.VERTICAL); - titlesPanel.add(new DomainTitleTable(categoriesTab, - selectedDomainId, - selectedLanguage)); - domainTitleAddForm = new DomainTitleAddForm(); - titlesPanel.add(domainTitleAddForm); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.domain_title", - ADMIN_BUNDLE)), - titlesPanel); - - final BoxPanel descPanel = new BoxPanel(BoxPanel.VERTICAL); - descPanel.add(new DomainDescriptionTable(categoriesTab, - selectedDomainId, - selectedLanguage)); - domainDescriptionAddForm = new DomainDescriptionAddForm(); - descPanel.add(domainDescriptionAddForm); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.description", - ADMIN_BUNDLE)), - descPanel); - - final BoxPanel mappingsPanel = new BoxPanel(BoxPanel.VERTICAL); - mappingsPanel.add(new DomainMappingsTable(categoriesTab, - selectedDomainId)); - mappingsPanel.add(new DomainMappingAddForm(selectedDomainId)); - addSegment( - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings", - ADMIN_BUNDLE)), - mappingsPanel); - } - - private class DomainTitleAddForm extends Form { - - private static final String TITLE_SELECT_LANG = "titleSelectLang"; - - public DomainTitleAddForm() { - super("domainAddTitleLang", new BoxPanel(BoxPanel.HORIZONTAL)); - - final SingleSelect titleSelectLang = new SingleSelect( - TITLE_SELECT_LANG); - titleSelectLang.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_details.domain_title.add.label", - ADMIN_BUNDLE)); - try { - titleSelectLang.addPrintListener(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil - .createCdiUtil().findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long - .parseLong(selectedDomainId.getSelectedKey(state))) - .get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig - .getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - domain.getTitle().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - final SingleSelect target = (SingleSelect) e.getTarget(); - - target.clearOptions(); - - supportedLanguages.forEach(l -> { - if (!assignedLanguages.contains(l)) { - target.addOption(new Option(l, new Text(l))); - } - }); - }); - } catch (TooManyListenersException ex) { - throw new UncheckedWrapperException(ex); - } - - add(titleSelectLang); - add(new Submit(new GlobalizedMessage( - "ui.admin.categories.domain_details.domain_title.add.submit", - ADMIN_BUNDLE))); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final String language = data.getString(TITLE_SELECT_LANG); - selectedLanguage.setSelectedKey(state, language); - - categoriesTab.showDomainTitleForm(state); - }); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - final DomainRepository domainRepository = CdiUtil - .createCdiUtil().findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long - .parseLong(selectedDomainId.getSelectedKey(state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig - .getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - domain.getTitle().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - //If all supported languages are assigned the form is not - //visible - return !assignedLanguages.equals(supportedLanguages); - } else { - return false; - } - } - - } - - private class DomainDescriptionAddForm extends Form { - - private static final String DESC_SELECT_LANG = "descSelectLang"; - - public DomainDescriptionAddForm() { - super("domainAddDescLang", new BoxPanel(BoxPanel.HORIZONTAL)); - - final SingleSelect descSelectLang = new SingleSelect( - DESC_SELECT_LANG); - descSelectLang.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_details.domain_desc.add.label", - ADMIN_BUNDLE)); - try { - descSelectLang.addPrintListener(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil - .createCdiUtil().findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long - .parseLong(selectedDomainId.getSelectedKey(state))) - .get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig - .getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - domain.getDescription().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - final SingleSelect target = (SingleSelect) e.getTarget(); - - target.clearOptions(); - - supportedLanguages.forEach(l -> { - if (!assignedLanguages.contains(l)) { - target.addOption(new Option(l, new Text(l))); - } - }); - }); - } catch (TooManyListenersException ex) { - throw new UncheckedWrapperException(ex); - } - - add(descSelectLang); - add(new Submit(new GlobalizedMessage( - "ui.admin.categories.domain_details.domain_desc.add.submit", - ADMIN_BUNDLE))); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final String language = data.getString(DESC_SELECT_LANG); - selectedLanguage.setSelectedKey(state, language); - - categoriesTab.showDomainDescriptionForm(state); - - }); - } - - @Override - public boolean isVisible(final PageState state) { - if (super.isVisible(state)) { - final DomainRepository domainRepository = CdiUtil - .createCdiUtil().findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long - .parseLong(selectedDomainId.getSelectedKey(state))).get(); - final KernelConfig kernelConfig = KernelConfig.getConfig(); - final Set supportedLanguages = kernelConfig - .getSupportedLanguages(); - final Set assignedLanguages = new HashSet<>(); - domain.getDescription().getAvailableLocales().forEach(l -> { - assignedLanguages.add(l.toString()); - }); - - //If all supported languages are assigned the form is not - //visible - return !assignedLanguages.equals(supportedLanguages); - - } else { - return false; - } - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java deleted file mode 100644 index f5204dafb..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.Date; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainManager; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.time.LocalDate; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainForm extends Form { - - private static final String RELEASED = "released"; - private static final String VERSION = "version"; - private static final String DOMAIN_URI = "domainUri"; - private static final String DOMAIN_KEY = "domainKey"; - private static final String ROOT_CATEGORY_NAME = "rootCategoryName"; - - private final ParameterSingleSelectionModel selectedDomainId; - - private final TextField domainKey; - private final TextField domainUri; - private final TextField version; - private final Date released; - private final TextField rootCategoryName; - private final SaveCancelSection saveCancelSection; - - public DomainForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId) { - - super("domainForm"); - - this.selectedDomainId = selectedDomainId; - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - final Label target = (Label) e.getTarget(); - if (selectedDomainId.getSelectedKey(state) == null) { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.heading.create_new", - ADMIN_BUNDLE)); - } else { - final DomainRepository domainRepository = CdiUtil. - createCdiUtil().findBean(DomainRepository.class); - final Domain domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.heading.edit", - ADMIN_BUNDLE, - new String[]{domain.getDomainKey()})); - } - }); - heading.setClassAttr("heading"); - add(heading); - - domainKey = new TextField(DOMAIN_KEY); - domainKey.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.fields.domain_key", - ADMIN_BUNDLE)); - add(domainKey); - - domainUri = new TextField(DOMAIN_URI); - domainUri.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.fields.domain_uri", - ADMIN_BUNDLE)); - add(domainUri); - - version = new TextField(VERSION); - version.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.fields.version", - ADMIN_BUNDLE)); - add(version); - - released = new Date(RELEASED); - released.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.fields.released", - ADMIN_BUNDLE)); - add(released); - - rootCategoryName = new TextField(ROOT_CATEGORY_NAME); - rootCategoryName.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_form.fields.root_category_name", - ADMIN_BUNDLE)); - add(rootCategoryName); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - if (selectedDomainId.getSelectedKey(state) == null) { - rootCategoryName.setVisible(state, true); - } else { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - final Domain domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - - domainKey.setValue(state, domain.getDomainKey()); - domainUri.setValue(state, domain.getUri()); - version.setValue(state, domain.getVersion()); - released.setValue(state, domain.getReleased()); - - rootCategoryName.setVisible(state, false); - } - }); - - addValidationListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final FormData data = e.getFormData(); - final String domainKeyData = data.getString(DOMAIN_KEY); - final String versionData = data.getString(VERSION); - - if (Strings.isBlank(domainKeyData)) { - data.addError( - DOMAIN_KEY, - new GlobalizedMessage( - "ui.admin.categories.domain_form.errors.domain_key_blank", - ADMIN_BUNDLE)); - } - - if (Strings.isBlank(versionData)) { - data.addError( - DOMAIN_KEY, - new GlobalizedMessage( - "ui.admin.categories.domain_form.errors.version_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - final DomainManager domainManager = cdiUtil.findBean( - DomainManager.class); - - final FormData data = e.getFormData(); - final String domainKeyData = data.getString(DOMAIN_KEY); - final String domainUriData; - if (Strings.isBlank(data.getString(DOMAIN_URI))) { - domainUriData = null; - } else { - domainUriData = data.getString(DOMAIN_URI); - } - final String versionData = data.getString(VERSION); - final java.util.Date releasedData = (java.util.Date) data.get( - RELEASED - ); - final String rootCategoryNameData = data.getString( - ROOT_CATEGORY_NAME); - - final Domain domain; - if (selectedDomainId.getSelectedKey(state) == null) { - if (Strings.isBlank(rootCategoryNameData)) { - domain = domainManager.createDomain(domainKeyData, - domainKeyData); - } else { - domain = domainManager.createDomain( - domainKeyData, rootCategoryNameData); - } - } else { - domain = domainRepository.findById(Long.parseLong( - selectedDomainId.getSelectedKey(state))).get(); - } - domain.setDomainKey(domainKeyData); - domain.setUri(domainUriData); - domain.setVersion(versionData); - domain.setReleased(LocalDate.from(releasedData.toInstant())); - - domainRepository.save(domain); - } - - categoriesTab.hideDomainForm(state); - }); - - } - - @Override - public void register(final Page page) { - super.register(page); - - page.setVisibleDefault(rootCategoryName, false); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java deleted file mode 100644 index 46cfd9e61..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.bebop.form.SingleSelect; -import com.arsdigita.bebop.form.Submit; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainManager; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.CcmApplication; - -import java.util.List; -import java.util.TooManyListenersException; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainMappingAddForm extends Form { - - private static final String DOMAIN_MAPPING_OWNER = "domainMappingOwner"; - - public DomainMappingAddForm( - final ParameterSingleSelectionModel selectedDomainId) { - - super("domainMappingAddForm", new BoxPanel(BoxPanel.HORIZONTAL)); -// -// final Label heading = new Label(new GlobalizedMessage( -// "ui.admin.categories.domain_details.mappings.add", ADMIN_BUNDLE)); -// heading.setClassAttr("heading"); -// add(heading); - - final SingleSelect appSelect = new SingleSelect(DOMAIN_MAPPING_OWNER); - appSelect.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.add", ADMIN_BUNDLE)); - try { - appSelect.addPrintListener(e -> { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ApplicationRepository appRepository = cdiUtil.findBean( - ApplicationRepository.class); - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - final DomainManager domainManager = cdiUtil.findBean( - DomainManager.class); - final Domain domain = domainRepository.findById( - Long.parseLong( - selectedDomainId.getSelectedKey(e.getPageState())), - "Domain.withOwners").get(); - - final List applications = appRepository - .findAll(); - - final SingleSelect target = (SingleSelect) e.getTarget(); - target.clearOptions(); - - target.addOption(new Option("0", new Text(""))); - - applications.forEach(a -> { - if (!domainManager.isDomainOwner(a, domain)) { - target.addOption(new Option(Long.toString(a - .getObjectId()), - new Text(a.getPrimaryUrl()))); - } - }); - }); - } catch (TooManyListenersException ex) { - throw new UncheckedWrapperException(ex); - } - add(appSelect); - - add(new Submit(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.create", ADMIN_BUNDLE))); - - addValidationListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final String appId = data.getString(DOMAIN_MAPPING_OWNER); - if ("0".equals(appId)) { - data.addError( - DOMAIN_MAPPING_OWNER, - new GlobalizedMessage( - "ui.admin.categories.doamin_details.mappings.error" - + ".please_select_app", - ADMIN_BUNDLE)); - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - final FormData data = e.getFormData(); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - final DomainManager domainManager = cdiUtil.findBean( - DomainManager.class); - final ApplicationRepository appRepository = cdiUtil.findBean( - ApplicationRepository.class); - - final Domain domain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state)), - "Domain.withOwners").get(); - final CcmApplication application = appRepository.findById( - Long.parseLong(data.getString(DOMAIN_MAPPING_OWNER)), - "CcmApplication.withDomains").get(); - - domainManager.addDomainOwner(application, domain); - }); - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java deleted file mode 100644 index b7906be74..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainManager; -import org.libreccm.categorization.DomainOwnership; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.web.ApplicationRepository; -import org.libreccm.web.CcmApplication; - -import java.util.ArrayList; -import java.util.List; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainMappingsTable extends Table { - - private static final int COL_APPLICATION = 0; - private static final int COL_REMOVE = 1; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - - public DomainMappingsTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId) { - super(); - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - - setIdAttr("domainMappingsTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.none", - ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_APPLICATION, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.col_app", - ADMIN_BUNDLE)))); -// columnModel.add(new TableColumn( -// COL_CONTEXT, -// new Label(new GlobalizedMessage( -// "ui.admin.categories.domain_details.mappings.col_context", -// ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_REMOVE, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.col_remove", - ADMIN_BUNDLE)))); - - columnModel.get(COL_REMOVE).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.remove.confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - switch (event.getColumn()) { - case COL_REMOVE: - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final DomainRepository domainRepository = cdiUtil - .findBean(DomainRepository.class); - final DomainManager domainManager = cdiUtil.findBean( - DomainManager.class); - final ApplicationRepository appRepository = cdiUtil - .findBean(ApplicationRepository.class); - - final Domain domain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(event - .getPageState()))).get(); - - final CcmApplication owner = appRepository.findById( - Long.parseLong((String)event.getRowKey())).get(); - - domainManager.removeDomainOwner(owner, domain); - - break; - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new DomainMappingsTableModelBuilder()); - } - - private class DomainMappingsTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, - final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new DomainMappingsTableModel(state); - } - - } - - private class DomainMappingsTableModel implements TableModel { - - private final List domainOwnerships; - private int index = -1; - - public DomainMappingsTableModel(final PageState state) { - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain domain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state)), - "Domain.withOwners").get(); - - domainOwnerships = new ArrayList<>(domain.getOwners()); - - domainOwnerships.sort((o1, o2) -> { - return ((Long)o1.getOwnerOrder()).compareTo(o2.getOwnerOrder()); - }); - } - - @Override - public int getColumnCount() { - return 3; - } - - @Override - public boolean nextRow() { - index++; - return index < domainOwnerships.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - switch(columnIndex) { - case COL_APPLICATION: - return domainOwnerships.get(index).getOwner().getPrimaryUrl(); - case COL_REMOVE: - return new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.mappings.remove", - ADMIN_BUNDLE)); - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return domainOwnerships.get(index).getOwner().getObjectId(); - } - - } -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java deleted file mode 100644 index 22f6e4621..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.PropertySheetModel; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.libreccm.categorization.Domain; - -import java.util.Arrays; -import java.util.Iterator; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainPropertySheetModel implements PropertySheetModel { - - private static enum DomainProperty { - DOMAIN_KEY, - URI, - VERSION, - RELEASED - } - - private final Domain selectedDomain; - private final Iterator propertyIterator; - private DomainProperty currentProperty; - - public DomainPropertySheetModel(final Domain selectedDomain) { - this.selectedDomain = selectedDomain; - propertyIterator = Arrays.asList(DomainProperty.values()).iterator(); - } - - @Override - public boolean nextRow() { - if (selectedDomain == null) { - return false; - } - - if (propertyIterator.hasNext()) { - currentProperty = propertyIterator.next(); - return true; - } else { - return false; - } - } - - @Override - public String getLabel() { - return currentProperty.toString(); - } - - private GlobalizedMessage generatedGlobalizedLabel( - final DomainProperty property) { - - final String key = String.join( - "", - "ui.admin.categories.domain.property_sheet.", - property.toString().toLowerCase()); - return new GlobalizedMessage(key, ADMIN_BUNDLE); - } - - @Override - public GlobalizedMessage getGlobalizedLabel() { - return generatedGlobalizedLabel(currentProperty); - } - - @Override - public String getValue() { - switch (currentProperty) { - case DOMAIN_KEY: - return selectedDomain.getDomainKey(); - case URI: - return selectedDomain.getUri(); - case VERSION: - return selectedDomain.getVersion(); - case RELEASED: - if (selectedDomain.getReleased() == null) { - return ""; - } else { - return String.format("%tY-%Jens Pelzetter - */ -class DomainPropertySheetModelBuilder - extends LockableImpl - implements PropertySheetModelBuilder { - - private final ParameterSingleSelectionModel selectedDomainId; - - public DomainPropertySheetModelBuilder( - final ParameterSingleSelectionModel selectedDomainId) { - - this.selectedDomainId = selectedDomainId; - - } - - @Override - public PropertySheetModel makeModel(final PropertySheet sheet, - final PageState state) { - final String domainIdStr = selectedDomainId.getSelectedKey(state); - final Domain selectedDomain; - if (Strings.isBlank(domainIdStr)) { - selectedDomain = null; - } else { - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - selectedDomain = domainRepository.findById(Long.parseLong( - domainIdStr)).get(); - } - - return new DomainPropertySheetModel(selectedDomain); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java deleted file mode 100644 index 06a511584..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.SaveCancelSection; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.globalization.GlobalizedMessage; - -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.Locale; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainTitleForm extends Form { - - private static final String LOCALIZED_DOMAIN_TITLE = "title"; - - private final CategoriesTab categoriesTab; - - private final TextField title; - private final SaveCancelSection saveCancelSection; - - public DomainTitleForm( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedLanguage) { - - super("domainTitleForm", new BoxPanel(BoxPanel.VERTICAL)); - - this.categoriesTab = categoriesTab; - - final ActionLink backLink = new ActionLink(new GlobalizedMessage( - "ui.admin.categories.domain.title.edit.back", ADMIN_BUNDLE)); - backLink.addActionListener(e -> { - categoriesTab.hideDomainTitleForm(e.getPageState()); - }); - add(backLink); - - final Label heading = new Label(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final Label target = (Label) e.getTarget(); - - if (selectedDomain.getTitle().hasValue(selectedLocale)) { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.title.edit_for_lang", - ADMIN_BUNDLE, - new String[]{selectedDomain.getDomainKey(), - selectedLocale.toString()})); - } else { - target.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.title.add_for_lang", - ADMIN_BUNDLE, - new String[]{selectedDomain.getDomainKey(), - selectedLocale.toString()})); - } - }); - heading.setClassAttr("heading"); - add(heading); - - title = new TextField(LOCALIZED_DOMAIN_TITLE); - title.setLabel(new GlobalizedMessage( - "ui.admin.categories.domain.title.label", ADMIN_BUNDLE)); - add(title); - - saveCancelSection = new SaveCancelSection(); - add(saveCancelSection); - - addInitListener(e -> { - final PageState state = e.getPageState(); - - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - if (selectedDomain.getTitle().hasValue(selectedLocale)) { - title.setValue(state, selectedDomain.getTitle().getValue( - selectedLocale)); - } - }); - - addValidationListener(e -> { - - if (saveCancelSection.getSaveButton().isSelected( - e.getPageState())) { - final FormData data = e.getFormData(); - - final String titleData = data.getString(LOCALIZED_DOMAIN_TITLE); - - if (Strings.isBlank(titleData)) { - data.addError( - LOCALIZED_DOMAIN_TITLE, - new GlobalizedMessage( - "ui.admin.categories.domain.title.error.not_blank", - ADMIN_BUNDLE)); - } - } - }); - - addProcessListener(e -> { - final PageState state = e.getPageState(); - - if (saveCancelSection.getSaveButton().isSelected(state)) { - final DomainRepository domainRepository = CdiUtil - .createCdiUtil() - .findBean(DomainRepository.class); - final Domain selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))) - .get(); - - final Locale selectedLocale = new Locale(selectedLanguage - .getSelectedKey(state)); - - final String titleData = e.getFormData().getString( - LOCALIZED_DOMAIN_TITLE); - - selectedDomain.getTitle().putValue(selectedLocale, titleData); - domainRepository.save(selectedDomain); - } - - categoriesTab.hideDomainTitleForm(state); - }); - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java deleted file mode 100644 index 50e40134f..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainTitleTable extends Table { - - private static final int COL_LOCALE = 0; - private static final int COL_VALUE = 1; - private static final int COL_EDIT = 2; - private static final int COL_DEL = 3; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final ParameterSingleSelectionModel selectedLanguage; - - public DomainTitleTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final ParameterSingleSelectionModel selectedLanguage) { - - super(); - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.selectedLanguage = selectedLanguage; - - setIdAttr("domainTitleTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.none", ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_LOCALE, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.col_lang", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_VALUE, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.col_value", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.col_edit", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DEL, - new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.col_del", - ADMIN_BUNDLE)))); - - columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((Component) value); - } - - }); - - columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_EDIT: - selectedLanguage.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showDomainTitleForm(state); - break; - case COL_DEL: - final Locale locale = new Locale((String) event - .getRowKey()); - final DomainRepository domainRepository = CdiUtil - .createCdiUtil(). - findBean(DomainRepository.class); - final Domain domain = domainRepository.findById( - Long.parseLong(selectedDomainId - .getSelectedKey(state))).get(); - domain.getTitle().removeValue(locale); - - domainRepository.save(domain); - - break; - } - } - - @Override - public void headSelected(final TableActionEvent e) { - //Nothing - } - - }); - - setModelBuilder(new DomainTitleTableModelBuilder()); - } - - private class DomainTitleTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new DomainTitleTableModel(state); - } - - } - - private class DomainTitleTableModel implements TableModel { - - private final Domain selectedDomain; - private final List locales; - private int index = -1; - - public DomainTitleTableModel(final PageState state) { - final DomainRepository domainRepository = CdiUtil.createCdiUtil() - .findBean(DomainRepository.class); - selectedDomain = domainRepository.findById( - Long.parseLong(selectedDomainId.getSelectedKey(state))).get(); - - locales = new ArrayList<>(); - locales.addAll(selectedDomain.getTitle().getAvailableLocales()); - locales.sort((l1, l2) -> { - return l1.toString().compareTo(l2.toString()); - }); - } - - @Override - public int getColumnCount() { - return 4; - } - - @Override - public boolean nextRow() { - index++; - return index < locales.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - final Locale locale = locales.get(index); - - switch (columnIndex) { - case COL_LOCALE: - return locale.toString(); - case COL_VALUE: - return selectedDomain.getTitle().getValue(locale); - case COL_EDIT: - return new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.edit", - ADMIN_BUNDLE - )); - case COL_DEL: - return new Label(new GlobalizedMessage( - "ui.admin.categories.domain_details.title.del", - ADMIN_BUNDLE - )); - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - @Override - public Object getKeyAt(final int columnIndex) { - return locales.get(index); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java deleted file mode 100644 index 8b2aca591..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.form.TextField; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; - -import java.util.List; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.util.Strings; -import org.libreccm.categorization.Domain; -import org.libreccm.categorization.DomainRepository; -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.l10n.GlobalizationHelper; -import org.libreccm.l10n.LocalizedString; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -class DomainsTable extends Table { - - private final static Logger LOGGER = LogManager.getLogger( - DomainsTable.class); - - private static final int COL_DOMAIN_KEY = 0; - private static final int COL_DOMAIN_URI = 1; - private static final int COL_DOMAIN_TITLE = 2; - private static final int COL_DOMAIN_DEL = 3; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedDomainId; - private final TextField domainsFilter; - - public DomainsTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedDomainId, - final TextField domainsFilter) { - super(); - - setIdAttr("domainsTable"); - - this.categoriesTab = categoriesTab; - this.selectedDomainId = selectedDomainId; - this.domainsFilter = domainsFilter; - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.domains.none", - ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_DOMAIN_KEY, - new Label(new GlobalizedMessage( - "ui,admin.categories.domains.table.col_key", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DOMAIN_URI, - new Label(new GlobalizedMessage( - "ui,admin.categories.domains.table.col_uri", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DOMAIN_TITLE, - new Label(new GlobalizedMessage( - "ui,admin.categories.domains.table.col_title", - ADMIN_BUNDLE)))); - columnModel.add(new TableColumn( - COL_DOMAIN_DEL, - new Label(new GlobalizedMessage( - "ui,admin.categories.domains.table.col_del", - ADMIN_BUNDLE)))); - - columnModel.get(COL_DOMAIN_KEY).setCellRenderer( - new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((String) value); - } - - }); - - columnModel.get(COL_DOMAIN_TITLE).setCellRenderer( - new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - final LocalizedString title = (LocalizedString) value; - final GlobalizationHelper globalizationHelper = CdiUtil. - createCdiUtil().findBean(GlobalizationHelper.class); - return new Text(title.getValue(globalizationHelper. - getNegotiatedLocale())); - } - - }); - - columnModel.get(COL_DOMAIN_DEL).setCellRenderer( - new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.domains.table.del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_DOMAIN_KEY: - selectedDomainId.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showDomainDetails(state); - break; - case COL_DOMAIN_DEL: - break; - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new DomainsTableModelBuilder()); - } - - private class DomainsTableModelBuilder extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, - final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new DomainsTableModel(state); - } - - } - - private class DomainsTableModel implements TableModel { - - private final List domains; - private int index = -1; - - public DomainsTableModel(final PageState state) { - LOGGER.debug("Creating DomainsTableModel"); - final String filterTerm = (String) domainsFilter.getValue(state); - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final DomainRepository domainRepository = cdiUtil.findBean( - DomainRepository.class); - if (Strings.isBlank(filterTerm)) { - domains = domainRepository.findAll("Domain.withOwners"); - LOGGER.debug("Found {} domains in the database.", - domains.size()); - } else { - domains = domainRepository.search(filterTerm); - LOGGER.debug("Found {} domain which match the " - + "filter \"{}\".", - domains.size(), - filterTerm); - } - } - - @Override - public int getColumnCount() { - return 4; - } - - @Override - public boolean nextRow() { - index++; - return index < domains.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - LOGGER.debug("Getting element for index {}, column {}...", - index, - columnIndex); - final Domain domain = domains.get(index); - switch (columnIndex) { - case COL_DOMAIN_KEY: - return domain.getDomainKey(); - case COL_DOMAIN_URI: - return domain.getUri(); - case COL_DOMAIN_TITLE: - return domain.getTitle(); - case COL_DOMAIN_DEL: - if (isDeleteable(domain)) { - return new Label(new GlobalizedMessage( - "ui.admin.categories.domains.table.del", - ADMIN_BUNDLE)); - } else { - return null; - } - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - - } - - @Override - public Object getKeyAt(final int columnIndex) { - return domains.get(index).getObjectId(); - } - - private boolean isDeleteable(final Domain domain) { - return !(domain.getOwners() != null && !domain.getOwners().isEmpty()); - } - - } - -} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java deleted file mode 100644 index 91af7e41a..000000000 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Copyright (C) 2016 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.ui.admin.categories; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.ControlLink; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.ParameterSingleSelectionModel; -import com.arsdigita.bebop.Table; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.TableActionEvent; -import com.arsdigita.bebop.event.TableActionListener; -import com.arsdigita.bebop.table.TableCellRenderer; -import com.arsdigita.bebop.table.TableColumn; -import com.arsdigita.bebop.table.TableColumnModel; -import com.arsdigita.bebop.table.TableModel; -import com.arsdigita.bebop.table.TableModelBuilder; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.LockableImpl; - -import org.libreccm.categorization.Categorization; -import org.libreccm.categorization.Category; -import org.libreccm.categorization.CategoryManager; -import org.libreccm.categorization.CategoryRepository; -import org.libreccm.cdi.utils.CdiUtil; - -import java.util.ArrayList; -import java.util.List; - -import static com.arsdigita.ui.admin.AdminUiConstants.*; - -/** - * - * @author Jens Pelzetter - */ -public class SubCategoriesTable extends Table { - - private static final int COL_NAME = 0; - private static final int COL_UP = 1; - private static final int COL_DOWN = 2; - private static final int COL_EDIT = 3; - private static final int COL_DEL = 4; - - private final CategoriesTab categoriesTab; - private final ParameterSingleSelectionModel selectedCategoryId; - - public SubCategoriesTable( - final CategoriesTab categoriesTab, - final ParameterSingleSelectionModel selectedCategoryId) { - - super(); - - this.categoriesTab = categoriesTab; - this.selectedCategoryId = selectedCategoryId; - - setIdAttr("subCategoriesTable"); - - setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.categories.category.no_subcategories", - ADMIN_BUNDLE))); - - final TableColumnModel columnModel = getColumnModel(); - columnModel.add(new TableColumn( - COL_NAME, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.col_name", - ADMIN_BUNDLE)) - )); - columnModel.add(new TableColumn( - COL_UP, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.col_up", - ADMIN_BUNDLE)) - )); - columnModel.add(new TableColumn( - COL_DOWN, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.col_down", - ADMIN_BUNDLE)) - )); - columnModel.add(new TableColumn( - COL_EDIT, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.col_edit", - ADMIN_BUNDLE)) - )); - columnModel.add(new TableColumn( - COL_DEL, - new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.col_del", - ADMIN_BUNDLE)) - )); - - columnModel.get(COL_UP).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - return new ControlLink((Component) value); - } - } - - }); - - columnModel.get(COL_DOWN).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - return new ControlLink((Component) value); - } - } - - }); - - columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - return new ControlLink((Component) value); - } - - }); - - columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, - final boolean isSelected, - final Object key, - final int row, - final int column) { - if (value == null) { - return new Text(""); - } else { - final ControlLink link = new ControlLink((Component) value); - link.setConfirmation(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.del_confirm", - ADMIN_BUNDLE)); - return link; - } - } - - }); - - addTableActionListener(new TableActionListener() { - - @Override - public void cellSelected(final TableActionEvent event) { - final PageState state = event.getPageState(); - - switch (event.getColumn()) { - case COL_UP: { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepo = cdiUtil - .findBean(CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil - .findBean(CategoryManager.class); - final Category parentCategory = categoryRepo.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final Category subCategory = categoryRepo.findById(Long - .parseLong((String) event.getRowKey())).get(); - categoryManager.decreaseCategoryOrder(subCategory, - parentCategory); - break; - } - case COL_DOWN: { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepo = cdiUtil - .findBean(CategoryRepository.class); - final CategoryManager categoryManager = cdiUtil - .findBean(CategoryManager.class); - final Category parentCategory = categoryRepo.findById( - Long.parseLong(selectedCategoryId.getSelectedKey( - state))).get(); - final Category subCategory = categoryRepo.findById(Long - .parseLong((String) event.getRowKey())).get(); - categoryManager.increaseCategoryOrder(subCategory, - parentCategory); - break; - } - case COL_EDIT: { - selectedCategoryId.setSelectedKey(state, - event.getRowKey()); - categoriesTab.showCategoryEditForm(state); - break; - } - case COL_DEL: { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoryRepository categoryRepo = cdiUtil - .findBean(CategoryRepository.class); - final Category category = categoryRepo.findById(Long - .parseLong((String) event.getRowKey())).get(); - categoryRepo.delete(category); - break; - } - } - } - - @Override - public void headSelected(final TableActionEvent event) { - //Nothing - } - - }); - - setModelBuilder(new SubCategoriesTableModelBuilder()); - } - - private class SubCategoriesTableModelBuilder - extends LockableImpl - implements TableModelBuilder { - - @Override - public TableModel makeModel(final Table table, final PageState state) { - table.getRowSelectionModel().clearSelection(state); - - return new SubCategoriesTableModel(state); - } - - } - - private class SubCategoriesTableModel implements TableModel { - - private final List subCategories; - private int index = -1; - - public SubCategoriesTableModel(final PageState state) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoriesController controller = cdiUtil - .findBean(CategoriesController.class); - final CategoryRepository categoryRepo = CdiUtil. - createCdiUtil().findBean(CategoryRepository.class); - final Category category = categoryRepo.findById(Long.parseLong( - selectedCategoryId.getSelectedKey(state))).get(); - - subCategories = controller.getSubCategories(category); - -// subCategories.sort((c1, c2) -> { -// return Long.compare(c1.getCategoryOrder(), -// c2.getCategoryOrder()); -// }); - } - - @Override - public int getColumnCount() { - return 5; - } - - @Override - public boolean nextRow() { - index++; - return index < subCategories.size(); - } - - @Override - public Object getElementAt(final int columnIndex) { - final Category subCategory = subCategories.get(index); - - switch (columnIndex) { - case COL_NAME: - return subCategory.getName(); - case COL_UP: - if (index == 0) { - return null; - } else { - return new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.up", - ADMIN_BUNDLE)); - } - case COL_DOWN: - if (index == subCategories.size() - 1) { - return null; - } else { - return new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.down", - ADMIN_BUNDLE)); - } - case COL_EDIT: - return new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.edit", - ADMIN_BUNDLE)); - case COL_DEL: - if (isDeletable(subCategory)) { - return new Label(new GlobalizedMessage( - "ui.admin.categories.category.subcategories.del", - ADMIN_BUNDLE)); - } else { - return null; - } - default: - throw new IllegalArgumentException( - "Not a valid column index"); - } - } - - private boolean isDeletable(final Category category) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final CategoriesController controller = cdiUtil - .findBean(CategoriesController.class); - - return controller.isDeletable(category); - } - - @Override - public Object getKeyAt(final int columnIndex) { - return subCategories.get(index).getObjectId(); - } - - } - -} diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java index 35dfbe403..d7475c7b2 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java @@ -18,18 +18,15 @@ */ package org.libreccm.core; -import com.arsdigita.ui.admin.AdminServlet; import com.arsdigita.ui.admin.AdminUiConstants; import com.arsdigita.ui.admin.applications.AdminApplicationCreator; import com.arsdigita.ui.admin.applications.AdminApplicationSetup; import com.arsdigita.ui.login.LoginApplicationCreator; import com.arsdigita.ui.login.LoginApplicationSetup; import com.arsdigita.ui.login.LoginConstants; -import com.arsdigita.ui.login.LoginServlet; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.libreccm.admin.ui.AdminJsfApplicationCreator; import org.libreccm.admin.ui.AdminJsfApplicationSetup; import org.libreccm.modules.CcmModule; import org.libreccm.modules.InitEvent; @@ -52,43 +49,42 @@ import java.util.Properties; * * @author Jens Pelzetter */ -@Module(applicationTypes = { - @ApplicationType(name = LoginConstants.LOGIN_APP_TYPE, - descBundle = "com.arsdigita.ui.login.LoginResources", - singleton = true, - creator = LoginApplicationCreator.class, - servlet = LoginServlet.class), - @ApplicationType(name = AdminUiConstants.ADMIN_APP_TYPE, - descBundle = "com.arsdigita.ui.admin.AdminResources", - singleton = true, - creator = AdminApplicationCreator.class, - servlet = AdminServlet.class), - @ApplicationType(name = "org.libreccm.ui.admin.AdminFaces", - descBundle = "com.arsdigita.ui.admin.AdminResources", - singleton = true, - creator = AdminJsfApplicationCreator.class, - servletPath = "/admin-jsf/admin.xhtml") +@Module( + applicationTypes = { + @ApplicationType( + name = LoginConstants.LOGIN_APP_TYPE, + descBundle = "com.arsdigita.ui.login.LoginResources", + singleton = true, + creator = LoginApplicationCreator.class + ), + @ApplicationType( + name = AdminUiConstants.ADMIN_APP_TYPE, + descBundle = "com.arsdigita.ui.admin.AdminResources", + singleton = true, + creator = AdminApplicationCreator.class + ) }, - pageModelComponentModels = {}, - configurations = { - com.arsdigita.bebop.BebopConfig.class, - com.arsdigita.dispatcher.DispatcherConfig.class, - com.arsdigita.globalization.GlobalizationConfig.class, - com.arsdigita.kernel.KernelConfig.class, - com.arsdigita.kernel.security.SecurityConfig.class, - com.arsdigita.mail.MailConfig.class, - com.arsdigita.notification.NotificationConfig.class, - com.arsdigita.templating.TemplatingConfig.class, - com.arsdigita.ui.UIConfig.class, - com.arsdigita.web.WebConfig.class, - com.arsdigita.workflow.simple.WorkflowConfig.class, - com.arsdigita.xml.XmlConfig.class, - com.arsdigita.xml.formatters.DateFormatterConfig.class, - org.libreccm.configuration.ExampleConfiguration.class, - org.libreccm.files.CcmFilesConfiguration.class, - org.libreccm.search.SearchConfig.class, - org.libreccm.security.EmailTemplates.class, - org.libreccm.security.OneTimeAuthConfig.class,}) + configurations = { + com.arsdigita.bebop.BebopConfig.class, + com.arsdigita.dispatcher.DispatcherConfig.class, + com.arsdigita.globalization.GlobalizationConfig.class, + com.arsdigita.kernel.KernelConfig.class, + com.arsdigita.kernel.security.SecurityConfig.class, + com.arsdigita.mail.MailConfig.class, + com.arsdigita.notification.NotificationConfig.class, + com.arsdigita.templating.TemplatingConfig.class, + com.arsdigita.ui.UIConfig.class, + com.arsdigita.web.WebConfig.class, + com.arsdigita.workflow.simple.WorkflowConfig.class, + com.arsdigita.xml.XmlConfig.class, + com.arsdigita.xml.formatters.DateFormatterConfig.class, + org.libreccm.configuration.ExampleConfiguration.class, + org.libreccm.files.CcmFilesConfiguration.class, + org.libreccm.search.SearchConfig.class, + org.libreccm.security.EmailTemplates.class, + org.libreccm.security.OneTimeAuthConfig.class + } +) public class CcmCore implements CcmModule { private static final Logger LOGGER = LogManager.getLogger(CcmCore.class); diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java index 81498bf77..0452e9ef5 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java @@ -18,10 +18,6 @@ */ package org.libreccm.web; -import com.arsdigita.ui.admin.applications.AbstractAppInstanceForm; -import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane; -import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm; -import com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane; import org.libreccm.ui.admin.applications.ApplicationController; import org.libreccm.ui.admin.applications.DefaultApplicationController; @@ -34,7 +30,7 @@ import java.lang.annotation.RetentionPolicy; /** * Descriptor for application types. - * + * * @author Jens Pelzetter */ @Retention(RetentionPolicy.RUNTIME) @@ -118,12 +114,6 @@ public @interface ApplicationType { @SuppressWarnings("rawtypes") // Can't specify type here, otherwise problems in using classes. Class creator(); - @Deprecated - Class instanceForm() default DefaultApplicationInstanceForm.class; - - @Deprecated - Class settingsPane() default DefaultApplicationSettingsPane.class; - Class applicationController() default DefaultApplicationController.class; }