diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index bbbad3dfd3f9e9e192f69d05638014e3d69d3f14..bfa076087eee1811e6f22023222af7ead92b8948 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -102,54 +102,61 @@ public class ArticlesApi { User user = mipApplication.getUser(); - String originalTitle = article.getTitle(); - article.setCreatedAt(new Date()); if (article.getStatus().equals("published")) { article.setPublishedAt(new Date()); } article.setCreatedBy(user); + Long count; Session session = HibernateUtil.getSessionFactory().getCurrentSession(); try{ session.beginTransaction(); - Long count; int i = 0; - do { - Slugify slg = null; - try { - slg = new Slugify(); - } catch (IOException e) { - e.printStackTrace(); - } - String slug = slg.slugify(article.getTitle()); - article.setSlug(slug); - + do{ + i++; count = (Long) session - .createQuery("select count(*) from Article where slug= :slug") - .setString("slug", slug) + .createQuery("select count(*) from Article where title= :title") + .setString("title", article.getTitle()) .uniqueResult(); + if(count > 0) { String title = article.getTitle(); - if(i > 0) + if(i > 1) { title = title.substring(0, title.length()-4); } - i++; article.setTitle(title + " (" + i + ")"); } } while(count > 0); - count = (Long) session - .createQuery("select count(*) from Article where title= :title") - .setString("title", originalTitle) - .uniqueResult(); - if(count < 1) - { - article.setTitle(originalTitle); + Slugify slg = null; + try { + slg = new Slugify(); + } catch (IOException e) { + e.printStackTrace(); } + String slug = slg.slugify(article.getTitle()); + + i = 0; + do { + i++; + count = (Long) session + .createQuery("select count(*) from Article where slug= :slug") + .setString("slug", slug) + .uniqueResult(); + if(count > 0) + { + if(i > 1) + { + slug = slug.substring(0, slug.length()-2); + } + slug += "-"+i; + } + article.setSlug(slug); + } while(count > 0); session.save(article); session.getTransaction().commit(); @@ -212,23 +219,25 @@ public class ArticlesApi { .setString("slug", slug) .uniqueResult(); - if(!oldTitle.equals(article.getTitle())) { + String newTitle = article.getTitle(); + + if(!newTitle.equals(oldTitle)) { Long count; int i = 0; do { - String title = article.getTitle(); + i++; + newTitle = article.getTitle(); count = (Long) session .createQuery("select count(*) from Article where title= :title") - .setString("title", title) + .setString("title", newTitle) .uniqueResult(); - if (count > 0 && !oldTitle.equals(title)) { - if (i > 0) { - title = title.substring(0, title.length() - 4); + if (count > 0 && !newTitle.equals(oldTitle)) { + if (i > 1) { + newTitle = newTitle.substring(0, newTitle.length() - 4); } - i++; - article.setTitle(title + " (" + i + ")"); + article.setTitle(newTitle + " (" + i + ")"); } - } while (count > 0 && !oldTitle.equals(article.getTitle())); + } while (count > 0 && !newTitle.equals(oldTitle)); } session.update(article); diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index 18247c3cb875e84355b56b812aff48217e1d2b5c..5194e2787b106eed8af5486daeed9496e4606fae 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -18,10 +18,7 @@ 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; -import java.util.Random; +import java.util.*; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -104,55 +101,64 @@ public class ModelsApi { User user = mipApplication.getUser(); - String originalTitle = model.getConfig().getTitle().get("text"); - - model.setTitle(originalTitle); + model.setTitle(model.getConfig().getTitle().get("text")); model.setValid(true); model.setCreatedBy(user); model.setCreatedAt(new Date()); + Long count; Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - - try { + try{ session.beginTransaction(); - Long count; + int i = 0; + do{ + i++; + count = (Long) session + .createQuery("select count(*) from Model where title= :title") + .setString("title", model.getTitle()) + .uniqueResult(); - do { - Slugify slg = null; - try { - slg = new Slugify(); - } catch (IOException e) { - e.printStackTrace(); + if(count > 0) + { + String title = model.getTitle(); + if(i > 1) + { + title = title.substring(0, title.length()-4); + } + model.setTitle(title + " (" + i + ")"); } - String slug = slg.slugify(model.getTitle()); - model.setSlug(slug); + } while(count > 0); + Slugify slg = null; + try { + slg = new Slugify(); + } catch (IOException e) { + e.printStackTrace(); + } + String slug = slg.slugify(model.getTitle()); + + i = 0; + do { + i++; count = (Long) session .createQuery("select count(*) from Model where slug= :slug") .setString("slug", slug) .uniqueResult(); if(count > 0) { - String title = model.getTitle(); - if(i > 0) + if(i > 1) { - title = title.substring(0, title.length()-4); + slug = slug.substring(0, slug.length()-2); } - i++; - model.setTitle(title + " (" + i + ")"); + slug += "-"+i; } + model.setSlug(slug); + } while(count > 0); - } while (count > 0); - - count = (Long) session - .createQuery("select count(*) from Model where title= :title") - .setString("title", originalTitle) - .uniqueResult(); - if(count < 1) - { - model.setTitle(originalTitle); - } + Map<String, String> map = new HashMap<>(model.getConfig().getTitle()); + map.put("text", model.getTitle()); + model.getConfig().setTitle(map); session.save(model); session.getTransaction().commit(); @@ -165,7 +171,6 @@ public class ModelsApi { } } - return new ResponseEntity<Model>(HttpStatus.CREATED).ok(model); } @@ -284,29 +289,35 @@ public class ModelsApi { session.beginTransaction(); String oldTitle = (String) session - .createQuery("SELECT title FROM Model WHERE slug= :slug") + .createQuery("select title from Model where slug= :slug") .setString("slug", slug) .uniqueResult(); - if(!oldTitle.equals(model.getTitle())) { + String newTitle = model.getTitle(); + + if(!newTitle.equals(oldTitle)) { Long count; int i = 0; do { - String title = model.getTitle(); + i++; + newTitle = model.getTitle(); count = (Long) session .createQuery("select count(*) from Model where title= :title") - .setString("title", title) + .setString("title", newTitle) .uniqueResult(); - if (count > 0 && !oldTitle.equals(title)) { - if (i > 0) { - title = title.substring(0, title.length() - 4); + if (count > 0 && !newTitle.equals(oldTitle)) { + if (i > 1) { + newTitle = newTitle.substring(0, newTitle.length() - 4); } - i++; - model.setTitle(title + " (" + i + ")"); + model.setTitle(newTitle + " (" + i + ")"); } - } while (count > 0 && !oldTitle.equals(model.getTitle())); + } while (count > 0 && !newTitle.equals(oldTitle)); } + Map<String, String> map = new HashMap<>(model.getConfig().getTitle()); + map.put("text", model.getTitle()); + model.getConfig().setTitle(map); + session.update(model); session.getTransaction().commit(); } catch (Exception e)