コード例 #1
0
  private void deleteComponent(
      final ComponentIdentifier id, final ComponentEventQueue ceq, final boolean deleteOrphans) {
    final NCSComponent component = getComponent(id);

    if (component == null) {
      throw new WebApplicationException(Status.BAD_REQUEST);
    }

    final Set<NCSComponent> parentComponents = component.getParentComponents();
    final Set<ComponentIdentifier> childrenIdentifiers =
        getIdentifiers(component.getSubcomponents());

    // first, we deal with orphans
    if (deleteOrphans) {
      for (final ComponentIdentifier subId : childrenIdentifiers) {
        handleOrphanedComponents(component, subId, ceq, deleteOrphans);
      }
    }

    // first, we remove this component from each of its parents
    for (final NCSComponent parent : parentComponents) {
      parent.getSubcomponents().remove(component);
      m_componentDao.update(parent);
    }

    // then we delete this component
    component.setSubcomponents(EMPTY_COMPONENT_SET);
    m_componentDao.delete(component);

    // and any events or alarms depending on it
    deleteEvents(id.getForeignSource(), id.getForeignId());
    deleteAlarms(id.getForeignSource(), id.getForeignId());

    // alert that the component is deleted
    ceq.componentDeleted(getIdentifier(component));

    // then alert about the parents
    sendUpdateEvents(ceq, getIdentifiers(parentComponents));
  }
コード例 #2
0
 private NCSComponent getComponent(final ComponentIdentifier id) {
   return m_componentDao.findByTypeAndForeignIdentity(
       id.getType(), id.getForeignSource(), id.getForeignId());
 }