Skip to content
Snippets Groups Projects
Commit ce2813da authored by Mirco Nasuti's avatar Mirco Nasuti
Browse files

new model + 401 instead of redirect + catch hibernate exceptions

parent 73e22e20
No related branches found
No related tags found
No related merge requests found
Showing
with 317 additions and 184 deletions
......@@ -33,4 +33,6 @@ server:
contextPath: /services
port: 8080
use-forward-headers: true
session:
timeout: 2592000
......@@ -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);
}
}
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -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;
}
......
......@@ -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;
}
......
db @ f14bdedd
Subproject commit f7196ec2fe8a16006fd990f58a0bba5219c0b89f
Subproject commit f14bdeddf4e4c3a7af9271e8637ee064282da6a0
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment