diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index dc67e1c1e79d0e9daf619f54c26770b298f0cc05..f31008209ebfd8703dbf793f5fcecf3347b2c514 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 35671ac1330f3df1e3437a45fc031a4a0b1c5943..c71623e7da4111e1212691e8b12ef6631dfccba5 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 cbe99321bde4f6f13df99abadd099d77f17c9f4c..49e6853bf92d911e43a33066fceda1b8192ccac5 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 ba4ae5e8fa3fe75c59eaa9c86965571ded3a4666..c86d20d75972ba9d88ddf5aa3f10c5cb869179e0 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 465b833a02957780037a72797c4c8ed25259d64f..4b3982f578f2b4baab98ff8491ea532365641777 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 a98bbc38412d5785cfcaa900f2409b1423a6b2e2..9c7e99dd88586c714a90a5eccf0696bd10528cfd 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) {