private void clonePortletsFromOnePageToAnother(final ApplicationUser owner, final PortalPage clonePortalPage, final PortalPage targetPortalPage) { notNull("owner", owner); notNull("clonePortalPage", clonePortalPage); notNull("targetPortalPage", targetPortalPage); final GadgetPermissionManager gadgetPermissionManager = getGadgetPermissionManager(); final List<PortletConfiguration> pcsToClone = portletConfigurationManager.getByPortalPage(clonePortalPage.getId()); for (final PortletConfiguration pc : pcsToClone) { Option<PluginGadgetSpec> pluginGadgetSpec = gadgetPermissionManager.getPluginGadgetSpec(pc.getOpenSocialSpecUri().getOrNull()); final boolean userHasPermissionToOpenSocialGadget = (pluginGadgetSpec.isDefined()) && ALLOW.equals(gadgetPermissionManager.voteOn(pluginGadgetSpec.get(), owner)); final boolean isDashboardItem = pc.getCompleteModuleKey().isDefined(); if (isDashboardItem || userHasPermissionToOpenSocialGadget) { portletConfigurationManager.addDashBoardItem( targetPortalPage.getId(), pc.getColumn(), pc.getRow(), pc.getOpenSocialSpecUri(), pc.getColor(), pc.getUserPrefs(), pc.getCompleteModuleKey()); } } }