v0.1.0
This commit is contained in:
parent
ce29f8beed
commit
895e890125
4
.gitignore
vendored
4
.gitignore
vendored
@ -22,4 +22,6 @@
|
|||||||
/nbbuild/
|
/nbbuild/
|
||||||
/dist/
|
/dist/
|
||||||
/nbdist/
|
/nbdist/
|
||||||
/.nb-gradle/
|
/.nb-gradle/
|
||||||
|
|
||||||
|
/.vscode/
|
15
pom.xml
15
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.manalejandro</groupId>
|
<groupId>com.manalejandro</groupId>
|
||||||
<artifactId>arjion</artifactId>
|
<artifactId>arjion</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
|
||||||
<name>arjion</name>
|
<name>arjion</name>
|
||||||
@ -45,13 +45,12 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika -->
|
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-app -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.tika</groupId>
|
<groupId>org.apache.tika</groupId>
|
||||||
<artifactId>tika</artifactId>
|
<artifactId>tika-app</artifactId>
|
||||||
<version>1.18</version>
|
<version>1.18</version>
|
||||||
<type>pom</type>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.webjars</groupId>
|
<groupId>org.webjars</groupId>
|
||||||
|
@ -9,8 +9,12 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||||||
@EnableWebMvc
|
@EnableWebMvc
|
||||||
public class WebConfig implements WebMvcConfigurer {
|
public class WebConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
@Override
|
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
|
||||||
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/");
|
|
||||||
}
|
@Override
|
||||||
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
|
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/");
|
||||||
|
registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,71 @@
|
|||||||
package com.manalejandro.arjion.controllers;
|
package com.manalejandro.arjion.controllers;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.manalejandro.arjion.model.Archivo;
|
||||||
|
import com.manalejandro.arjion.vo.DocumentoVO;
|
||||||
|
|
||||||
|
import org.apache.tika.config.TikaConfig;
|
||||||
|
import org.apache.tika.exception.TikaException;
|
||||||
|
import org.apache.tika.io.TikaInputStream;
|
||||||
|
import org.apache.tika.language.LanguageIdentifier;
|
||||||
|
import org.apache.tika.metadata.Metadata;
|
||||||
|
import org.apache.tika.parser.AutoDetectParser;
|
||||||
|
import org.apache.tika.parser.ParseContext;
|
||||||
|
import org.apache.tika.sax.BodyContentHandler;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.xml.sax.ContentHandler;
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class MainController {
|
public class MainController {
|
||||||
|
|
||||||
@RequestMapping(path = "/")
|
@Value("${arjion.uploadpath}")
|
||||||
public String indexPage(final Model model) {
|
private String uploadpath;
|
||||||
return "index";
|
|
||||||
}
|
@RequestMapping(path = "/")
|
||||||
|
public String indexPage(final Model model) {
|
||||||
|
DocumentoVO documentoVO = new DocumentoVO();
|
||||||
|
model.addAttribute("documentoVO", documentoVO);
|
||||||
|
return "index";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping(path = "/upload")
|
||||||
|
public String upload() {
|
||||||
|
return "redirect:/";
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(path = "/upload")
|
||||||
|
public String uploadPage(final Model model, @RequestParam("archivos") MultipartFile[] archivos)
|
||||||
|
throws IOException, TikaException, SAXException {
|
||||||
|
DocumentoVO documentoVO = new DocumentoVO();
|
||||||
|
documentoVO.setArchivos(new ArrayList<Archivo>());
|
||||||
|
TikaConfig tikaConfig = TikaConfig.getDefaultConfig();
|
||||||
|
for (int i = 0; i < archivos.length; i++) {
|
||||||
|
byte[] bytes = archivos[i].getBytes();
|
||||||
|
Path path = Paths.get(uploadpath + archivos[i].getOriginalFilename());
|
||||||
|
Files.write(path, bytes);
|
||||||
|
Metadata metadata = new Metadata();
|
||||||
|
AutoDetectParser parser = new AutoDetectParser(tikaConfig);
|
||||||
|
ContentHandler handler = new BodyContentHandler(-1);
|
||||||
|
TikaInputStream stream = TikaInputStream.get(bytes);
|
||||||
|
parser.parse(stream, handler, metadata, new ParseContext());
|
||||||
|
LanguageIdentifier identifier = new LanguageIdentifier(handler.toString());
|
||||||
|
documentoVO.getArchivos().add(new Archivo(archivos[i].getOriginalFilename(), String.valueOf(archivos[i].getSize()),
|
||||||
|
metadata.toString(), handler.toString(), identifier.getLanguage()));
|
||||||
|
}
|
||||||
|
model.addAttribute("documentoVO", documentoVO);
|
||||||
|
return "index";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
88
src/main/java/com/manalejandro/arjion/model/Archivo.java
Normal file
88
src/main/java/com/manalejandro/arjion/model/Archivo.java
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package com.manalejandro.arjion.model;
|
||||||
|
|
||||||
|
public class Archivo {
|
||||||
|
|
||||||
|
private String nombre;
|
||||||
|
private String tamano;
|
||||||
|
private String metadata;
|
||||||
|
private String contenido;
|
||||||
|
private String lenguaje;
|
||||||
|
|
||||||
|
public Archivo(String nombre, String tamano, String metadata, String contenido, String lenguaje) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
this.tamano = tamano;
|
||||||
|
this.metadata = metadata;
|
||||||
|
this.contenido = contenido;
|
||||||
|
this.lenguaje = lenguaje;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the nombre
|
||||||
|
*/
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the tamano
|
||||||
|
*/
|
||||||
|
public String getTamano() {
|
||||||
|
return tamano;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the metadata
|
||||||
|
*/
|
||||||
|
public String getMetadata() {
|
||||||
|
return metadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the contenido
|
||||||
|
*/
|
||||||
|
public String getContenido() {
|
||||||
|
return contenido;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param nombre the nombre to set
|
||||||
|
*/
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tamano the tamano to set
|
||||||
|
*/
|
||||||
|
public void setTamano(String tamano) {
|
||||||
|
this.tamano = tamano;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param metadata the metadata to set
|
||||||
|
*/
|
||||||
|
public void setMetadata(String metadata) {
|
||||||
|
this.metadata = metadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param contenido the contenido to set
|
||||||
|
*/
|
||||||
|
public void setContenido(String contenido) {
|
||||||
|
this.contenido = contenido;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the lenguaje
|
||||||
|
*/
|
||||||
|
public String getLenguaje() {
|
||||||
|
return lenguaje;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param lenguaje the lenguaje to set
|
||||||
|
*/
|
||||||
|
public void setLenguaje(String lenguaje) {
|
||||||
|
this.lenguaje = lenguaje;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,23 @@
|
|||||||
package com.manalejandro.arjion.vo;
|
package com.manalejandro.arjion.vo;
|
||||||
|
|
||||||
public class DocumentoVO {
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.manalejandro.arjion.model.Archivo;
|
||||||
|
|
||||||
|
public class DocumentoVO {
|
||||||
|
private List<Archivo> archivos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the archivos
|
||||||
|
*/
|
||||||
|
public List<Archivo> getArchivos() {
|
||||||
|
return archivos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param archivos the archivos to set
|
||||||
|
*/
|
||||||
|
public void setArchivos(List<Archivo> archivos) {
|
||||||
|
this.archivos = archivos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,11 @@ elasticsearch.port=9300
|
|||||||
elasticsearch.nodename=arjion
|
elasticsearch.nodename=arjion
|
||||||
arjion.indexName=documentos
|
arjion.indexName=documentos
|
||||||
arjion.documentType=documento
|
arjion.documentType=documento
|
||||||
|
arjion.uploadpath=/upload/
|
||||||
spring.main.allow-bean-definition-overriding=true
|
spring.main.allow-bean-definition-overriding=true
|
||||||
spring.thymeleaf.enabled=true
|
spring.thymeleaf.enabled=true
|
||||||
spring.thymeleaf.prefix=classpath:/templates/
|
spring.thymeleaf.prefix=classpath:/templates/
|
||||||
spring.thymeleaf.suffix=.html
|
spring.thymeleaf.suffix=.html
|
||||||
spring.thymeleaf.cache=false
|
spring.thymeleaf.cache=false
|
||||||
|
spring.servlet.multipart.max-file-size=10MB
|
||||||
|
spring.servlet.multipart.max-request-size=20MB
|
0
src/main/resources/static/css/main.css
Normal file
0
src/main/resources/static/css/main.css
Normal file
0
src/main/resources/static/js/main.js
Normal file
0
src/main/resources/static/js/main.js
Normal file
@ -1,10 +1,17 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Error</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Error</title>
|
||||||
|
<link rel="stylesheet" th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}">
|
||||||
|
<script th:src="@{/webjars/jquery/3.1.1-1/jquery.min.js}"></script>
|
||||||
|
<script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="text-center text-danger">
|
||||||
|
<h2>Error</h2>
|
||||||
|
<button class="btn btn-primary" th:onclick="'window.location.pathname=\'' + @{/} + '\''">Volver</button>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -1,13 +1,58 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Arjion</title>
|
|
||||||
<link rel="stylesheet" href="webjars/bootstrap/3.3.7-1/css/bootstrap.min.css">
|
|
||||||
<script src="webjars/jquery/3.1.1-1/jquery.min.js"></script>
|
|
||||||
<script src="webjars/bootstrap/3.3.7-1/js/bootstrap.min.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Arjion</title>
|
||||||
|
<link rel="stylesheet" th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}">
|
||||||
|
<link rel="stylesheet" th:href="@{/css/main.css}">
|
||||||
|
<script th:src="@{/webjars/jquery/3.1.1-1/jquery.min.js}"></script>
|
||||||
|
<script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script>
|
||||||
|
<script th:src="@{/js/main.js}"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header class="text-center">
|
||||||
|
<a th:href="@{/}"><h1 class="text-primary">Arjion</h1></a>
|
||||||
|
</header>
|
||||||
|
<section class="text-center col-md-4 col-md-offset-4">
|
||||||
|
<form class="form-horizontal form-label-left" method="post" enctype="multipart/form-data" novalidate="novalidate" th:action="@{/upload}"
|
||||||
|
th:object="${documentForm}">
|
||||||
|
<div class="input-group">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<span class="glyphicon glyphicon-file"></span>
|
||||||
|
</span>
|
||||||
|
<label class="input-group-addon custom-file">
|
||||||
|
<input type="file" name="archivos" class="custom-file-input" multiple="multiple" />
|
||||||
|
<span class="custom-file-control"></span>
|
||||||
|
</label>
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<button class="btn btn-primary" type="submit">
|
||||||
|
<span class="glyphicon glyphicon-level-up"></span>
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<hr class="col-md-12">
|
||||||
|
<section>
|
||||||
|
<div th:each="doc : ${documentoVO.archivos}" class="col-md-12">
|
||||||
|
<span class="col-md-1 text-primary lead">Nombre</span>
|
||||||
|
<span class="col-md-11 text-primary lead">[[${doc.nombre}]]</span>
|
||||||
|
<span class="col-md-1 text-muted">Tamaño</span>
|
||||||
|
<span class="col-md-11 text-muted">[[${doc.tamano}]] bytes</span>
|
||||||
|
<span class="col-md-1 text-muted">Lenguaje</span>
|
||||||
|
<span class="col-md-11 text-muted">[[${doc.lenguaje}]]</span>
|
||||||
|
<span class="col-md-1 text-success">Metadatos</span>
|
||||||
|
<span class="col-md-11 text-success">[[${doc.metadata}]]</span>
|
||||||
|
<span class="col-md-1 text-warning">Contenido</span>
|
||||||
|
<pre class="col-md-11 text-warning">[[${doc.contenido}]]</pre>
|
||||||
|
<hr class="col-md-12">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<footer class="col-md-12 text-center">
|
||||||
|
<span>2018</span>
|
||||||
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue
Block a user