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