v0.3.0
This commit is contained in:
parent
3f5718522f
commit
aa8af0bfd4
@ -8,9 +8,12 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.Normalizer;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.manalejandro.arjion.model.Archivo;
|
||||
import com.manalejandro.arjion.model.Documento;
|
||||
import com.manalejandro.arjion.services.MainService;
|
||||
@ -113,16 +116,22 @@ public class MainController {
|
||||
// Identifica el idioma del archivo
|
||||
LanguageIdentifier identifier = new LanguageIdentifier(handler.toString());
|
||||
// Almacena en elasticsearch
|
||||
String[] names = metadata.names();
|
||||
Map<String, String> meta = new HashMap<String, String>();
|
||||
for (int j = 0; j < names.length; j++) {
|
||||
meta.put(names[j], metadata.get(names[j]));
|
||||
}
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
if (!mainService.save(new Documento(filename, Long.valueOf(archivos[i].getSize()).intValue(),
|
||||
metadata.toString(), handler.toString(), identifier.getLanguage()))) {
|
||||
mapper.valueToTree(meta), handler.toString(), identifier.getLanguage()))) {
|
||||
return "exists";
|
||||
} else {
|
||||
// Guarda el archivo en el directorio configurado en las properties
|
||||
Files.write(path, bytes);
|
||||
}
|
||||
// Añade los parámetros al VO para mostrar en la vista
|
||||
documentoVO.getArchivos().add(new Archivo(filename, String.valueOf(archivos[i].getSize()),
|
||||
metadata.toString(), handler.toString(), identifier.getLanguage()));
|
||||
documentoVO.getArchivos().add(new Archivo(filename, String.valueOf(archivos[i].getSize()), meta,
|
||||
handler.toString(), identifier.getLanguage()));
|
||||
}
|
||||
}
|
||||
model.addAttribute("documentoVO", documentoVO);
|
||||
@ -132,7 +141,10 @@ public class MainController {
|
||||
@GetMapping(path = "/detail")
|
||||
public String detail(final Model model, @RequestParam(value = "nombre", required = true) String nombre) {
|
||||
DetailVO detailVO = new DetailVO();
|
||||
detailVO.setDocumento(mainService.findOne(nombre));
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
Documento doc = mainService.findOne(nombre);
|
||||
detailVO.setArchivo(new Archivo(doc.getNombre(), doc.getTamano().toString(),
|
||||
mapper.convertValue(doc.getMetadata(), Map.class), doc.getContenido(), doc.getLenguaje()));
|
||||
model.addAttribute("detailVO", detailVO);
|
||||
return "detail";
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
package com.manalejandro.arjion.model;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class Archivo {
|
||||
|
||||
private String nombre;
|
||||
private String tamano;
|
||||
private String metadata;
|
||||
private Map metadata;
|
||||
private String contenido;
|
||||
private String lenguaje;
|
||||
|
||||
public Archivo(String nombre, String tamano, String metadata, String contenido, String lenguaje) {
|
||||
public Archivo(String nombre, String tamano, Map metadata, String contenido, String lenguaje) {
|
||||
this.nombre = nombre;
|
||||
this.tamano = tamano;
|
||||
this.metadata = metadata;
|
||||
@ -33,7 +35,7 @@ public class Archivo {
|
||||
/**
|
||||
* @return the metadata
|
||||
*/
|
||||
public String getMetadata() {
|
||||
public Map getMetadata() {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
@ -61,7 +63,7 @@ public class Archivo {
|
||||
/**
|
||||
* @param metadata the metadata to set
|
||||
*/
|
||||
public void setMetadata(String metadata) {
|
||||
public void setMetadata(Map metadata) {
|
||||
this.metadata = metadata;
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
package com.manalejandro.arjion.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.elasticsearch.annotations.Document;
|
||||
import org.springframework.data.elasticsearch.annotations.Mapping;
|
||||
import org.springframework.data.elasticsearch.annotations.Setting;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
@Document(indexName = "#{@indexName}", type = "#{@documentType}")
|
||||
@Setting(settingPath = "/elasticsearch/settings.json")
|
||||
@Mapping(mappingPath = "/elasticsearch/mapping.json")
|
||||
@ -15,15 +16,14 @@ public class Documento {
|
||||
@Id
|
||||
public String nombre;
|
||||
public Integer tamano;
|
||||
public String metadata;
|
||||
public JsonNode metadata;
|
||||
public String contenido;
|
||||
public String lenguaje;
|
||||
|
||||
@JsonCreator
|
||||
public Documento(@JsonProperty("nombre") String nombre, @JsonProperty("tamano") Integer tamano,
|
||||
@JsonProperty("metadata") String metadata, @JsonProperty("contenido") String contenido,
|
||||
@JsonProperty("metadata") JsonNode metadata, @JsonProperty("contenido") String contenido,
|
||||
@JsonProperty("lenguaje") String lenguaje) {
|
||||
super();
|
||||
this.nombre = nombre;
|
||||
this.tamano = tamano;
|
||||
this.metadata = metadata;
|
||||
@ -65,14 +65,14 @@ public class Documento {
|
||||
* @return the metadata
|
||||
*/
|
||||
@JsonProperty("metadata")
|
||||
public String getMetadata() {
|
||||
public JsonNode getMetadata() {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param metadata the metadata to set
|
||||
*/
|
||||
public void setMetadata(String metadata) {
|
||||
public void setMetadata(JsonNode metadata) {
|
||||
this.metadata = metadata;
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
package com.manalejandro.arjion.vo;
|
||||
|
||||
import com.manalejandro.arjion.model.Documento;
|
||||
import com.manalejandro.arjion.model.Archivo;
|
||||
|
||||
public class DetailVO {
|
||||
|
||||
private Documento documento;
|
||||
private Archivo archivo;
|
||||
|
||||
/**
|
||||
* @return the documento
|
||||
* @return the archivo
|
||||
*/
|
||||
public Documento getDocumento() {
|
||||
return documento;
|
||||
public Archivo getArchivo() {
|
||||
return archivo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param documento the documento to set
|
||||
* @param archivo the archivo to set
|
||||
*/
|
||||
public void setDocumento(Documento documento) {
|
||||
this.documento = documento;
|
||||
public void setArchivo(Archivo archivo) {
|
||||
this.archivo = archivo;
|
||||
}
|
||||
}
|
@ -1,5 +1,15 @@
|
||||
{
|
||||
"documento": {
|
||||
"dynamic_templates": [
|
||||
{
|
||||
"metadata_as_keywords": {
|
||||
"path_match": "metadata.*",
|
||||
"mapping": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"@timestamp": {
|
||||
"type": "date",
|
||||
@ -15,7 +25,7 @@
|
||||
"type": "long"
|
||||
},
|
||||
"metadata": {
|
||||
"type": "text"
|
||||
"type": "object"
|
||||
},
|
||||
"contenido": {
|
||||
"type": "text"
|
||||
|
@ -16,20 +16,20 @@
|
||||
<a th:href="@{/}">
|
||||
<h1 class="text-primary">Arjion</h1>
|
||||
</a>
|
||||
<h3 class="text-warning">[[${detailVO.documento.nombre}]]</h3>
|
||||
<h3 class="text-warning">[[${detailVO.archivo.nombre}]]</h3>
|
||||
</header>
|
||||
<section class="col-md-12">
|
||||
<hr>
|
||||
</section>
|
||||
<section>
|
||||
<span class="col-md-1 text-muted">Tamaño</span>
|
||||
<span class="col-md-11 text-muted">[[${detailVO.documento.tamano}]] bytes</span>
|
||||
<span class="col-md-11 text-muted">[[${detailVO.archivo.tamano}]] bytes</span>
|
||||
<span class="col-md-1 text-muted">Lenguaje</span>
|
||||
<span class="col-md-11 text-muted">[[${detailVO.documento.lenguaje}]]</span>
|
||||
<span class="col-md-11 text-muted">[[${detailVO.archivo.lenguaje}]]</span>
|
||||
<span class="col-md-1 text-success">Metadatos</span>
|
||||
<span class="col-md-11 text-success">[[${detailVO.documento.metadata}]]</span>
|
||||
<span class="col-md-11 text-success"><ul><li th:each="meta : ${detailVO.archivo.metadata}"><span th:text="${meta.key}"></span>: <span th:text="${meta.value}"></span></li></ul></span>
|
||||
<span class="col-md-1 text-warning">Contenido</span>
|
||||
<pre class="col-md-11 text-warning">[[${detailVO.documento.contenido}]]</pre>
|
||||
<pre class="col-md-11 text-warning">[[${detailVO.archivo.contenido}]]</pre>
|
||||
</div>
|
||||
</section>
|
||||
<section class="col-md-12">
|
||||
|
@ -49,7 +49,7 @@
|
||||
<span class="col-md-1 text-muted">Lenguaje</span>
|
||||
<span class="col-md-11 text-muted">[[${arc.lenguaje}]]</span>
|
||||
<span class="col-md-1 text-success">Metadatos</span>
|
||||
<span class="col-md-11 text-success">[[${arc.metadata}]]</span>
|
||||
<span class="col-md-11 text-success"><ul><li th:each="meta : ${arc.metadata}"><span th:text="${meta.key}"></span>: <span th:text="${meta.value}"></span></li></ul></span>
|
||||
<span class="col-md-1 text-warning">Contenido</span>
|
||||
<pre class="col-md-11 text-warning">[[${arc.contenido}]]</pre>
|
||||
<span class="col-md-12">
|
||||
|
Loading…
Reference in New Issue
Block a user