From d458f3b9017b568124974f560cb030d7822212bb Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Mon, 14 Mar 2016 10:29:08 +0100
Subject: [PATCH] Slugify in a clean way

---
 pom.xml                                             |  5 +++++
 .../java/org/hbp/mip/controllers/ArticlesApi.java   | 13 ++++++++++++-
 .../java/org/hbp/mip/controllers/ModelsApi.java     | 12 +++++++++++-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9217a4642..d6f9ca36e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,6 +142,11 @@
             <artifactId>gson</artifactId>
             <version>2.5</version>
         </dependency>
+        <dependency>
+            <groupId>com.github.slugify</groupId>
+            <artifactId>slugify</artifactId>
+            <version>2.1.4</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
index fa754bf08..dc67e1c1e 100644
--- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java
@@ -5,6 +5,7 @@
 package org.hbp.mip.controllers;
 
 
+import com.github.slugify.Slugify;
 import io.swagger.annotations.*;
 import org.hbp.mip.MIPApplication;
 import org.hbp.mip.model.Article;
@@ -17,6 +18,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -102,7 +104,16 @@ public class ArticlesApi {
         if (article.getStatus().equals("published")) {
             article.setPublishedAt(new Date());
         }
-        article.setSlug(article.getTitle().toLowerCase().replaceAll(" ","_"));
+
+        Slugify slg = null;
+        try {
+            slg = new Slugify();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String slug = slg.slugify(article.getTitle());
+
+        article.setSlug(slug);
         article.setCreatedBy(user);
 
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index f930e7a55..ba4ae5e8f 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -4,6 +4,7 @@
 
 package org.hbp.mip.controllers;
 
+import com.github.slugify.Slugify;
 import io.swagger.annotations.*;
 import org.hbp.mip.MIPApplication;
 import org.hbp.mip.model.*;
@@ -16,6 +17,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -101,7 +103,15 @@ public class ModelsApi {
 
         User user = mipApplication.getUser();
 
-        model.setSlug(model.getConfig().getTitle().get("text").toLowerCase());
+        Slugify slg = null;
+        try {
+            slg = new Slugify();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String slug = slg.slugify(model.getConfig().getTitle().get("text"));
+
+        model.setSlug(slug);
         model.setTitle(model.getConfig().getTitle().get("text"));
         model.setValid(true);
         model.setCreatedBy(user);
-- 
GitLab