public UnidadDocumentalVO crearUnidadDocumental(
      SerieVO serie,
      ValoracionSerieVO valoracion,
      INivelCFVO nivelUnidadDocumental,
      String codigoUdoc,
      transferencias.vos.UnidadDocumentalVO infoUnidadDocumental,
      Map.Entry sistemaProductor,
      String tipoDocumental,
      String idLCAPref,
      String idArchivo,
      boolean comprobarPermisos,
      boolean isUnidadElectronica) {

    // Auditoria
    LoggingEvent logEvent = AuditFondos.getLogginEventAlta(this);
    Locale locale = getServiceClient().getLocale();

    if (comprobarPermisos) checkPermission(FondosSecurityManager.ALTA_ELEMENTO_ACTION);
    ElementoCuadroClasificacionVO elementoCF = new ElementoCuadroClasificacion();
    elementoCF.setCodigo(codigoUdoc);
    elementoCF.setTitulo(infoUnidadDocumental.getAsunto());
    elementoCF.setIdPadre(serie.getId());
    elementoCF.setIdNivel(nivelUnidadDocumental.getId());
    elementoCF.setIdFichaDescr(nivelUnidadDocumental.getIdFichaDescrPref());
    elementoCF.setTipo(TipoNivelCF.UNIDAD_DOCUMENTAL.getIdentificador());
    ConfiguracionFondos configuracionFondos =
        ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo()
            .getConfiguracionFondos();
    StringBuffer codigoReferenciaUdoc =
        new StringBuffer(serie.getCodReferencia())
            .append(configuracionFondos.getDelimitadorCodigoReferencia())
            .append(codigoUdoc);
    elementoCF.setIdFondo(serie.getIdFondo());
    elementoCF.setCodRefFondo(serie.getCodRefFondo());
    elementoCF.setCodReferencia(codigoReferenciaUdoc.toString());
    elementoCF.setEstado(IElementoCuadroClasificacion.VIGENTE);
    elementoCF.setIdLCA(idLCAPref);
    elementoCF.setNivelAcceso(getNivelAcceso(infoUnidadDocumental, valoracion));
    elementoCF.setIdArchivo(idArchivo);
    String fichaDescripcionUdoc = nivelUnidadDocumental.getIdFichaDescrPref();
    String idRepEcmUdoc = nivelUnidadDocumental.getIdRepEcmPref();

    String fichaDescripcionPrefUDoc = serie.getIdFichaDescrPrefUdoc(nivelUnidadDocumental.getId());
    String idRepEcmPrefUDoc = serie.getIdRepEcmPrefUdoc(nivelUnidadDocumental.getId());

    // Si la serie tiene definidos listas de volúmenes y ficha preferente
    // para las u.docs., usar estas
    if (fichaDescripcionPrefUDoc != null) fichaDescripcionUdoc = fichaDescripcionPrefUDoc;

    if (idRepEcmPrefUDoc != null) idRepEcmUdoc = idRepEcmPrefUDoc;

    elementoCF.setIdFichaDescr(fichaDescripcionUdoc);
    elementoCF.setIdRepEcm(idRepEcmUdoc);
    elementoCF.setTienedescr(Constants.FALSE_STRING);
    elementoCF.setEditClfDocs(Constants.FALSE_STRING);

    // Si no está activada la distinción de mayúsculas/minúsculas, no hacer
    // el toUpper
    if (!ConfigConstants.getInstance().getDistinguirMayusculasMinusculas())
      elementoCF.setTitulo(elementoCF.getTitulo().toUpperCase());

    elementoCF.setSubtipo(nivelUnidadDocumental.getSubtipo());

    iniciarTransaccion();

    // Auditoria
    AuditFondos.addDataLogAlta(
        locale, logEvent, elementoCF, nivelUnidadDocumental.getNombre(), serie.getCodReferencia());
    elementoCF = _elementoCuadroClasificacionDBEntity.insertElementoCF(elementoCF);

    IUnidadDocumental unidadDocumental = new UnidadDocumental(elementoCF);
    unidadDocumental.setCodSistProductor(infoUnidadDocumental.getCodSistProductor());
    unidadDocumental.setNumExp(infoUnidadDocumental.getNumeroExpediente());
    unidadDocumental.setTipoDocumental(tipoDocumental);
    unidadDocumental.setMarcasBloqueo(infoUnidadDocumental.getMarcasBloqueo());
    unidadDocumental =
        (IUnidadDocumental) _unidadDocumentalDBEntity.insertUnidadDocumental(unidadDocumental);

    // Si es una unidad Electrónica

    if (isUnidadElectronica) {
      UnidadDocumentalElectronicaVO unidadDocumentalElectronica =
          new UnidadDocumentalElectronicaVO(elementoCF.getId());

      _unidadDocumentalElectroncaDBEntity.insertRow(unidadDocumentalElectronica);
    }

    commit();

    return unidadDocumental;
  }
예제 #2
0
  /**
   * Obtiene la información del usuario en la aplicación.
   *
   * @param userAuthId Identificador del usuario en el Sistema Gestor de Usuarios.
   * @param userAuthType Tipo de usuario.
   * @param userName Nombre del usuario
   * @param remoteIpAddress Dirección IP del usuario.
   * @return Información del usuario en la aplicación.
   * @throws AppUserException si ocurre algún error en la validación
   */
  public AppUser getAppUser(
      String userAuthId,
      String userAuthType,
      String userName,
      String remoteIpAddress,
      String entity,
      String sessionAdm)
      throws AppUserException, ArchivoModelException {
    if (logger.isDebugEnabled())
      logger.debug(
          "getAppUser: userAuthId=["
              + userAuthId
              + "], userAuthType=["
              + userAuthType
              + "], remoteIpAddress=["
              + remoteIpAddress
              + "]");

    // Obtener el engine de base de datos
    DbEngine engine = null;
    String dataSourceName =
        ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo()
            .getConfiguracionGeneral()
            .getDataSourceName();

    String dbFactoryClass =
        ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo()
            .getConfiguracionGeneral()
            .getDBFactoryClass();

    if (StringUtils.isNotEmpty(entity)) {
      dataSourceName = MultiEntityUtil.composeDsName(dataSourceName, entity);
    }

    try {
      if (ConfigConstants.getInstance().getEntidadRequerida()) {
        // Buscar el datasource en el contexto
        if (dataSourceName != null) {
          Context context = new InitialContext();
          if (context != null) {
            DataSource dataSource = (DataSource) context.lookup(dataSourceName);
            engine = new DbEngine(dataSource, dbFactoryClass);
          }
        }
      } else {
        engine = DataSourceEngine.getDbEngine(dataSourceName, dbFactoryClass);
      }

    } catch (NamingException e) {
      throw new ArchivoModelException(DbEngine.class, "createWithEntity", e.getMessage());
    } catch (ArchivoModelException e) {
      throw e;
    }

    // Usuario
    AppUser user = new AppUser();
    user.setExternalUserId(userAuthId);
    user.setUserType(userAuthType);
    user.setIp(remoteIpAddress);

    user.setEngine(engine);
    user.setEntity(entity);

    // Si es un administrador copiar el nombre del usuario
    if (StringUtils.isNotEmpty(sessionAdm)) {
      user.setName(userName);
    }

    // Comprobar la existencia del usuario en el Sistema de Archivo
    checkUser(user, sessionAdm);

    // Añadir los permisos del usuario
    addUserPermissions(user);

    // Añadir los grupos del usuario
    addUserGroups(user);

    // Establecer el nivel de auditoría
    setLogLevel(user);

    // Añadir la información de la organización
    setOrganizationInfo(user, entity);

    // Añadir las listas de control de acceso del usuario
    setAccessControlLists(user);

    return user;
  }