From 656b9f02ded02f44929242799c71851febccf584 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Mon, 14 Mar 2016 15:15:43 +0100 Subject: [PATCH] manage same titles for models and articles + reindent --- .../org/hbp/mip/controllers/ArticlesApi.java | 82 +++++++++++++++--- .../org/hbp/mip/controllers/DatasetsApi.java | 8 +- .../org/hbp/mip/controllers/GroupsApi.java | 7 +- .../org/hbp/mip/controllers/ModelsApi.java | 85 ++++++++++++++++--- .../org/hbp/mip/controllers/UsersApi.java | 7 +- .../org/hbp/mip/controllers/VariablesApi.java | 16 ++-- 6 files changed, 165 insertions(+), 40 deletions(-) diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index dc67e1c1e..f31008209 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -100,25 +100,55 @@ public class ArticlesApi { User user = mipApplication.getUser(); + String originalTitle = article.getTitle(); + article.setCreatedAt(new Date()); if (article.getStatus().equals("published")) { article.setPublishedAt(new Date()); } - - 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(); 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); + + count = (Long) session + .createQuery("select count(*) from Article where slug= :slug") + .setString("slug", slug) + .uniqueResult(); + if(count > 0) + { + String title = article.getTitle(); + if(i > 0) + { + 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); + } + session.save(article); session.getTransaction().commit(); } catch (Exception e) @@ -144,9 +174,10 @@ public class ArticlesApi { Article article = null; try{ session.beginTransaction(); - Query query = session.createQuery("FROM Article WHERE slug= :slug"); - query.setString("slug", slug); - article = (Article) query.uniqueResult(); + article = (Article) session + .createQuery("FROM Article WHERE slug= :slug") + .setString("slug", slug) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { @@ -171,6 +202,31 @@ public class ArticlesApi { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); try{ session.beginTransaction(); + + String oldTitle = (String) session + .createQuery("select title from Article where slug= :slug") + .setString("slug", slug) + .uniqueResult(); + + if(!oldTitle.equals(article.getTitle())) { + Long count; + int i = 0; + do { + String title = article.getTitle(); + count = (Long) session + .createQuery("select count(*) from Article where title= :title") + .setString("title", title) + .uniqueResult(); + if (count > 0 && !oldTitle.equals(title)) { + if (i > 0) { + title = title.substring(0, title.length() - 4); + } + i++; + article.setTitle(title + " (" + i + ")"); + } + } while (count > 0 && !oldTitle.equals(article.getTitle())); + } + session.update(article); session.getTransaction().commit(); } catch (Exception e) diff --git a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java index 35671ac13..c71623e7d 100644 --- a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java +++ b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java @@ -8,7 +8,6 @@ package org.hbp.mip.controllers; import io.swagger.annotations.*; import org.hbp.mip.model.Dataset; import org.hbp.mip.utils.HibernateUtil; -import org.hibernate.Query; import org.hibernate.Session; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -34,9 +33,10 @@ public class DatasetsApi { Dataset dataset = null; try{ session.beginTransaction(); - Query query = session.createQuery("from Dataset where code= :code"); - query.setString("code", code); - dataset = (Dataset) query.uniqueResult(); + dataset = (Dataset) session + .createQuery("from Dataset where code= :code") + .setString("code", code) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { diff --git a/src/main/java/org/hbp/mip/controllers/GroupsApi.java b/src/main/java/org/hbp/mip/controllers/GroupsApi.java index cbe99321b..49e6853bf 100644 --- a/src/main/java/org/hbp/mip/controllers/GroupsApi.java +++ b/src/main/java/org/hbp/mip/controllers/GroupsApi.java @@ -34,9 +34,10 @@ public class GroupsApi { Group group = null; try{ session.beginTransaction(); - org.hibernate.Query query = session.createQuery("FROM Group WHERE code= :code"); - query.setString("code", rootCode); - group = (Group) query.uniqueResult(); + group = (Group) session + .createQuery("FROM Group WHERE code= :code") + .setString("code", rootCode) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index ba4ae5e8f..c86d20d75 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -103,15 +103,8 @@ public class ModelsApi { User user = mipApplication.getUser(); - Slugify slg = null; - try { - slg = new Slugify(); - } catch (IOException e) { - e.printStackTrace(); - } - String slug = slg.slugify(model.getConfig().getTitle().get("text")); + String originalTitle = model.getTitle(); - model.setSlug(slug); model.setTitle(model.getConfig().getTitle().get("text")); model.setValid(true); model.setCreatedBy(user); @@ -121,6 +114,45 @@ public class ModelsApi { 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(model.getTitle()); + model.setSlug(slug); + + 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) + { + title = title.substring(0, title.length()-4); + } + i++; + model.setTitle(title + " (" + i + ")"); + } + + } while (count > 0); + + count = (Long) session + .createQuery("select count(*) from Article where title= :title") + .setString("title", originalTitle) + .uniqueResult(); + if(count < 1) + { + model.setTitle(originalTitle); + } + session.save(model); session.getTransaction().commit(); } catch (Exception e) @@ -148,8 +180,10 @@ public class ModelsApi { try { session.beginTransaction(); - query = session.createQuery("FROM Model WHERE slug= :slug").setString("slug", slug); - model = (Model) query.uniqueResult(); + model = (Model) session + .createQuery("FROM Model WHERE slug= :slug") + .setString("slug", slug) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) @@ -167,8 +201,10 @@ public class ModelsApi { try { session.beginTransaction(); - query = session.createQuery("FROM Query WHERE id= :id").setLong("id", model.getQuery().getId()); - q = (org.hbp.mip.model.Query) query.uniqueResult(); + q = (org.hbp.mip.model.Query) session + .createQuery("FROM Query WHERE id= :id") + .setLong("id", model.getQuery().getId()) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { @@ -240,6 +276,31 @@ public class ModelsApi { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); try{ session.beginTransaction(); + + String oldTitle = (String) session + .createQuery("select title from Article where slug= :slug") + .setString("slug", slug) + .uniqueResult(); + + if(!oldTitle.equals(model.getTitle())) { + Long count; + int i = 0; + do { + String title = model.getTitle(); + count = (Long) session + .createQuery("select count(*) from Article where title= :title") + .setString("title", title) + .uniqueResult(); + if (count > 0 && !oldTitle.equals(title)) { + if (i > 0) { + title = title.substring(0, title.length() - 4); + } + i++; + model.setTitle(title + " (" + i + ")"); + } + } while (count > 0 && !oldTitle.equals(model.getTitle())); + } + session.update(model); session.getTransaction().commit(); } catch (Exception e) diff --git a/src/main/java/org/hbp/mip/controllers/UsersApi.java b/src/main/java/org/hbp/mip/controllers/UsersApi.java index 465b833a0..4b3982f57 100644 --- a/src/main/java/org/hbp/mip/controllers/UsersApi.java +++ b/src/main/java/org/hbp/mip/controllers/UsersApi.java @@ -33,9 +33,10 @@ public class UsersApi { User user = null; try{ session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from User where username= :username"); - query.setString("username", username); - user = (User) query.uniqueResult(); + user = (User) session + .createQuery("from User where username= :username") + .setString("username", username) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { diff --git a/src/main/java/org/hbp/mip/controllers/VariablesApi.java b/src/main/java/org/hbp/mip/controllers/VariablesApi.java index a98bbc384..9c7e99dd8 100644 --- a/src/main/java/org/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/org/hbp/mip/controllers/VariablesApi.java @@ -39,7 +39,9 @@ public class VariablesApi { List variables = new LinkedList<>(); try{ session.beginTransaction(); - variables = session.createQuery("from Variable").list(); + variables = session + .createQuery("from Variable") + .list(); session.getTransaction().commit(); } catch (Exception e) { @@ -64,9 +66,10 @@ public class VariablesApi { Variable variable = null; try{ session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from Variable where code= :code"); - query.setString("code", code); - variable = (Variable) query.uniqueResult(); + variable = (Variable) session + .createQuery("from Variable where code= :code") + .setString("code", code) + .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { @@ -93,7 +96,10 @@ public class VariablesApi { List values = new LinkedList<>(); try{ session.beginTransaction(); - values = session.createQuery("select values from Variable where code= :code").setString("code", code).list(); + values = session + .createQuery("select values from Variable where code= :code") + .setString("code", code) + .list(); session.getTransaction().commit(); } catch (Exception e) { -- GitLab