dataset getpaged getsingle

This commit is contained in:
annabakouli 2017-12-15 14:25:21 +02:00
parent d134efcb55
commit 919b60b733
17 changed files with 293 additions and 50 deletions

View File

@ -1,3 +1,2 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
encoding//src/main/java=UTF-8 encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8

View File

@ -55,7 +55,10 @@
<version>20160810</version> <version>20160810</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>

View File

@ -9,6 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class EuDatApplication { public class EuDatApplication {
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "true");
SpringApplication.run(EuDatApplication.class, args); SpringApplication.run(EuDatApplication.class, args);
} }
} }

View File

@ -67,6 +67,7 @@ public class DatabaseConfiguration {
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL92Dialect"); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL92Dialect");
properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.temp.use_jdbc_metadata_defaults","false");
return properties; return properties;
} }
} }

View File

@ -8,6 +8,12 @@ import eu.eudat.entities.DMP;
import eu.eudat.entities.Dataset; import eu.eudat.entities.Dataset;
import eu.eudat.entities.DatasetProfile; import eu.eudat.entities.DatasetProfile;
import eu.eudat.entities.UserInfo; import eu.eudat.entities.UserInfo;
import eu.eudat.managers.DatasetManager;
import eu.eudat.managers.ProjectManager;
import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.project.Project;
import eu.eudat.models.project.ProjectTableRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -59,6 +65,35 @@ public class Datasets {
@Autowired private UserInfoDao userInfoDao; @Autowired private UserInfoDao userInfoDao;
@RequestMapping(method = RequestMethod.POST, value = { "/datasets/getPaged" }, consumes = "application/json", produces="application/json")
public @ResponseBody ResponseEntity<DataTableData<eu.eudat.models.dataset.Dataset>> getPaged(@RequestBody DatasetTableRequest datasetTableRequest) {
try {
DataTableData<eu.eudat.models.dataset.Dataset> dataTable = new DatasetManager().getPaged(datasetDao, datasetTableRequest);
return ResponseEntity.status(HttpStatus.OK).body(dataTable);
} catch (Exception ex) {
ex.printStackTrace();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
@RequestMapping(method = RequestMethod.GET, value = { "/datasets/getSingle/{id}" }, produces="application/json")
public @ResponseBody ResponseEntity<eu.eudat.models.dataset.Dataset> getPaged(@PathVariable String id) {
try {
eu.eudat.models.dataset.Dataset dataset = new DatasetManager().getSingle(datasetDao, id);
return ResponseEntity.status(HttpStatus.OK).body(dataset);
} catch (Exception ex) {
ex.printStackTrace();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// FETCH BY DATASET(S) // FETCH BY DATASET(S)

View File

@ -75,21 +75,22 @@ public class Users {
@RequestMapping(method = RequestMethod.GET, value = { "/user/whoami" }, produces="application/json;charset=UTF-8") @RequestMapping(method = RequestMethod.GET, value = { "/user/whoami" }, produces="application/json;charset=UTF-8")
public @ResponseBody ResponseEntity<Object> whoami(){ public @ResponseBody ResponseEntity<UserInfo> whoami(){
String userID = null; String userID = null;
try { try {
userID = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(); userID = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString();
} catch(NullPointerException ex) { } catch(NullPointerException ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("You have not logged in. You shouldn't be here"); ex.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
} }
UserInfo userInfo = userInfoDao.getUserInfo(userID); UserInfo userInfo = userInfoDao.getUserInfo(userID);
if(userInfo==null) //this should normally never happer if(userInfo==null) //this should normally never happer
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("There's no such a user on the system. You shouldn't be here"); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
try { try {
@ -98,7 +99,7 @@ public class Users {
} }
catch(Exception ex) { catch(Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
} }
} }

View File

@ -5,7 +5,10 @@ import java.util.UUID;
import eu.eudat.dao.Dao; import eu.eudat.dao.Dao;
import eu.eudat.entities.Dataset; import eu.eudat.entities.Dataset;
import eu.eudat.entities.Project;
import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.entities.responses.IDLabelPair;
import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.project.ProjectTableRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
public interface DatasetDao extends Dao<Dataset, UUID> { public interface DatasetDao extends Dao<Dataset, UUID> {
@ -17,4 +20,6 @@ public interface DatasetDao extends Dao<Dataset, UUID> {
List<Dataset> getDatasetsOfDmp(UUID dmpID); List<Dataset> getDatasetsOfDmp(UUID dmpID);
public List<Dataset> getWithCriteria(DatasetTableRequest datasetTableRequest);
} }

View File

@ -7,10 +7,15 @@ import java.util.stream.Collectors;
import javax.persistence.Query; import javax.persistence.Query;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import eu.eudat.dao.JpaDao; import eu.eudat.dao.JpaDao;
import eu.eudat.entities.Dataset; import eu.eudat.entities.Dataset;
import eu.eudat.entities.Project;
import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.entities.responses.IDLabelPair;
import eu.eudat.models.dataset.DatasetTableRequest;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component("datasetDao") @Component("datasetDao")
@ -49,5 +54,14 @@ public class DatasetDaoImpl extends JpaDao<Dataset, UUID> implements DatasetDao
return datasets; return datasets;
} }
@Override
public List<Dataset> getWithCriteria(DatasetTableRequest datasetTableRequest) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Dataset> criteriaQuery = criteriaBuilder .createQuery(Dataset.class);
Root<Dataset> root = criteriaQuery.from(Dataset.class);
TypedQuery<Dataset> typedQuery = entityManager.createQuery(criteriaQuery);
typedQuery.setFirstResult(datasetTableRequest.getOffset());
typedQuery.setMaxResults(datasetTableRequest.getLength());
return typedQuery.getResultList();
}
} }

View File

@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@Entity @Entity
@Table(name="\"DatasetProfile\"") @Table(name="\"DatasetProfile\"")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class DatasetProfile implements Serializable { public class DatasetProfile implements Serializable,DataEntity {
private static final long serialVersionUID = 8203086344232867334L; private static final long serialVersionUID = 8203086344232867334L;
@ -173,7 +173,7 @@ public class DatasetProfile implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "DatasetProfile [id=" + id + ", label=" + label + ", dataset=" + dataset + ", ruleset=" + ruleset return "DatasetProfileListingModel [id=" + id + ", label=" + label + ", dataset=" + dataset + ", ruleset=" + ruleset
+ ", viewstyle=" + viewstyle + ", definition=" + definition + "]"; + ", viewstyle=" + viewstyle + ", definition=" + definition + "]";
} }

View File

@ -32,8 +32,8 @@ public class Transformers {
dpv.setDefinition(formData.getFirst("DatasetProfileViewStyle.definition")); dpv.setDefinition(formData.getFirst("DatasetProfileViewStyle.definition"));
DatasetProfile dp = new DatasetProfile(); DatasetProfile dp = new DatasetProfile();
dp.setLabel(formData.getFirst("DatasetProfile.label")); dp.setLabel(formData.getFirst("DatasetProfileListingModel.label"));
dp.setDefinition(formData.getFirst("DatasetProfile.definition")); dp.setDefinition(formData.getFirst("DatasetProfileListingModel.definition"));
dp.setRuleset(dpr); dp.setRuleset(dpr);
dp.setViewstyle(dpv); dp.setViewstyle(dpv);

View File

@ -0,0 +1,33 @@
package eu.eudat.managers;
import eu.eudat.dao.entities.DatasetDao;
import eu.eudat.dao.entities.ProjectDao;
import eu.eudat.models.dataset.Dataset;
import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.project.Project;
import eu.eudat.models.project.ProjectTableRequest;
import eu.eudat.utilities.builders.DomainModelConverter;
import java.util.List;
import java.util.UUID;
/**
* Created by ikalyvas on 12/15/2017.
*/
public class DatasetManager {
public DataTableData<Dataset> getPaged(DatasetDao datatasetRepository, DatasetTableRequest datasetTableRequest) throws IllegalAccessException, InstantiationException{
List<Dataset> datasets = new DomainModelConverter<eu.eudat.entities.Dataset, Dataset>().fromDataModel( datatasetRepository.getWithCriteria(datasetTableRequest), eu.eudat.models.dataset.Dataset.class);
DataTableData<eu.eudat.models.dataset.Dataset> dataTable = new DataTableData<eu.eudat.models.dataset.Dataset>();
dataTable.setData(datasets);
dataTable.setTotalCount(datatasetRepository.count());
return dataTable;
}
public eu.eudat.models.dataset.Dataset getSingle(DatasetDao datatasetRepository, String id) throws InstantiationException, IllegalAccessException{
eu.eudat.models.dataset.Dataset dataset = new eu.eudat.models.dataset.Dataset();
dataset.fromDataModel(datatasetRepository.read(UUID.fromString(id)));
return dataset;
}
}

View File

@ -0,0 +1,9 @@
package eu.eudat.models.criteria;
import eu.eudat.entities.Dataset;
/**
* Created by ikalyvas on 12/15/2017.
*/
public class DatasetCriteria extends Criteria<Dataset>{
}

View File

@ -1,11 +1,11 @@
package eu.eudat.models.dataset; package eu.eudat.models.dataset;
import eu.eudat.models.DataModel; import eu.eudat.models.DataModel;
import eu.eudat.models.datasetprofile.DatasetProfileListingModel;
import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.utilities.builders.DomainModelConverter; import eu.eudat.utilities.builders.DomainModelConverter;
import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -18,8 +18,8 @@ public class Dataset implements DataModel<eu.eudat.entities.Dataset>{
private String description; private String description;
private short status; private short status;
private String properties; private String properties;
private eu.eudat.entities.DMP dmp; private DataManagementPlan dmp;
private eu.eudat.entities.DatasetProfile profile; private DatasetProfileListingModel profile;
private List<Registry> registries; private List<Registry> registries;
private List<Service> services; private List<Service> services;
private List<DataRepository> dataRepositories; private List<DataRepository> dataRepositories;
@ -88,16 +88,20 @@ public class Dataset implements DataModel<eu.eudat.entities.Dataset>{
public void setDescription(String description) { public void setDescription(String description) {
this.description = description; this.description = description;
} }
public eu.eudat.entities.DMP getDmp() {
public DataManagementPlan getDmp() {
return dmp; return dmp;
} }
public void setDmp(eu.eudat.entities.DMP dmp) {
public void setDmp(DataManagementPlan dmp) {
this.dmp = dmp; this.dmp = dmp;
} }
public eu.eudat.entities.DatasetProfile getProfile() {
public DatasetProfileListingModel getProfile() {
return profile; return profile;
} }
public void setProfile(eu.eudat.entities.DatasetProfile profile) {
public void setProfile(DatasetProfileListingModel profile) {
this.profile = profile; this.profile = profile;
} }
@ -106,9 +110,9 @@ public class Dataset implements DataModel<eu.eudat.entities.Dataset>{
this.label = entity.getLabel(); this.label = entity.getLabel();
this.properties = entity.getProperties(); this.properties = entity.getProperties();
this.reference = entity.getReference(); this.reference = entity.getReference();
//this.dmp = entity.getDmp();
this.description = entity.getDescription(); this.description = entity.getDescription();
this.profile = entity.getProfile(); this.profile = new DatasetProfileListingModel();
this.profile.fromDataModel(entity.getProfile());
this.registries = new DomainModelConverter<eu.eudat.entities.Registry,Registry>().fromDataModel(entity.getRegistries().stream().collect(Collectors.toList()), Registry.class); this.registries = new DomainModelConverter<eu.eudat.entities.Registry,Registry>().fromDataModel(entity.getRegistries().stream().collect(Collectors.toList()), Registry.class);
this.dataRepositories = new DomainModelConverter<eu.eudat.entities.DataRepository,DataRepository>().fromDataModel(entity.getDataRepositories().stream().collect(Collectors.toList()), DataRepository.class); this.dataRepositories = new DomainModelConverter<eu.eudat.entities.DataRepository,DataRepository>().fromDataModel(entity.getDataRepositories().stream().collect(Collectors.toList()), DataRepository.class);
this.services = new DomainModelConverter<eu.eudat.entities.Service,Service>().fromDataModel(entity.getServices().stream().collect(Collectors.toList()), Service.class); this.services = new DomainModelConverter<eu.eudat.entities.Service,Service>().fromDataModel(entity.getServices().stream().collect(Collectors.toList()), Service.class);
@ -122,9 +126,9 @@ public class Dataset implements DataModel<eu.eudat.entities.Dataset>{
entity.setUri(this.uri); entity.setUri(this.uri);
entity.setProperties(this.properties); entity.setProperties(this.properties);
entity.setStatus(this.status); entity.setStatus(this.status);
entity.setDmp(dmp); entity.setDmp(dmp.toDataModel());
entity.setDescription(this.description); entity.setDescription(this.description);
entity.setProfile(profile); entity.setProfile(profile.toDataModel()); ///TODO
if(!this.registries.isEmpty()){ if(!this.registries.isEmpty()){
entity.setRegistries(new HashSet<eu.eudat.entities.Registry>()); entity.setRegistries(new HashSet<eu.eudat.entities.Registry>());
for(Registry registry:this.registries){ for(Registry registry:this.registries){

View File

@ -0,0 +1,38 @@
package eu.eudat.models.dataset;
import eu.eudat.models.criteria.DatasetCriteria;
import eu.eudat.models.criteria.ProjectCriteria;
/**
* Created by ikalyvas on 12/15/2017.
*/
public class DatasetTableRequest {
private int length;
private int offset;
private DatasetCriteria criteria;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public DatasetCriteria getCriteria() {
return criteria;
}
public void setCriteria(DatasetCriteria criteria) {
this.criteria = criteria;
}
}

View File

@ -0,0 +1,95 @@
package eu.eudat.models.datasetprofile;
import eu.eudat.entities.Dataset;
import eu.eudat.entities.DatasetProfile;
import eu.eudat.entities.DatasetProfileRuleset;
import eu.eudat.entities.DatasetProfileViewstyle;
import eu.eudat.models.DataModel;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.util.Date;
import java.util.Set;
import java.util.UUID;
/**
* Created by ikalyvas on 12/15/2017.
*/
public class DatasetProfileListingModel implements DataModel<DatasetProfile> {
private UUID id;
private String label;
private Short status;
private Date created;
private Date modified = new Date();
private String description;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Short getStatus() {
return status;
}
public void setStatus(Short status) {
this.status = status;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getModified() {
return modified;
}
public void setModified(Date modified) {
this.modified = modified;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public void fromDataModel(DatasetProfile entity) throws InstantiationException, IllegalAccessException {
this.id = entity.getId();
this.label = entity.getLabel();
this.status = entity.getStatus();
this.created = entity.getCreated();
this.modified = entity.getModified();
this.description = entity.getDescription();
}
@Override
public DatasetProfile toDataModel() {
return null;
}
}

View File

@ -1,5 +1,7 @@
package eu.eudat.proxy.config; package eu.eudat.proxy.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
@ -14,14 +16,16 @@ public class ConfigLoader {
private ExternalUrls externalUrls; private ExternalUrls externalUrls;
@Autowired
private Environment environment;
// public static void main(String [] args) { // public static void main(String [] args) {
// ConfigLoader l = new ConfigLoader("file:///home/nikolas/git/OpenAIRE-EUDAT-DMP/dmp-backend/src/main/resources/ExternalUrls.xml"); // ConfigLoader l = new ConfigLoader("file:///home/nikolas/git/OpenAIRE-EUDAT-DMP/dmp-backend/src/main/resources/ExternalUrls.xml");
// } // }
public ConfigLoader() { public ConfigLoader() {
} }
public ConfigLoader(String fileUrl) { private void setExternalUrls() {
String fileUrl = this.environment.getProperty("configuration.externalUrls");
System.out.println("Loaded also config file: " + fileUrl); System.out.println("Loaded also config file: " + fileUrl);
InputStream is = null; InputStream is = null;
try { try {
@ -30,23 +34,23 @@ public class ConfigLoader {
is = new URL(fileUrl).openStream(); is = new URL(fileUrl).openStream();
externalUrls = (ExternalUrls) jaxbUnmarshaller.unmarshal(is); externalUrls = (ExternalUrls) jaxbUnmarshaller.unmarshal(is);
// System.out.println(new ObjectMapper().writeValueAsString(externalUrls)); // System.out.println(new ObjectMapper().writeValueAsString(externalUrls));
} } catch (Exception ex) {
catch(Exception ex) {
//log the error and shutdown the system (that's a critical error) //log the error and shutdown the system (that's a critical error)
ex.printStackTrace(); ex.printStackTrace();
System.exit(0); System.exit(0);
} } finally {
finally {
try { try {
if (is != null) is.close(); if (is != null) is.close();
} catch (IOException e) { } catch (IOException e) {
System.out.println("Warning: Could not close a stream after reading from file: " + fileUrl); System.out.println("Warning: Could not close a stream after reading from file: " + fileUrl);
} }
} }
} }
public ExternalUrls getExternalUrls() { public ExternalUrls getExternalUrls() {
this.setExternalUrls();
return externalUrls; return externalUrls;
} }

View File

@ -12,6 +12,7 @@ database.password = dmpt00lu$r
###################Allowed Proxy Service Host ############################ ###################Allowed Proxy Service Host ############################
eu.eudat.proxy.allowed.host = https://eestore.paas2.uninett.no eu.eudat.proxy.allowed.host = https://eestore.paas2.uninett.no
configuration.externalUrls = file:///C:\\Users\\ikalyvas\\Documents\\Projects\\OpenAIRE-EUDAT-DMP-service-pilot\\dmp-backend\\src\\main\\resources\\ExternalUrls.xml
####################################################### #######################################################
########################Persistence/Hibernate Generic############################# ########################Persistence/Hibernate Generic#############################