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; }
/** * 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; }