private static void deleteNode(final NodePK pk, final Connection connection) throws SQLException { NodeNotificationService notificationService = NodeNotificationService.getService(); notificationService.notifyOnDeletionOf(pk); NodeDAO.deleteRow(connection, pk); NodeI18NDAO.removeTranslations(connection, Integer.parseInt(pk.getId())); IndexEntryPK indexEntry = new IndexEntryPK(pk.getComponentName(), "Node", pk.getId()); IndexEngineProxy.removeIndexEntry(indexEntry); }
/** * Selection des éléments nécessaires à la construction de l'url de l'item. * * @return * @throws Exception */ public String getUrl() throws Exception { PublicationDetail pub = null; NodeDetail node = null; String page = ""; if (idTopic != null) { node = themetracker.getTopic(idTopic); } else if (idPub != null) { pub = themetracker.getPublicationDetail(idPub); Collection<NodePK> fathers = pub.getPublicationBm().getAllFatherPK(pub.getPK()); Iterator<NodePK> it = fathers.iterator(); while (it.hasNext()) { NodePK pk = it.next(); node = themetracker.getTopic(pk.getId()); if (excludeTopicNamed != null) { StringTokenizer st = new StringTokenizer(node.getFullPath(), "/"); boolean found = false; while (st.hasMoreTokens()) { if (themetracker.getTopic(st.nextToken()).getName().equals(excludeTopicNamed)) { found = true; break; } } if (found == false) break; } else { break; } } @SuppressWarnings("unchecked") Collection<PublicationDetail> pubs = themetracker.getPublicationsByTopic(node.getId() + ",order,asc"); Iterator<PublicationDetail> iPubs = pubs.iterator(); int order = 1; while (iPubs.hasNext()) { PublicationDetail p = iPubs.next(); if (p.getId().equals(pub.getId())) break; order++; } if (order > 1) page = "-" + order; } else { throw new Exception("Pas de publication ou de theme"); } if (Boolean.parseBoolean(usePageNumber)) { return generateFullSemanticPath(node, pub) + page; } else { return generateFullSemanticPath(node, pub) + "-" + idPub; } }
/** * Builds and sends a webpages notification. A warning message is logged when an exception is * catched. * * @param resource * @param userId */ public static void notify(final NodePK resource, final String userId) { try { UserNotificationHelper.buildAndSend(new WebPagesUserNotifier(resource, userId)); } catch (final Exception e) { SilverTrace.warn( "webPages", "WebPagesUserNotifier.notify()", "webPages.EX_IMPOSSIBLE_DALERTER_LES_UTILISATEURS", "nodeId = " + resource.getId(), e); } }
@Override public boolean isReadable(ShareableResource resource) { Ticket ticket = SharingServiceFactory.getSharingTicketService().getTicket(resource.getToken()); try { if (ticket != null && ticket instanceof NodeTicket) { NodePK nodePk = new NodePK(String.valueOf(ticket.getSharedObjectId()), ticket.getComponentId()); Collection<NodePK> autorizedNodes = getNodeDescendants(nodePk); autorizedNodes.add(nodePk); if (resource.getAccessedObject() instanceof AttachmentDetail) { AttachmentDetail attachment = (AttachmentDetail) resource.getAccessedObject(); return isPublicationReadable( attachment.getForeignKey(), nodePk.getInstanceId(), autorizedNodes); } if (resource.getAccessedObject() instanceof SimpleDocument) { SimpleDocument attachment = (SimpleDocument) resource.getAccessedObject(); return isPublicationReadable( new ForeignPK(attachment.getForeignId(), attachment.getInstanceId()), nodePk.getInstanceId(), autorizedNodes); } if (resource.getAccessedObject() instanceof Document) { Document document = (Document) resource.getAccessedObject(); return isPublicationReadable( document.getForeignKey(), nodePk.getInstanceId(), autorizedNodes); } if (resource.getAccessedObject() instanceof NodeDetail) { NodeDetail node = (NodeDetail) resource.getAccessedObject(); return autorizedNodes.contains(node.getNodePK()); } } } catch (Exception ex) { return false; } return false; }
/* * (non-Javadoc) * @see com.silverpeas.notification.builder.AbstractTemplateUserNotificationBuilder# * performNotificationResource(java.lang.String, java.lang.Object, * com.silverpeas.notification.model.NotificationResourceData) */ @Override protected void performNotificationResource( final String language, final NodePK resource, final NotificationResourceData notificationResourceData) { // The resource name corresponds at the label of the instantiated application notificationResourceData.setResourceName( OrganisationControllerFactory.getOrganisationController() .getComponentInstLight(getComponentInstanceId()) .getLabel()); notificationResourceData.setResourceId(resource.getId()); notificationResourceData.setResourceType(getTemplatePath()); // Exceptionally the resource location is builded at this level // Normally, the location is builded by the delayed notification mechanism notificationResourceData.setResourceLocation(buildResourceLocation()); }
/** * Method declaration * * @param userId * @param node * @see */ public void addFavoritNode(String userId, NodePK node) { SilverTrace.info( "favorit", "FavoritBmEJB.addFavoritNode", "root.MSG_GEN_ENTER_METHOD", "userId = " + userId + ", node = " + node.toString()); Connection con = null; try { con = getConnection(); NodeActorLinkDAO.add(con, rootTableName, userId, node); } catch (Exception e) { throw new FavoritRuntimeException("favorit.CANNOT_ADD_FAVORIT", e); } finally { freeConnection(con); } }
/** * Method declaration * * @param node * @param path * @see */ public void removeFavoritByNodePath(NodePK node, String path) { SilverTrace.info( "favorit", "FavoritBmEJB.removeFavoritByNodePath", "root.MSG_GEN_ENTER_METHOD", "node = " + node.toString() + ", path = " + path); Connection con = null; try { con = getConnection(); NodeActorLinkDAO.removeByNodePath(con, rootTableName, node, path); } catch (Exception e) { throw new FavoritRuntimeException("favorit.CANNOT_REMOVE_FAVORIT_BY_NODE", e); } finally { freeConnection(con); } }
/** * Method declaration * * @param node * @param path * @see */ @Override public void unsubscribeByPath(NodePK node, String path) { SilverTrace.info( "subscribe", "SubscribeBmEJB.removeSubscriptionsByPath", "root.MSG_GEN_ENTER_METHOD"); Connection con = null; try { con = getConnection(); subscriptionDao.removeByNodePath(con, node.getComponentName(), path); } catch (SQLException e) { DBUtil.rollback(con); throw new SubscribeRuntimeException( "SubscribeBmEJB.removeSubscriptionsByPath()", SilverpeasRuntimeException.ERROR, "subscribe.CANNOT_REMOVE_NODE_SUBSCRIBES", e); } finally { DBUtil.close(con); } }
/** * Deletes the specified node and all of its children within the specified data source connection. * * @param pk the primary key of the father node to delete. * @param inConnection the connection to use in the deletion. * @param afterDeletion the method to invoke after the deletion of a node. */ public static void deleteNodes( final NodePK pk, final Connection inConnection, final AnonymousMethodOnNode afterDeletion) { try { Collection<NodeDetail> children = NodeDAO.getChildrenDetails(inConnection, pk); for (NodeDetail childNode : children) { deleteNodes(childNode.getNodePK(), inConnection, afterDeletion); } deleteNode(pk, inConnection); if (afterDeletion != null) { afterDeletion.invoke(pk); } } catch (Exception ex) { throw new NodeRuntimeException( "NodeBmEJB.removeNode()", SilverpeasRuntimeException.ERROR, "node.DELETING_NODE_FAILED", "nodeId = " + pk.getId(), ex); } }
/* * (non-Javadoc) * @see * com.silverpeas.notification.builder.AbstractResourceUserNotificationBuilder#getResourceURL( * java.lang.Object) */ @Override protected String getResourceURL(final NodePK resource) { return URLManager.getURL(null, null, resource.getInstanceId()) + "Main"; }