All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ec.gob.senescyt.sniese.commons.bundles.audit.ModeloAuditable Maven / Gradle / Ivy

There is a newer version: 2.0.5
Show newest version
package ec.gob.senescyt.sniese.commons.bundles.audit;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.jersey.api.core.HttpContext;
import ec.gob.senescyt.sniese.commons.security.Usuario;
import io.dropwizard.jackson.Jackson;
import org.joda.time.DateTime;

public class ModeloAuditable {
    private final HttpContext context;
    private final Usuario usuarioAutenticado;
    private static final ObjectMapper MAPPER = Jackson.newObjectMapper();

    public ModeloAuditable(HttpContext context, Usuario usuarioAutenticado) {
        this.context = context;
        this.usuarioAutenticado = usuarioAutenticado;
    }

    public String getNombreUsuario() {
        if (usuarioAutenticado == null){
            return "USUARIO_ANONIMO";
        }
        return usuarioAutenticado.getNombreUsuario();
    }

    public String getDireccionRemota() {
        return context.getRequest().getRequestHeaders().getFirst("X-Remote-Addr");
    }

    public String getEntidad() {
        String entidad;
        try{
            entidad = MAPPER.writeValueAsString(context.getResponse().getEntity());
        }catch (JsonProcessingException e){
            entidad = context.getRequest().getEntity(String.class);
        }
        return entidad;
    }

    public DateTime getFecha() {
        return DateTime.now();
    }

    public String getRuta() {
        return context.getRequest().getPath();
    }

    public int getCodigoRespuesta() {
        return context.getResponse().getStatus();
    }

    public String getVerboMetodo() {
        return context.getRequest().getMethod();
    }

    public boolean esAuditable() {
        int estado = getCodigoRespuesta();
        return 199 < estado && estado < 300;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy