diff --git a/Dockerfile b/Dockerfile index f7927e2fff38f5af18dfb8145f2f7bd4017ecc85..1d24297ed36ea5281519e7b6e6a33b628c37d4df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,10 @@ FROM maven:3-jdk-8 COPY ./src/docker/init/build-in-docker.sh /build-in-docker.sh -VOLUME /portal/ +CMD mkdir /opt/portal/ + +VOLUME /opt/portal/ + +WORKDIR /opt/portal/ CMD ["/build-in-docker.sh"] diff --git a/src/test/docker/application.yml b/config/application.yml similarity index 96% rename from src/test/docker/application.yml rename to config/application.yml index 0e58f67673ccd6af7cd396083a7e64ce4d29ea77..1108bc61f157515755bbb6fc1b18f38056a63afa 100644 --- a/src/test/docker/application.yml +++ b/config/application.yml @@ -33,4 +33,6 @@ server: contextPath: /services port: 8080 use-forward-headers: true + session: + timeout: 2592000 diff --git a/src/docker/build/mip.sh b/src/docker/build/mip.sh deleted file mode 100644 index cfae68474c42a1e66b80edb0ea849911ddd8eef4..0000000000000000000000000000000000000000 --- a/src/docker/build/mip.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -/usr/bin/java -DconfigFile=/opt/portal/config/application.yml -jar /opt/portal/lib/mip.jar diff --git a/src/docker/init/build-in-docker.sh b/src/docker/init/build-in-docker.sh old mode 100755 new mode 100644 diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java index c2d8558ef04f42a569bb4f90b3cd96164dd47642..8d05e4ceec255e45ed776cbf3d8cd26cc78de319 100644 --- a/src/main/java/org/hbp/mip/MIPApplication.java +++ b/src/main/java/org/hbp/mip/MIPApplication.java @@ -39,6 +39,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.client.OAuth2ClientContext; import org.springframework.security.oauth2.client.OAuth2RestTemplate; @@ -149,7 +150,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { String userJSON = mapper.writeValueAsString(getUser(principal)); Cookie cookie = new Cookie("user", URLEncoder.encode(userJSON, "UTF-8")); cookie.setPath("/"); - cookie.setMaxAge(3600); + cookie.setMaxAge(2592000); response.addCookie(cookie); } catch (JsonProcessingException e) { e.printStackTrace(); @@ -167,7 +168,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { .authorizeRequests() .antMatchers("/", "/frontend/**", "/webjars/**").permitAll() .anyRequest().authenticated() - .and().exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login/hbp")) + .and().exceptionHandling().authenticationEntryPoint(new CustomLoginUrlAuthenticationEntryPoint("/login/hbp")) .and().logout().logoutSuccessUrl("/login/hbp").permitAll() .and().csrf().csrfTokenRepository(csrfTokenRepository()) .and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class) @@ -186,7 +187,7 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { private Filter ssoFilter() { OAuth2ClientAuthenticationProcessingFilter hbpFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/hbp"); OAuth2RestTemplate hbpTemplate = new OAuth2RestTemplate(hbp(), oauth2ClientContext); - hbpFilter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("http://localhost:7800/#/home")); + hbpFilter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("http://frontend/#/home")); hbpFilter.setRestTemplate(hbpTemplate); hbpFilter.setTokenServices(new UserInfoTokenServices(hbpResource().getUserInfoUri(), hbp().getClientId())); return hbpFilter; @@ -231,3 +232,15 @@ public class MIPApplication extends WebSecurityConfigurerAdapter { } } + +class CustomLoginUrlAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint { + + public CustomLoginUrlAuthenticationEntryPoint(String url) { + super(url); + } + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { + response.sendError(HttpServletResponse.SC_UNAUTHORIZED); + } +} diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index 291b5272eeecf58b9b8213c89b8db207a5d126ba..4bee0ec61f144e9af569b2ae83baa4943cac9142 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.Date; +import java.util.LinkedList; import java.util.List; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -60,27 +61,36 @@ public class ArticlesApi { } } - // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - Query query = session.createQuery(queryString); - if(status != null) - { - query.setString("status", status); - } - if(own != null && own) - { - query.setString("username", user.getUsername()); - } - else - { - if(team != null && team) + List<Article> articles = new LinkedList<>(); + // Query DB + try{ + session.beginTransaction(); + Query query = session.createQuery(queryString); + if(status != null) { - query.setString("team", user.getTeam()); + query.setString("status", status); } - } - List<Article> articles = query.list(); - session.getTransaction().commit(); + if(own != null && own) + { + query.setString("username", user.getUsername()); + } + else + { + if(team != null && team) + { + query.setString("team", user.getTeam()); + } + } + articles = query.list(); + session.getTransaction().commit(); + + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<List<Article>>(HttpStatus.OK).ok(articles); } @@ -107,9 +117,16 @@ public class ArticlesApi { // Save article into DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - session.save(article); - session.getTransaction().commit(); + try{ + session.beginTransaction(); + session.save(article); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Void>(HttpStatus.OK); } @@ -124,11 +141,19 @@ public class ArticlesApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - Query query = session.createQuery("from Article where slug= :slug"); - query.setString("slug", slug); - Article article = (Article) query.uniqueResult(); - session.getTransaction().commit(); + Article article = null; + try{ + session.beginTransaction(); + Query query = session.createQuery("from Article where slug= :slug"); + query.setString("slug", slug); + article = (Article) query.uniqueResult(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Article>(HttpStatus.OK).ok(article); } @@ -148,9 +173,16 @@ public class ArticlesApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - session.update(article); - session.getTransaction().commit(); + try{ + session.beginTransaction(); + session.update(article); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Void>(HttpStatus.OK); } diff --git a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java index 6050b1b4e360babe9c3e9949e5bfe4173530df65..7f6b3ceda7e85a3c40a5e8f7dec94487c121c808 100644 --- a/src/main/java/org/hbp/mip/controllers/DatasetsApi.java +++ b/src/main/java/org/hbp/mip/controllers/DatasetsApi.java @@ -34,11 +34,19 @@ public class DatasetsApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - Query query = session.createQuery("from Dataset where code= :code"); - query.setString("code", code); - Dataset dataset = (Dataset) query.uniqueResult(); - session.getTransaction().commit(); + Dataset dataset = null; + try{ + session.beginTransaction(); + Query query = session.createQuery("from Dataset where code= :code"); + query.setString("code", code); + dataset = (Dataset) query.uniqueResult(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Dataset>(HttpStatus.OK).ok(dataset); } diff --git a/src/main/java/org/hbp/mip/controllers/GroupsApi.java b/src/main/java/org/hbp/mip/controllers/GroupsApi.java index db971ebc1ca3414b82f51dac7919c85d3f5918ac..0ba437d444019a1de02252d414378b5ad8f8c8bb 100644 --- a/src/main/java/org/hbp/mip/controllers/GroupsApi.java +++ b/src/main/java/org/hbp/mip/controllers/GroupsApi.java @@ -32,11 +32,19 @@ public class GroupsApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from Group where code= :code"); - query.setString("code", rootCode); - Group group = (Group) query.uniqueResult(); - session.getTransaction().commit(); + 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(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Group>(HttpStatus.OK).ok(group); } diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index 0c7b8e975a580b921b955890c40d9caf5b0b0ef0..102661c22db18b6fbb0ea7a51b78d1da7faac02a 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -61,25 +61,33 @@ public class ModelsApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - Query query = session.createQuery(queryString); - if(own != null && own) - { - query.setString("username", user.getUsername()); - } - else - { - if(team != null && team) + List<Model> models = new LinkedList<>(); + try{ + session.beginTransaction(); + Query query = session.createQuery(queryString); + if(own != null && own) { - query.setString("team", user.getTeam()); + query.setString("username", user.getUsername()); } - } - if(limit != null) + else + { + if(team != null && team) + { + query.setString("team", user.getTeam()); + } + } + if(limit != null) + { + query.setMaxResults(limit); // Pagination : Use query.setFirstResult(...) to set begining index + } + models = query.list(); + session.getTransaction().commit(); + } catch (Exception e) { - query.setMaxResults(limit); // Pagination : Use query.setFirstResult(...) to set begining index - } - List<Model> models = query.list(); - session.getTransaction().commit(); + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models); } @@ -104,9 +112,16 @@ public class ModelsApi { // Save model into DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - session.save(model); - session.getTransaction().commit(); + try{ + session.beginTransaction(); + session.save(model); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Void>(HttpStatus.OK); } @@ -120,11 +135,19 @@ public class ModelsApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from Model where slug= :slug"); - query.setString("slug", slug); - Model model = (Model) query.uniqueResult(); - session.getTransaction().commit(); + Model model = null; + try{ + session.beginTransaction(); + org.hibernate.Query query = session.createQuery("from Model where slug= :slug"); + query.setString("slug", slug); + model = (Model) query.uniqueResult(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<String>(HttpStatus.OK).ok(model.getChart().getSvg()); } @@ -146,54 +169,61 @@ public class ModelsApi { if(model != null) { session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - query = session.createQuery("from Query where id= :id"); - query.setLong("id", model.getQuery().getId()); - org.hbp.mip.model.Query q = (org.hbp.mip.model.Query) query.uniqueResult(); - session.getTransaction().commit(); - - List<Variable> vars = new LinkedList<>(); - for (Variable var : q.getVariables()) { - Variable v = new Variable(); - v.setCode(var.getCode()); - vars.add(v); - } - - List<Variable> covs = new LinkedList<>(); - for (Variable cov : q.getCovariables()) { - Variable v = new Variable(); - v.setCode(cov.getCode()); - covs.add(v); - } - - List<Variable> grps = new LinkedList<>(); - for (Variable grp : q.getGrouping()) { - Variable v = new Variable(); - v.setCode(grp.getCode()); - grps.add(v); - } - - List<Filter> fltrs = new LinkedList<>(); - for (Filter fltr : q.getFilters()) { - Filter f = new Filter(); - f.setId(fltr.getId()); - f.setOperator(fltr.getOperator()); - f.setValues(fltr.getValues()); - f.setVariable(fltr.getVariable()); - fltrs.add(f); - } - - org.hbp.mip.model.Query myQuery = new org.hbp.mip.model.Query(); - myQuery.setId(q.getId()); - myQuery.setVariables(vars); - myQuery.setCovariables(covs); - myQuery.setGrouping(grps); - myQuery.setFilters(fltrs); - - model.setQuery(myQuery); - - Dataset ds = CSVUtil.parseValues(DATA_FILE, model.getQuery()); - model.setDataset(ds); + try{ + session.beginTransaction(); + query = session.createQuery("from Query where id= :id"); + query.setLong("id", model.getQuery().getId()); + org.hbp.mip.model.Query q = (org.hbp.mip.model.Query) query.uniqueResult(); + session.getTransaction().commit(); + + List<Variable> vars = new LinkedList<>(); + for (Variable var : q.getVariables()) { + Variable v = new Variable(); + v.setCode(var.getCode()); + vars.add(v); + } + + List<Variable> covs = new LinkedList<>(); + for (Variable cov : q.getCovariables()) { + Variable v = new Variable(); + v.setCode(cov.getCode()); + covs.add(v); + } + + List<Variable> grps = new LinkedList<>(); + for (Variable grp : q.getGrouping()) { + Variable v = new Variable(); + v.setCode(grp.getCode()); + grps.add(v); + } + + List<Filter> fltrs = new LinkedList<>(); + for (Filter fltr : q.getFilters()) { + Filter f = new Filter(); + f.setId(fltr.getId()); + f.setOperator(fltr.getOperator()); + f.setValues(fltr.getValues()); + f.setVariable(fltr.getVariable()); + fltrs.add(f); + } + + org.hbp.mip.model.Query myQuery = new org.hbp.mip.model.Query(); + myQuery.setId(q.getId()); + myQuery.setVariables(vars); + myQuery.setCovariables(covs); + myQuery.setGrouping(grps); + myQuery.setFilters(fltrs); + + model.setQuery(myQuery); + + Dataset ds = CSVUtil.parseValues(DATA_FILE, model.getQuery()); + model.setDataset(ds); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } } return new ResponseEntity<Model>(HttpStatus.OK).ok(model); @@ -214,9 +244,16 @@ public class ModelsApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - session.update(model); - session.getTransaction().commit(); + try{ + session.beginTransaction(); + session.update(model); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<Void>(HttpStatus.OK); } @@ -242,9 +279,17 @@ public class ModelsApi { // Save model into DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - session.save(model); - session.getTransaction().commit(); + try{ + session.beginTransaction(); + session.save(model); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } return new ResponseEntity<Model>(HttpStatus.OK).ok(model); } diff --git a/src/main/java/org/hbp/mip/controllers/StatsApi.java b/src/main/java/org/hbp/mip/controllers/StatsApi.java index 7138675522f8a0a27db614249ca8d7c6fa199392..e19a548a9b0ea300c8c7872a41f403a806282785 100644 --- a/src/main/java/org/hbp/mip/controllers/StatsApi.java +++ b/src/main/java/org/hbp/mip/controllers/StatsApi.java @@ -28,15 +28,27 @@ public class StatsApi { public ResponseEntity<GeneralStats> getGeneralStatistics() { GeneralStats stats = new GeneralStats(); + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - Query countUsersQuery = session.createQuery("SELECT COUNT(*) FROM User"); - Query countArticlesQuery = session.createQuery("SELECT COUNT(*) FROM Article"); - Query countVariablesQuery = session.createQuery("SELECT COUNT(*) FROM Variable"); - Long nbUsers = (Long) countUsersQuery.uniqueResult(); - Long nbArticles = (Long) countArticlesQuery.uniqueResult(); - Long nbVariables = (Long) countVariablesQuery.uniqueResult(); - session.getTransaction().commit(); + Long nbUsers = 0L; + Long nbArticles = 0L; + Long nbVariables = 0L; + try{ + session.beginTransaction(); + Query countUsersQuery = session.createQuery("SELECT COUNT(*) FROM User"); + Query countArticlesQuery = session.createQuery("SELECT COUNT(*) FROM Article"); + Query countVariablesQuery = session.createQuery("SELECT COUNT(*) FROM Variable"); + nbUsers = (Long) countUsersQuery.uniqueResult(); + nbArticles = (Long) countArticlesQuery.uniqueResult(); + nbVariables = (Long) countVariablesQuery.uniqueResult(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } stats.setUsers(nbUsers); stats.setArticles(nbArticles); diff --git a/src/main/java/org/hbp/mip/controllers/UsersApi.java b/src/main/java/org/hbp/mip/controllers/UsersApi.java index 63110bc83a27920ca76f48fa593dfee84572b430..c57bf39ee90a2ab3feb6132b25ba0eb563f824bc 100644 --- a/src/main/java/org/hbp/mip/controllers/UsersApi.java +++ b/src/main/java/org/hbp/mip/controllers/UsersApi.java @@ -31,11 +31,20 @@ public class UsersApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from User where username= :username"); - query.setString("username", username); - User user = (User) query.uniqueResult(); - session.getTransaction().commit(); + 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(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } return new ResponseEntity<User>(HttpStatus.OK).ok(user); } diff --git a/src/main/java/org/hbp/mip/controllers/VariablesApi.java b/src/main/java/org/hbp/mip/controllers/VariablesApi.java index a6d76a0f529e62a15d195b8fa4451074bdd82ede..e42f75144a21264df7f080abd4de64747e3013c9 100644 --- a/src/main/java/org/hbp/mip/controllers/VariablesApi.java +++ b/src/main/java/org/hbp/mip/controllers/VariablesApi.java @@ -6,7 +6,6 @@ package org.hbp.mip.controllers; import io.swagger.annotations.*; -import org.hbp.mip.model.Group; import org.hbp.mip.model.Value; import org.hbp.mip.model.Variable; import org.hbp.mip.utils.HibernateUtil; @@ -38,33 +37,19 @@ public class VariablesApi { @ApiParam(value = "Boolean value formatted like : (\"0\") or (\"1\") or (\"false\") or (\"true\")") @RequestParam(value = "isFilter", required = false) String isFilter ) { - // Get variales from DB + // Get variables from DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - List<Variable> variables = session.createQuery("from Variable").list(); - session.getTransaction().commit(); - - // Get groups matching grpPath - for(Variable v : variables) + List<Variable> variables = new LinkedList<>(); + try{ + session.beginTransaction(); + variables = session.createQuery("from Variable").list(); + session.getTransaction().commit(); + } catch (Exception e) { - Group g; - Group child = null; - for(int i=v.getGrpPath().size()-1; i >= 0; i--) { - session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from Group where code= :code"); - query.setString("code", v.getGrpPath().get(i)); - g = (Group) query.uniqueResult(); - session.getTransaction().commit(); - g.setGroups(new LinkedList<>()); - if(child != null) - { - g.addGroup(child); - } - child = g.clone(); - } - v.setGroup(child); - } + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } } return new ResponseEntity<List<Variable>>(HttpStatus.OK).ok(variables); } @@ -78,11 +63,20 @@ public class VariablesApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - org.hibernate.Query query = session.createQuery("from Variable where code= :code"); - query.setString("code", code); - Variable variable = (Variable) query.uniqueResult(); - session.getTransaction().commit(); + 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(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } return new ResponseEntity<Variable>(HttpStatus.OK).ok(variable); } @@ -98,9 +92,18 @@ public class VariablesApi { // Query DB Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - session.beginTransaction(); - List<Value> values = session.createQuery("select values from Variable where code= :code").setString("code", code).list(); - session.getTransaction().commit(); + List<Value> values = new LinkedList<>(); + try{ + session.beginTransaction(); + values = session.createQuery("select values from Variable where code= :code").setString("code", code).list(); + session.getTransaction().commit(); + } catch (Exception e) + { + if(session.getTransaction() != null) + { + session.getTransaction().rollback(); + } + } return new ResponseEntity<List<Value>>(HttpStatus.OK).ok(values); } diff --git a/src/main/java/org/hbp/mip/model/Group.java b/src/main/java/org/hbp/mip/model/Group.java index d5d61c435b82e3227a50b53f1f180dde597c8806..972b2432952588175df8dd33bee44914482e99b1 100644 --- a/src/main/java/org/hbp/mip/model/Group.java +++ b/src/main/java/org/hbp/mip/model/Group.java @@ -4,6 +4,7 @@ package org.hbp.mip.model; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModel; @@ -16,11 +17,14 @@ import java.util.List; @Entity @Table(name = "`group`") @ApiModel(description = "") +@JsonIgnoreProperties(value = { "parent" }) @JsonInclude(JsonInclude.Include.NON_NULL) public class Group { @Id private String code = null; private String label = null; + @ManyToOne(fetch = FetchType.EAGER) + private Group parent = null; @OneToMany(fetch = FetchType.EAGER) private List<Group> groups = new LinkedList<Group>(); @@ -53,6 +57,16 @@ public class Group { this.label = label; } + public Group getParent() { + return parent; + } + + @ApiModelProperty(value = "Parent") + @JsonProperty("parent") + public void setParent(Group parent) { + this.parent = parent; + } + /** * Groups **/ @@ -73,6 +87,7 @@ public class Group { sb.append(" code: ").append(code).append("\n"); sb.append(" label: ").append(label).append("\n"); + sb.append(" parent: ").append(parent).append("\n"); sb.append(" groups: ").append(groups).append("\n"); sb.append("}\n"); return sb.toString(); @@ -87,6 +102,7 @@ public class Group { Group g = new Group(); g.setCode(this.getCode()); g.setLabel(this.getLabel()); + g.setParent(this.getParent()); g.setGroups(this.getGroups()); return g; } diff --git a/src/main/java/org/hbp/mip/model/Variable.java b/src/main/java/org/hbp/mip/model/Variable.java index 6cec0b56b1fd09ff30f0d41d164b02e6eec95923..4134988d2ab678908ddc38d97c3b8aa6ad96e81a 100644 --- a/src/main/java/org/hbp/mip/model/Variable.java +++ b/src/main/java/org/hbp/mip/model/Variable.java @@ -17,7 +17,7 @@ import java.util.List; @Entity @Table(name = "`variable`") @ApiModel(description = "") -@JsonIgnoreProperties(value = { "grpPath", "queries" }) +@JsonIgnoreProperties(value = { "queries" }) @JsonInclude(JsonInclude.Include.NON_NULL) public class Variable { @@ -33,8 +33,6 @@ public class Variable { private Boolean isGrouping = null; private Boolean isCovariable = null; private Boolean isFilter = null; - @ElementCollection(fetch = FetchType.EAGER) - private List<String> grpPath = new LinkedList<>(); @ManyToOne(fetch = FetchType.EAGER) private Group group = null; @ManyToMany(fetch = FetchType.EAGER) @@ -213,19 +211,6 @@ public class Variable { this.units = units; } - /** - * Group path - **/ - @ApiModelProperty(value = "Group path") - @JsonProperty("grpPath") - public List<String> getGrpPath() { - return grpPath; - } - - public void setGrpPath(List<String> grpPath) { - this.grpPath = grpPath; - } - public List<Query> getQueries() { return queries; } diff --git a/src/test/db b/src/test/db index f7196ec2fe8a16006fd990f58a0bba5219c0b89f..f14bdeddf4e4c3a7af9271e8637ee064282da6a0 160000 --- a/src/test/db +++ b/src/test/db @@ -1 +1 @@ -Subproject commit f7196ec2fe8a16006fd990f58a0bba5219c0b89f +Subproject commit f14bdeddf4e4c3a7af9271e8637ee064282da6a0