Skip to content

Commit

Permalink
#426 - API REST
Browse files Browse the repository at this point in the history
- Se crea un nuevo servicio para hechos vitales
- Se restructura la función de los EJB para facilitar la claridad del
codigo
- Se añaden las opciones por defecto al properties
  • Loading branch information
slromero-indra committed Apr 11, 2018
1 parent 7c79d23 commit 4030aba
Show file tree
Hide file tree
Showing 15 changed files with 594 additions and 108 deletions.
10 changes: 7 additions & 3 deletions jboss-service.xml
Expand Up @@ -42,7 +42,7 @@
es.caib.rolsac.api.v2.alternativesIdioma_fr=en,ca,es
es.caib.rolsac.api.v2.urlArxius=http://localhost:8080/sacws-api/arxiu/apiArxiuServlet?id=<!-- FIXME: cambiar por la url adecuada para produccion -->
es.caib.rolsac.api.v2.urlArxiusInterns=http://localhost:8080/sacws-api/arxiu/apiArxiuInternServlet?id=<!-- FIXME: cambiar por la url adecuada para produccion -->

<!-- valors sense confirmar -->
es.caib.rolsac.microsites=Y
es.caib.rolsac.oficina=N
Expand Down Expand Up @@ -102,8 +102,12 @@ es.caib.rolsac.subscripcions
es.caib.rolsac.fitxa.imatge.altura=300
es.caib.rolsac.fitxa.imatge.amplada=300

<!-- URLBASE api rest sin barra final [{protocolo}://{servidor}[:{puerto}]]-->
es.caib.rolsac.apirest.urlbase=https://localhost:48080
<!-- API REST -->
<!-- URLBASE api rest sin barra final [{protocolo}://{servidor}[:{puerto}]]
Si no existe, se usa es.caib.rolsac.portal.url-->
es.caib.rolsac.api.rest.urlbase=https://localhost:48080
es.caib.rolsac.api.rest.pageSize=30
es.caib.rolsac.api.rest.pageNumber=1

</attribute>

Expand Down
32 changes: 24 additions & 8 deletions moduls/apirest/src/es/caib/rolsac/apirest/v1/BootstrapV1.java
Expand Up @@ -7,23 +7,27 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import io.swagger.models.Scheme;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import es.caib.rolsac.apirest.v1.utiles.Constantes;
import io.swagger.jaxrs.config.SwaggerContextService;
import io.swagger.models.ExternalDocs;
import io.swagger.models.Info;
import io.swagger.models.Scheme;
import io.swagger.models.Swagger;
import io.swagger.models.Tag;

/**
* Expecifica propiedades del api para swagger.
* @author slromero
* @author Indra
*
*/
public class BootstrapV1 extends HttpServlet {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
private static Log log = LogFactory.getLog(BootstrapV1.class);

@Override
public void init(ServletConfig config) throws ServletException {
Expand All @@ -36,10 +40,16 @@ public void init(ServletConfig config) throws ServletException {
Swagger swagger = new Swagger().info(info);

try {
URI uri = new URI(Constantes.getUrlPropiedades());
swagger.addScheme(uri.getScheme().equals("https")?Scheme.HTTPS:Scheme.HTTP);
swagger.setHost(uri.getAuthority());
swagger.setBasePath(Constantes.URL_MODULO+Constantes.API_VERSION);
String url = Constantes.getUrlPropiedades();
if(!StringUtils.isEmpty(url)) {
URI uri = new URI(url);
swagger.addScheme(uri.getScheme().equals("https")?Scheme.HTTPS:Scheme.HTTP);
swagger.setHost(uri.getAuthority());

}else {
log.error("ERROR No seha podido cargar la URL del API_REST, verifique que se ha definido correctamente la propiedad de URL para el api rest");
}
swagger.setBasePath(Constantes.URL_MODULO+Constantes.API_VERSION);
} catch (Exception e) {
e.printStackTrace();
}
Expand All @@ -48,13 +58,19 @@ public void init(ServletConfig config) throws ServletException {
swagger.externalDocs(new ExternalDocs("Más info contacte con el responsable.", "http://www.caib.es"));

swagger.tag(new Tag()
.name("idiomes")
.name(Constantes.ENTIDAD_IDIOMA)
.description("Servicio para la obtención de información de los idiomas.")
);
swagger.tag(new Tag()
.name("unitats_administratives")
.name(Constantes.ENTIDAD_UA)
.description("Servicio para la obtención de información de las Unidades Administrativas.")
);

swagger.tag(new Tag()
.name(Constantes.ENTIDAD_ARUPACIO_FET_VITAL)
.description("Servicio para la obtención de información de las Agrupaciones de hechos vitales.")
);

new SwaggerContextService().withServletConfig(config).updateSwagger(swagger);
}
}
Expand Up @@ -73,25 +73,20 @@ public class AgrupacioFetVital extends EntidadBase {


public AgrupacioFetVital (org.ibit.rol.sac.model.AgrupacionHechoVital ahv, String urlBase,String idioma,boolean hateoasEnabled ) {
this.fill( ahv, urlBase, idioma, hateoasEnabled);
super( ahv, urlBase, idioma, hateoasEnabled);
}

public AgrupacioFetVital() {
super();
}


public void fill(org.ibit.rol.sac.model.AgrupacionHechoVital ahv, String urlBase,String idioma, boolean hateoasEnabled ) {
this.setHateoasEnabled(hateoasEnabled);
super.copiaPropiedadesDeEntity(ahv, idioma);
generaLinks(urlBase);
}

@Override
public void generaLinks(String urlBase) {
this.addLink(this.foto, Constantes.ENTIDAD_ARCHIVO, Constantes.URL_ARCHIVO, urlBase,"foto" );
this.addLink(this.icono, Constantes.ENTIDAD_ARCHIVO, Constantes.URL_ARCHIVO, urlBase,"icono" );
this.addLink(this.iconoGrande, Constantes.ENTIDAD_ARCHIVO, Constantes.URL_ARCHIVO, urlBase,"iconoGrande" );
this.addLink(this.publico, Constantes.ENTIDAD_PUBLICO, Constantes.URL_PUBLICO, urlBase,"publico" );

}

Expand Down Expand Up @@ -322,8 +317,7 @@ protected void addSetersInvalidos() {

@Override
public void setId(Long codigo) {
// TODO Auto-generated method stub

this.codigo = codigo;
}

}
@@ -0,0 +1,87 @@
package es.caib.rolsac.apirest.v1.model.filtros;

import java.io.IOException;

import javax.xml.bind.annotation.XmlRootElement;

import org.ibit.rol.sac.model.filtro.FiltroGenerico;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
* FiltroUA.
*
* @author indra
*
*/
@XmlRootElement
@ApiModel(value = "FiltroAgrupacioFetVital", description = "Filtro propio de la entidad AgrupacioFetVital")
public class FiltroAgrupacioFetVital {

public static final String SAMPLE = "{\"publico\":\"0\"}";


/** CodigoUAPadre. **/
@ApiModelProperty(value = "Código Publico Objetivo ", dataType = "java.lang.Integer", required = false)
private Integer publico;


public static FiltroAgrupacioFetVital valueOf(final String json) {
final ObjectMapper objectMapper = new ObjectMapper();
final TypeReference<FiltroAgrupacioFetVital> typeRef = new TypeReference<FiltroAgrupacioFetVital>() {
};
FiltroAgrupacioFetVital obj;
try {
obj = (FiltroAgrupacioFetVital) objectMapper.readValue(json, typeRef);
} catch (final IOException e) {
// TODO PENDIENTE
throw new RuntimeException(e);
}
return obj;
}


public FiltroGenerico toFiltroGenerico() {
FiltroGenerico fg = new FiltroGenerico();
if(this.publico!= null) {
fg.addFiltro(FiltroGenerico.FILTRO_AFV_PUBLICO, this.publico+"");
}

return fg;
}


public String toJson() {
try {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, false);
return objectMapper.writeValueAsString(this);
} catch (final JsonProcessingException e) {
// TODO PENDIENTE
throw new RuntimeException(e);
}
}


/**
* @return the publico
*/
public Integer getPublico() {
return publico;
}


/**
* @param publico the publico to set
*/
public void setPublico(Integer publico) {
this.publico = publico;
}

}
Expand Up @@ -23,7 +23,7 @@
@ApiModel(value = "FiltroPaginacion", description = "Filtro que permite paginar los resultados")
public class FiltroPaginacion {

public static final String SAMPLE = Constantes.SALTO_LINEA + "{\"page\":\"0\",\"size\":\"0\"}";
public static final String SAMPLE = Constantes.SALTO_LINEA + "{\"page\":\"1\",\"size\":\"30\"}";

/** Page. **/
@ApiModelProperty(value = "Page", dataType = "java.lang.Integer", required = false)
Expand Down
@@ -0,0 +1,38 @@
package es.caib.rolsac.apirest.v1.model.respuestas;

import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

import es.caib.rolsac.apirest.v1.model.AgrupacioFetVital;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
* Respuesta Idioma
*
* @author indra
*
*/

@XmlRootElement
@ApiModel(value = "Respuesta Agrupación hecho vital", description = "Respuesta Agrupación hecho vital")
public class RespuestaAgrupacioFetVital extends RespuestaBase{
/** Resultado. **/
@ApiModelProperty(value = "Listado con los objetos de resultado", required = false)
private List<AgrupacioFetVital> resultado;
public RespuestaAgrupacioFetVital(String status, String mensaje, Integer numeroElementos,
List<AgrupacioFetVital> resultado) {
super(status, mensaje, numeroElementos);
this.resultado=resultado;
};
public RespuestaAgrupacioFetVital() {
super();
}
public List<AgrupacioFetVital> getResultado() {
return resultado;
}
public void setResultado(List<AgrupacioFetVital> resultado) {
this.resultado = resultado;
}
}

0 comments on commit 4030aba

Please sign in to comment.