This commit is contained in:
Diamantis Tziotzios 2017-12-20 17:15:39 +02:00
commit b1e4787a92
34 changed files with 459 additions and 91 deletions

View File

@ -18,6 +18,7 @@ import eu.eudat.models.dmp.DataManagementPlanTableRequest;
import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.helpers.responses.*; import eu.eudat.models.helpers.responses.*;
import eu.eudat.models.listingmodels.DataManagementPlanListingModel; import eu.eudat.models.listingmodels.DataManagementPlanListingModel;
import eu.eudat.models.security.Principal;
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;
@ -96,10 +97,17 @@ public class DMPs {
} }
@Transactional @Transactional
@RequestMapping(method = RequestMethod.POST, value = { "/dmps/add" }, consumes = "application/json", produces="application/json") @RequestMapping(method = RequestMethod.POST, value = { "/dmps/createOrUpdate" }, consumes = "application/json", produces="application/json")
public @ResponseBody ResponseEntity<eu.eudat.entities.DMP> addDmp(@RequestBody eu.eudat.models.dmp.DataManagementPlan dataManagementPlan) { public @ResponseBody ResponseItem<DMP> createOrUpdate(@RequestBody eu.eudat.models.dmp.DataManagementPlan dataManagementPlan, Principal principal) {
eu.eudat.entities.DMP createdProject = dMPDao.createOrUpdate(dataManagementPlan.toDataModel()); try{
return ResponseEntity.status(HttpStatus.CREATED).body(createdProject); DataManagementPlanManager.createOrUpdate(dMPDao,researcherDao,userInfoDao,organisationDao,dataManagementPlan,principal);
return new ResponseItem<DMP>().status(HttpStatus.CREATED);
}catch (Exception ex){
ex.printStackTrace();
return new ResponseItem<DMP>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage());
}
} }

View File

@ -0,0 +1,44 @@
package eu.eudat.controllers;
import eu.eudat.dao.entities.DMPDao;
import eu.eudat.managers.DatasetManager;
import eu.eudat.managers.DatasetWizardManager;
import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.datasetwizard.DataManagentPlanListingModel;
import eu.eudat.models.datasetwizard.DatasetWizardAutocompleteRequest;
import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.helpers.responses.ResponseItem;
import eu.eudat.models.listingmodels.DatasetListingModel;
import eu.eudat.models.security.Principal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by ikalyvas on 12/20/2017.
*/
@RestController
@CrossOrigin
@RequestMapping( value = { "/datasetwizard" })
public class DatasetWizardController {
@Autowired
private DMPDao dMPDao;
@RequestMapping(method = RequestMethod.POST, value = { "/userDmps" }, produces="application/json")
public @ResponseBody
ResponseItem<List<DataManagentPlanListingModel>> getUserDmps(@RequestBody DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, Principal principal) {
try {
List<DataManagentPlanListingModel> dataManagementPlans = DatasetWizardManager.getUserDmps(dMPDao,datasetWizardAutocompleteRequest,principal);
return new ResponseItem<List<DataManagentPlanListingModel>>().status(HttpStatus.OK).payload(dataManagementPlans);
} catch (Exception ex) {
ex.printStackTrace();
return new ResponseItem<List<DataManagentPlanListingModel>>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage());
}
}
}

View File

@ -13,6 +13,7 @@ import eu.eudat.models.external.ProjectsExternalSourcesModel;
import eu.eudat.models.external.RegistriesExternalSourcesModel; import eu.eudat.models.external.RegistriesExternalSourcesModel;
import eu.eudat.models.helpers.responses.*; import eu.eudat.models.helpers.responses.*;
import eu.eudat.models.project.ProjectCriteriaRequest; import eu.eudat.models.project.ProjectCriteriaRequest;
import eu.eudat.models.security.Principal;
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;
@ -102,9 +103,9 @@ public class Projects {
@Transactional @Transactional
@RequestMapping(method = RequestMethod.POST, value = { "/projects/createOrUpdate" }, consumes = "application/json", produces="application/json") @RequestMapping(method = RequestMethod.POST, value = { "/projects/createOrUpdate" }, consumes = "application/json", produces="application/json")
public @ResponseBody ResponseItem<eu.eudat.entities.Project> addProject(@RequestBody eu.eudat.models.project.Project project) { public @ResponseBody ResponseItem<eu.eudat.entities.Project> addProject(@RequestBody eu.eudat.models.project.Project project, Principal principal) {
try { try {
Project createdProject = projectDao.createOrUpdate(project.toDataModel()); ProjectManager.createOrUpdate(projectDao,userInfoDao,project,principal);
return new ResponseItem<eu.eudat.entities.Project>().status(HttpStatus.OK); return new ResponseItem<eu.eudat.entities.Project>().status(HttpStatus.OK);
}catch (Exception ex){ }catch (Exception ex){
return new ResponseItem<eu.eudat.entities.Project>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage()); return new ResponseItem<eu.eudat.entities.Project>().status(HttpStatus.BAD_REQUEST).message(ex.getMessage());

View File

@ -5,15 +5,20 @@ import java.util.UUID;
import eu.eudat.dao.Dao; import eu.eudat.dao.Dao;
import eu.eudat.entities.DMP; import eu.eudat.entities.DMP;
import eu.eudat.entities.Dataset;
import eu.eudat.entities.UserInfo;
import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.entities.responses.IDLabelPair;
import eu.eudat.models.criteria.DataManagementPlanCriteria; import eu.eudat.models.criteria.DataManagementPlanCriteria;
import eu.eudat.models.datasetwizard.DatasetWizardAutocompleteRequest;
import eu.eudat.models.dmp.DataManagementPlanTableRequest; import eu.eudat.models.dmp.DataManagementPlanTableRequest;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
public interface DMPDao { public interface DMPDao {
public QueryableList<DMP> getWithCriteria(DataManagementPlanCriteria criteria); QueryableList<DMP> getWithCriteria(DataManagementPlanCriteria criteria);
QueryableList<DMP> getUserDmps(DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, UserInfo userInfo);
DMP createOrUpdate(DMP item); DMP createOrUpdate(DMP item);

View File

@ -11,8 +11,11 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import eu.eudat.dao.databaselayer.service.DatabaseService; import eu.eudat.dao.databaselayer.service.DatabaseService;
import eu.eudat.entities.Dataset;
import eu.eudat.entities.Project; import eu.eudat.entities.Project;
import eu.eudat.entities.UserInfo;
import eu.eudat.models.criteria.DataManagementPlanCriteria; import eu.eudat.models.criteria.DataManagementPlanCriteria;
import eu.eudat.models.datasetwizard.DatasetWizardAutocompleteRequest;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import org.hibernate.query.Query; import org.hibernate.query.Query;
@ -53,4 +56,13 @@ public class DMPDaoImpl implements DMPDao {
public Long count(){ public Long count(){
return this.databaseService.count(DMP.class); return this.databaseService.count(DMP.class);
} }
@Override
public QueryableList<DMP> getUserDmps(DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, UserInfo userInfo) {
QueryableList<DMP> query = databaseService.getQueryable(DMP.class).where((builder, root) -> builder.equal(root.get("creator"),userInfo));
if(datasetWizardAutocompleteRequest.getCriteria().getLike()!=null&&!datasetWizardAutocompleteRequest.getCriteria().getLike().isEmpty()){
query.where((builder, root) -> builder.like(root.get("label"),"%"+datasetWizardAutocompleteRequest.getCriteria().getLike()+"%"));
}
return query;
}
} }

View File

@ -6,18 +6,20 @@ 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.Project;
import eu.eudat.entities.UserInfo;
import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.entities.responses.IDLabelPair;
import eu.eudat.models.criteria.DatasetCriteria; import eu.eudat.models.criteria.DatasetCriteria;
import eu.eudat.models.criteria.ProjectCriteria; import eu.eudat.models.criteria.ProjectCriteria;
import eu.eudat.models.dataset.DatasetTableRequest; import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.project.ProjectTableRequest; import eu.eudat.models.project.ProjectTableRequest;
import eu.eudat.models.security.Principal;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
public interface DatasetDao { public interface DatasetDao {
public QueryableList<Dataset> getWithCriteria(DatasetCriteria criteria); QueryableList<Dataset> getWithCriteria(DatasetCriteria criteria);
Dataset createOrUpdate(Dataset item); Dataset createOrUpdate(Dataset item);

View File

@ -15,9 +15,11 @@ import eu.eudat.dao.JpaDao;
import eu.eudat.dao.databaselayer.service.DatabaseService; import eu.eudat.dao.databaselayer.service.DatabaseService;
import eu.eudat.entities.Dataset; import eu.eudat.entities.Dataset;
import eu.eudat.entities.Project; import eu.eudat.entities.Project;
import eu.eudat.entities.UserInfo;
import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.entities.responses.IDLabelPair;
import eu.eudat.models.criteria.DatasetCriteria; import eu.eudat.models.criteria.DatasetCriteria;
import eu.eudat.models.dataset.DatasetTableRequest; import eu.eudat.models.dataset.DatasetTableRequest;
import eu.eudat.models.security.Principal;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -51,4 +53,6 @@ public class DatasetDaoImpl implements DatasetDao {
public Long count(){ public Long count(){
return this.databaseService.count(Dataset.class); return this.databaseService.count(Dataset.class);
} }
} }

View File

@ -59,8 +59,8 @@ public class DMP implements Serializable,DataEntity<DMP> {
@Type(type="eu.eudat.typedefinition.XMLType") @Type(type="eu.eudat.typedefinition.XMLType")
@Column(name = "\"ProfileData\"", columnDefinition = "xml", nullable = true) @Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true)
private String profileData; private String associatedDmps;
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "\"Profile\"") @JoinColumn(name = "\"Profile\"")
@ -211,12 +211,12 @@ public class DMP implements Serializable,DataEntity<DMP> {
this.project = project; this.project = project;
} }
public String getProfileData() { public String getAssociatedDmps() {
return profileData; return associatedDmps;
} }
public void setProfileData(String profileData) { public void setAssociatedDmps(String associatedDmps) {
this.profileData = profileData; this.associatedDmps = associatedDmps;
} }
public DMPProfile getProfile() { public DMPProfile getProfile() {
@ -253,7 +253,13 @@ public class DMP implements Serializable,DataEntity<DMP> {
@Override @Override
public void update(DMP entity) { public void update(DMP entity) {
this.setAssociatedDmps(entity.associatedDmps);
this.label = entity.getLabel();
this.status = entity.getStatus();
this.created = entity.created;
this.description = entity.getDescription();
this.researchers = entity.getResearchers();
this.organisations = entity.getOrganisations();
} }
@Override @Override

View File

@ -91,7 +91,7 @@ public class Transformers {
dmp.setPrevious(UUID.fromString(formData.getFirst("DMP.previous"))); dmp.setPrevious(UUID.fromString(formData.getFirst("DMP.previous")));
}catch(Exception ex) {/*do nothing*/} }catch(Exception ex) {/*do nothing*/}
dmp.setProfile(profile); dmp.setProfile(profile);
dmp.setProfileData(formData.getFirst("DMP.profileData")); dmp.setAssociatedDmps(formData.getFirst("DMP.profileData"));
dmp.setProject(project); dmp.setProject(project);
dmp.setVersion(Integer.parseInt(formData.getFirst("DMP.version"))); dmp.setVersion(Integer.parseInt(formData.getFirst("DMP.version")));
dmp.setDataset(datasets); dmp.setDataset(datasets);

View File

@ -4,13 +4,19 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import eu.eudat.dao.entities.DMPDao; import eu.eudat.dao.entities.DMPDao;
import eu.eudat.dao.entities.OrganisationDao;
import eu.eudat.dao.entities.ResearcherDao;
import eu.eudat.dao.entities.UserInfoDao;
import eu.eudat.entities.DMP; import eu.eudat.entities.DMP;
import eu.eudat.models.criteria.DataManagementPlanCriteria; import eu.eudat.models.criteria.DataManagementPlanCriteria;
import eu.eudat.models.criteria.OrganisationCriteria;
import eu.eudat.models.criteria.ResearcherCriteria;
import eu.eudat.models.dmp.DataManagementPlan; import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.models.dmp.DataManagementPlanCriteriaRequest; import eu.eudat.models.dmp.DataManagementPlanCriteriaRequest;
import eu.eudat.models.dmp.DataManagementPlanTableRequest; import eu.eudat.models.dmp.DataManagementPlanTableRequest;
import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.listingmodels.DataManagementPlanListingModel; import eu.eudat.models.listingmodels.DataManagementPlanListingModel;
import eu.eudat.models.security.Principal;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import eu.eudat.utilities.builders.DomainModelConverter; import eu.eudat.utilities.builders.DomainModelConverter;
@ -37,4 +43,37 @@ public class DataManagementPlanManager {
List<eu.eudat.models.dmp.DataManagementPlan> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, eu.eudat.models.dmp.DataManagementPlan>().fromDataModel( items.toList(), eu.eudat.models.dmp.DataManagementPlan.class); List<eu.eudat.models.dmp.DataManagementPlan> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, eu.eudat.models.dmp.DataManagementPlan>().fromDataModel( items.toList(), eu.eudat.models.dmp.DataManagementPlan.class);
return datamanagementPlans; return datamanagementPlans;
} }
public static void createOrUpdate(DMPDao dmpsRepository, ResearcherDao researcherRepository, UserInfoDao userInfoDao, OrganisationDao organisationRepository, DataManagementPlan dataManagementPlan, Principal principal){
DMP newDmp = dataManagementPlan.toDataModel();
createOrganisationsIfTheyDontExist(newDmp,organisationRepository);
createResearchersIfTheyDontExist(newDmp,researcherRepository);
newDmp.setCreator(userInfoDao.read(principal.getId()));
dmpsRepository.createOrUpdate(newDmp);
}
private static void createResearchersIfTheyDontExist(DMP newDmp,ResearcherDao researcherRepository){
if(newDmp.getResearchers()!=null&&!newDmp.getResearchers().isEmpty()){
for(eu.eudat.entities.Researcher researcher : newDmp.getResearchers()){
ResearcherCriteria criteria = new ResearcherCriteria();
criteria.setLike(researcher.getReference());
List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria);
if(entries!=null&&!entries.isEmpty())researcher.setId(entries.get(0).getId());
else researcher = researcherRepository.create(researcher);
}
}
}
private static void createOrganisationsIfTheyDontExist(DMP newDmp,OrganisationDao organisationRepository){
if(newDmp.getOrganisations()!=null&&!newDmp.getOrganisations().isEmpty()){
for(eu.eudat.entities.Organisation organisation: newDmp.getOrganisations()){
OrganisationCriteria criteria = new OrganisationCriteria();
criteria.setLike(organisation.getReference());
List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria);
if(entries!=null&&!entries.isEmpty())organisation.setId(entries.get(0).getId());
else organisation = organisationRepository.create(organisation);
}
}
}
} }

View File

@ -34,4 +34,5 @@ public class DatasetManager {
dataset.fromDataModel(datatasetRepository.find(UUID.fromString(id))); dataset.fromDataModel(datatasetRepository.find(UUID.fromString(id)));
return dataset; return dataset;
} }
} }

View File

@ -0,0 +1,30 @@
package eu.eudat.managers;
import eu.eudat.dao.entities.DMPDao;
import eu.eudat.dao.entities.DatasetDao;
import eu.eudat.entities.DMP;
import eu.eudat.entities.Dataset;
import eu.eudat.entities.UserInfo;
import eu.eudat.models.datasetwizard.DataManagentPlanListingModel;
import eu.eudat.models.datasetwizard.DatasetWizardAutocompleteRequest;
import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.models.listingmodels.DatasetListingModel;
import eu.eudat.models.security.Principal;
import eu.eudat.queryable.QueryableList;
import eu.eudat.utilities.builders.DomainModelConverter;
import java.util.List;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class DatasetWizardManager {
public static List<DataManagentPlanListingModel> getUserDmps(DMPDao dmpRepository, DatasetWizardAutocompleteRequest datasetWizardAutocompleteRequest, Principal principal) throws InstantiationException, IllegalAccessException {
UserInfo userInfo = new UserInfo();
userInfo.setId(principal.getId());
QueryableList<DMP> items = dmpRepository.getUserDmps(datasetWizardAutocompleteRequest,userInfo);
List<DataManagentPlanListingModel> dataManagementPlans = new DomainModelConverter<DMP, DataManagentPlanListingModel>().fromDataModel( items.toList(), DataManagentPlanListingModel.class);
return dataManagementPlans;
}
}

View File

@ -4,11 +4,13 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import eu.eudat.dao.entities.ProjectDao; import eu.eudat.dao.entities.ProjectDao;
import eu.eudat.dao.entities.UserInfoDao;
import eu.eudat.models.criteria.ProjectCriteria; import eu.eudat.models.criteria.ProjectCriteria;
import eu.eudat.models.helpers.DataTableData; import eu.eudat.models.helpers.DataTableData;
import eu.eudat.models.project.Project; import eu.eudat.models.project.Project;
import eu.eudat.models.project.ProjectCriteriaRequest; import eu.eudat.models.project.ProjectCriteriaRequest;
import eu.eudat.models.project.ProjectTableRequest; import eu.eudat.models.project.ProjectTableRequest;
import eu.eudat.models.security.Principal;
import eu.eudat.queryable.QueryableList; import eu.eudat.queryable.QueryableList;
import eu.eudat.utilities.builders.DomainModelConverter; import eu.eudat.utilities.builders.DomainModelConverter;
@ -42,4 +44,10 @@ public class ProjectManager {
List<eu.eudat.models.project.Project> projects = new DomainModelConverter<eu.eudat.entities.Project, Project>().fromDataModel(items.toList(), eu.eudat.models.project.Project.class); List<eu.eudat.models.project.Project> projects = new DomainModelConverter<eu.eudat.entities.Project, Project>().fromDataModel(items.toList(), eu.eudat.models.project.Project.class);
return projects; return projects;
} }
public static void createOrUpdate(ProjectDao projectRepository, UserInfoDao userInfoRepository, eu.eudat.models.project.Project project, Principal principal){
eu.eudat.entities.Project projectEntity = project.toDataModel();
projectEntity.setCreationUser(userInfoRepository.read(principal.getId()));
projectRepository.createOrUpdate(projectEntity);
}
} }

View File

@ -0,0 +1,10 @@
package eu.eudat.models.criteria;
import eu.eudat.entities.DMP;
import eu.eudat.models.dmp.DataManagementPlan;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class DatasetWizardUserDmpCriteria extends Criteria<DMP>{
}

View File

@ -2,6 +2,7 @@ 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.datasetprofile.DatasetProfileListingModel;
import eu.eudat.models.dmp.AssociatedProfiles;
import eu.eudat.models.dmp.DataManagementPlan; import eu.eudat.models.dmp.DataManagementPlan;
import eu.eudat.utilities.builders.DomainModelConverter; import eu.eudat.utilities.builders.DomainModelConverter;

View File

@ -0,0 +1,40 @@
package eu.eudat.models.datasetwizard;
import eu.eudat.entities.DMP;
import eu.eudat.models.DataModel;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class DataManagentPlanListingModel implements DataModel<DMP>{
private String id;
private String label;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public void fromDataModel(DMP entity) throws InstantiationException, IllegalAccessException {
this.id = entity.getId().toString();
this.label = entity.getLabel();
}
@Override
public DMP toDataModel() {
return null;
}
}

View File

@ -0,0 +1,10 @@
package eu.eudat.models.datasetwizard;
import eu.eudat.models.criteria.DatasetWizardUserDmpCriteria;
import eu.eudat.models.helpers.requests.RequestItem;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class DatasetWizardAutocompleteRequest extends RequestItem<DatasetWizardUserDmpCriteria> {
}

View File

@ -0,0 +1,46 @@
package eu.eudat.models.dmp;
import eu.eudat.utilities.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.UUID;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class AssociatedProfile implements XmlSerializable<AssociatedProfile>{
private UUID profileId;
private String label;
public UUID getProfileId() {
return profileId;
}
public void setProfileId(UUID profileId) {
this.profileId = profileId;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public Element toXml(Document doc) {
Element profile = doc.createElement("profile");
profile.setAttribute("profileId",this.profileId.toString());
profile.setAttribute("label",this.label);
return profile;
}
@Override
public AssociatedProfile fromXml(Element item) {
this.profileId = UUID.fromString(item.getAttribute("profileId"));
this.label = item.getAttribute("label");
return this;
}
}

View File

@ -0,0 +1,49 @@
package eu.eudat.models.dmp;
import eu.eudat.utilities.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.LinkedList;
import java.util.List;
/**
* Created by ikalyvas on 12/20/2017.
*/
public class AssociatedProfiles implements XmlSerializable<AssociatedProfiles>{
List<AssociatedProfile> associatedProfiles;
public List<AssociatedProfile> getAssociatedProfiles() {
return associatedProfiles;
}
public void setAssociatedProfiles(List<AssociatedProfile> associatedProfiles) {
this.associatedProfiles = associatedProfiles;
}
@Override
public Element toXml(Document doc) {
Element associatedProfilesElement = doc.createElement("profiles");
for(AssociatedProfile associatedProfile:associatedProfiles){
associatedProfilesElement.appendChild(associatedProfile.toXml(doc));
}
return associatedProfilesElement;
}
@Override
public AssociatedProfiles fromXml(Element item) {
this.associatedProfiles = new LinkedList<>();
if(item!=null){
NodeList associatedProfilesElement = item.getChildNodes();
for (int temp = 0; temp < associatedProfilesElement.getLength(); temp++) {
Node associatedProfileElement = associatedProfilesElement.item(temp);
if (associatedProfileElement.getNodeType() == Node.ELEMENT_NODE) {
this.associatedProfiles.add(new AssociatedProfile().fromXml((Element)associatedProfileElement));
}
}
}
return this;
}
}

View File

@ -3,6 +3,9 @@ package eu.eudat.models.dmp;
import eu.eudat.entities.*; import eu.eudat.entities.*;
import eu.eudat.models.DataModel; import eu.eudat.models.DataModel;
import eu.eudat.utilities.builders.DomainModelConverter; import eu.eudat.utilities.builders.DomainModelConverter;
import eu.eudat.utilities.builders.XmlBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.*; import java.util.*;
import java.util.stream.Collector; import java.util.stream.Collector;
@ -14,10 +17,13 @@ public class DataManagementPlan implements DataModel<DMP>{
private UUID previous; private UUID previous;
private int version; private int version;
private int status; private int status;
private String description;
private AssociatedProfiles associatedProfile;
private eu.eudat.models.dmp.Project project; private eu.eudat.models.dmp.Project project;
private List<Organisation> organizations; private List<Organisation> organisations;
private List<Researcher> researchers; private List<Researcher> researchers;
private UserInfo creator; private UserInfo creator;
private Date created;
public UUID getId() { public UUID getId() {
return id; return id;
} }
@ -50,12 +56,12 @@ public class DataManagementPlan implements DataModel<DMP>{
this.version = version; this.version = version;
} }
public List<Organisation> getOrganizations() { public List<Organisation> getOrganisations() {
return organizations; return organisations;
} }
public void setOrganizations(List<Organisation> organizations) { public void setOrganisations(List<Organisation> organizations) {
this.organizations = organizations; this.organisations = organizations;
} }
public List<Researcher> getResearchers() { public List<Researcher> getResearchers() {
@ -90,10 +96,34 @@ public class DataManagementPlan implements DataModel<DMP>{
this.creator = creator; this.creator = creator;
} }
public AssociatedProfiles getAssociatedProfile() {
return associatedProfile;
}
public void setAssociatedProfile(AssociatedProfiles associatedProfile) {
this.associatedProfile = associatedProfile;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override @Override
public void fromDataModel(DMP entity) throws InstantiationException, IllegalAccessException { public void fromDataModel(DMP entity) throws InstantiationException, IllegalAccessException {
this.id = entity.getId(); this.id = entity.getId();
this.organizations =new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().fromDataModel(entity.getOrganisations().stream().collect(Collectors.toList()),Organisation.class); this.organisations =new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().fromDataModel(entity.getOrganisations().stream().collect(Collectors.toList()),Organisation.class);
this.researchers =new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().fromDataModel(entity.getResearchers().stream().collect(Collectors.toList()),Researcher.class); this.researchers =new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().fromDataModel(entity.getResearchers().stream().collect(Collectors.toList()),Researcher.class);
this.version = entity.getVersion(); this.version = entity.getVersion();
this.previous = entity.getPrevious(); this.previous = entity.getPrevious();
@ -102,18 +132,35 @@ public class DataManagementPlan implements DataModel<DMP>{
this.project.fromDataModel(entity.getProject()); this.project.fromDataModel(entity.getProject());
this.creator = new eu.eudat.models.dmp.UserInfo(); this.creator = new eu.eudat.models.dmp.UserInfo();
if(entity.getCreator()!=null)this.creator.fromDataModel(entity.getCreator()); if(entity.getCreator()!=null)this.creator.fromDataModel(entity.getCreator());
if(entity.getAssociatedDmps()!=null&&!entity.getAssociatedDmps().isEmpty()){
Document viewStyleDoc = XmlBuilder.fromXml(entity.getAssociatedDmps());
Element root = (Element)viewStyleDoc.getDocumentElement();
this.associatedProfile = new AssociatedProfiles().fromXml(root);
}
this.created = entity.getCreated();
this.description = entity.getDescription();
} }
@Override @Override
public DMP toDataModel() { public DMP toDataModel() {
DMP dataManagementPlanEntity = new DMP(); DMP dataManagementPlanEntity = new DMP();
dataManagementPlanEntity.setId(this.id); dataManagementPlanEntity.setId(this.id);
dataManagementPlanEntity.setOrganisations(new HashSet<eu.eudat.entities.Organisation>(new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().toDataModel(this.organizations))); dataManagementPlanEntity.setOrganisations(new HashSet<eu.eudat.entities.Organisation>(new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().toDataModel(this.organisations)));
dataManagementPlanEntity.setResearchers(new HashSet<eu.eudat.entities.Researcher>(new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().toDataModel(this.researchers))); dataManagementPlanEntity.setResearchers(new HashSet<eu.eudat.entities.Researcher>(new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().toDataModel(this.researchers)));
dataManagementPlanEntity.setVersion(this.version); dataManagementPlanEntity.setVersion(this.version);
dataManagementPlanEntity.setPrevious(this.previous); dataManagementPlanEntity.setPrevious(this.previous);
dataManagementPlanEntity.setLabel(this.label); dataManagementPlanEntity.setLabel(this.label);
dataManagementPlanEntity.setProject(this.project.toDataModel()); dataManagementPlanEntity.setProject(this.project.toDataModel());
dataManagementPlanEntity.setStatus((short)this.status);
dataManagementPlanEntity.setDescription(this.description);
if(this.associatedProfile!=null) {
Document associatedProfileDoc = XmlBuilder.getDocument();
Element associatedProfileElement = this.associatedProfile.toXml(associatedProfileDoc);
associatedProfileDoc.appendChild(associatedProfileElement);
dataManagementPlanEntity.setAssociatedDmps(XmlBuilder.generateXml(associatedProfileDoc));
}
dataManagementPlanEntity.setCreated(this.created!=null?this.created:new Date());
return dataManagementPlanEntity; return dataManagementPlanEntity;
} }
} }

View File

@ -6,17 +6,17 @@ import eu.eudat.utilities.helpers.LabelGenerator;
import java.util.Date; import java.util.Date;
public class Organisation implements DataModel<eu.eudat.entities.Organisation>,LabelGenerator { public class Organisation implements DataModel<eu.eudat.entities.Organisation>,LabelGenerator {
private String pid; private String label;
private String name; private String name;
private String uri; private String id;
private int status; private int status;
public String getPid() { public String getLabel() {
return pid; return label;
} }
public void setPid(String pid) { public void setLabel(String label) {
this.pid = pid; this.label = label;
} }
public String getName() { public String getName() {
@ -27,27 +27,35 @@ public class Organisation implements DataModel<eu.eudat.entities.Organisation>,L
this.name = name; this.name = name;
} }
public String getUri() { public String getId() {
return uri; return id;
} }
public void setUri(String uri) { public void setId(String id) {
this.uri = uri; this.id = id;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
} }
@Override @Override
public void fromDataModel(eu.eudat.entities.Organisation entity) { public void fromDataModel(eu.eudat.entities.Organisation entity) {
this.pid = entity.getReference(); this.id = entity.getReference();
this.name = entity.getLabel(); this.name = entity.getLabel();
this.uri = entity.getUri(); this.label = entity.getUri();
} }
@Override @Override
public eu.eudat.entities.Organisation toDataModel() { public eu.eudat.entities.Organisation toDataModel() {
eu.eudat.entities.Organisation organisationEntity = new eu.eudat.entities.Organisation(); eu.eudat.entities.Organisation organisationEntity = new eu.eudat.entities.Organisation();
organisationEntity.setReference(this.pid); organisationEntity.setReference(this.id);
organisationEntity.setLabel(this.name); organisationEntity.setLabel(this.name);
organisationEntity.setUri(this.uri); organisationEntity.setUri(this.label);
organisationEntity.setCreated(new Date()); organisationEntity.setCreated(new Date());
organisationEntity.setStatus((short)this.status); organisationEntity.setStatus((short)this.status);
return organisationEntity; return organisationEntity;

View File

@ -6,17 +6,17 @@ import eu.eudat.utilities.helpers.LabelGenerator;
import java.util.Date; import java.util.Date;
public class Researcher implements DataModel<eu.eudat.entities.Researcher>,LabelGenerator { public class Researcher implements DataModel<eu.eudat.entities.Researcher>,LabelGenerator {
private String pid; private String label;
private String name; private String name;
private String uri; private String id;
private int status; private int status;
public String getPid() { public String getLabel() {
return pid; return label;
} }
public void setPid(String pid) { public void setLabel(String label) {
this.pid = pid; this.label = label;
} }
public String getName() { public String getName() {
@ -27,12 +27,12 @@ public class Researcher implements DataModel<eu.eudat.entities.Researcher>,Label
this.name = name; this.name = name;
} }
public String getUri() { public String getId() {
return uri; return id;
} }
public void setUri(String uri) { public void setId(String id) {
this.uri = uri; this.id = id;
} }
public int getStatus() { public int getStatus() {
@ -45,17 +45,18 @@ public class Researcher implements DataModel<eu.eudat.entities.Researcher>,Label
@Override @Override
public void fromDataModel(eu.eudat.entities.Researcher entity) { public void fromDataModel(eu.eudat.entities.Researcher entity) {
this.pid = entity.getReference(); this.id = entity.getReference();
this.label = entity.getUri();
this.name = entity.getLabel(); this.name = entity.getLabel();
this.status = entity.getStatus(); this.status = entity.getStatus();
this.uri = entity.getUri();
} }
@Override @Override
public eu.eudat.entities.Researcher toDataModel() { public eu.eudat.entities.Researcher toDataModel() {
eu.eudat.entities.Researcher researcher = new eu.eudat.entities.Researcher(); eu.eudat.entities.Researcher researcher = new eu.eudat.entities.Researcher();
researcher.setReference(this.pid); researcher.setReference(this.id);
researcher.setLabel(this.name); researcher.setLabel(this.name);
researcher.setUri(this.label);
researcher.setCreated(new Date()); researcher.setCreated(new Date());
researcher.setStatus((short)this.status); researcher.setStatus((short)this.status);
return researcher; return researcher;

View File

@ -1,18 +1,11 @@
package eu.eudat.models.external; package eu.eudat.models.external;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* Created by ikalyvas on 12/19/2017. * Created by ikalyvas on 12/19/2017.
*/ */
public abstract class ExternalListingItem<T> implements ExternalItem<T>{ public abstract class ExternalListingItem<T> extends ArrayList<ExternalSourcesItemModel> implements ExternalItem<T> {
private List<ExternalSourcesItemModel> data;
public List<ExternalSourcesItemModel> getData() {
return data;
}
public void setData(List<ExternalSourcesItemModel> data) {
this.data = data;
}
} }

View File

@ -10,15 +10,13 @@ import java.util.Map;
public class OrganisationsExternalSourcesModel extends ExternalListingItem<OrganisationsExternalSourcesModel>{ public class OrganisationsExternalSourcesModel extends ExternalListingItem<OrganisationsExternalSourcesModel>{
@Override @Override
public OrganisationsExternalSourcesModel fromExternalItem(List<Map<String,String>> values) { public OrganisationsExternalSourcesModel fromExternalItem(List<Map<String,String>> values) {
List<ExternalSourcesItemModel> items = new LinkedList<>();
for(Map<String,String> item : values){ for(Map<String,String> item : values){
ExternalSourcesItemModel model = new ExternalSourcesItemModel(); ExternalSourcesItemModel model = new ExternalSourcesItemModel();
model.setId(item.get("pid")); model.setId(item.get("pid"));
model.setLabel(item.get("uri")); model.setLabel(item.get("uri"));
model.setName(item.get("name")); model.setName(item.get("name"));
items.add(model); this.add(model);
} }
this.setData(items);
return this; return this;
} }
} }

View File

@ -10,15 +10,13 @@ import java.util.Map;
public class ProjectsExternalSourcesModel extends ExternalListingItem<ProjectsExternalSourcesModel> { public class ProjectsExternalSourcesModel extends ExternalListingItem<ProjectsExternalSourcesModel> {
@Override @Override
public ProjectsExternalSourcesModel fromExternalItem(List<Map<String,String>> values) { public ProjectsExternalSourcesModel fromExternalItem(List<Map<String,String>> values) {
List<ExternalSourcesItemModel> items = new LinkedList<>();
for(Map<String,String> item : values){ for(Map<String,String> item : values){
ExternalSourcesItemModel model = new ExternalSourcesItemModel(); ExternalSourcesItemModel model = new ExternalSourcesItemModel();
model.setId(item.get("pid")); model.setId(item.get("pid"));
model.setLabel(item.get("uri")); model.setLabel(item.get("uri"));
model.setName(item.get("name")); model.setName(item.get("name"));
items.add(model); this.add(model);
} }
this.setData(items);
return this; return this;
} }
} }

View File

@ -10,15 +10,13 @@ import java.util.Map;
public class RegistriesExternalSourcesModel extends ExternalListingItem<RegistriesExternalSourcesModel> { public class RegistriesExternalSourcesModel extends ExternalListingItem<RegistriesExternalSourcesModel> {
@Override @Override
public RegistriesExternalSourcesModel fromExternalItem(List<Map<String,String>> values) { public RegistriesExternalSourcesModel fromExternalItem(List<Map<String,String>> values) {
List<ExternalSourcesItemModel> items = new LinkedList<>();
for(Map<String,String> item : values){ for(Map<String,String> item : values){
ExternalSourcesItemModel model = new ExternalSourcesItemModel(); ExternalSourcesItemModel model = new ExternalSourcesItemModel();
model.setId(item.get("pid")); model.setId(item.get("pid"));
model.setLabel(item.get("uri")); model.setLabel(item.get("uri"));
model.setName(item.get("name")); model.setName(item.get("name"));
items.add(model); this.add(model);
} }
this.setData(items);
return this; return this;
} }
} }

View File

@ -10,15 +10,13 @@ import java.util.Map;
public class ResearchersExternalSourcesModel extends ExternalListingItem<ResearchersExternalSourcesModel> { public class ResearchersExternalSourcesModel extends ExternalListingItem<ResearchersExternalSourcesModel> {
@Override @Override
public ResearchersExternalSourcesModel fromExternalItem(List<Map<String,String>> values) { public ResearchersExternalSourcesModel fromExternalItem(List<Map<String,String>> values) {
List<ExternalSourcesItemModel> items = new LinkedList<>();
for(Map<String,String> item : values){ for(Map<String,String> item : values){
ExternalSourcesItemModel model = new ExternalSourcesItemModel(); ExternalSourcesItemModel model = new ExternalSourcesItemModel();
model.setId(item.get("pid")); model.setId(item.get("pid"));
model.setLabel(item.get("uri")); model.setLabel(item.get("uri"));
model.setName(item.get("name")); model.setName(item.get("name"));
items.add(model); this.add(model);
} }
this.setData(items);
return this; return this;
} }
} }

View File

@ -10,15 +10,13 @@ import java.util.Map;
public class ServiceExternalSourcesModel extends ExternalListingItem<ServiceExternalSourcesModel> { public class ServiceExternalSourcesModel extends ExternalListingItem<ServiceExternalSourcesModel> {
@Override @Override
public ServiceExternalSourcesModel fromExternalItem(List<Map<String,String>> values) { public ServiceExternalSourcesModel fromExternalItem(List<Map<String,String>> values) {
List<ExternalSourcesItemModel> items = new LinkedList<>();
for(Map<String,String> item : values){ for(Map<String,String> item : values){
ExternalSourcesItemModel model = new ExternalSourcesItemModel(); ExternalSourcesItemModel model = new ExternalSourcesItemModel();
model.setId(item.get("pid")); model.setId(item.get("pid"));
model.setLabel(item.get("label")); model.setLabel(item.get("label"));
model.setName(item.get("name")); model.setName(item.get("name"));
items.add(model); this.add(model);
} }
this.setData(items);
return this; return this;
} }
} }

View File

@ -85,7 +85,7 @@ public class DataManagementPlanListingModel implements DataModel<DMP> {
this.id = entity.getId().toString(); this.id = entity.getId().toString();
this.label = entity.getLabel(); this.label = entity.getLabel();
this.project = entity.getProject().getLabel(); this.project = entity.getProject().getLabel();
this.profile = entity.getProfile().getLabel(); if(entity.getProfile()!=null)this.profile = entity.getProfile().getLabel();
this.organisations =LabelBuilder.getLabel(new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().fromDataModel(entity.getOrganisations().stream().collect(Collectors.toList()),Organisation.class)); this.organisations =LabelBuilder.getLabel(new DomainModelConverter<eu.eudat.entities.Organisation,Organisation>().fromDataModel(entity.getOrganisations().stream().collect(Collectors.toList()),Organisation.class));
this.researchers =LabelBuilder.getLabel(new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().fromDataModel(entity.getResearchers().stream().collect(Collectors.toList()),Researcher.class)); this.researchers =LabelBuilder.getLabel(new DomainModelConverter<eu.eudat.entities.Researcher,Researcher>().fromDataModel(entity.getResearchers().stream().collect(Collectors.toList()),Researcher.class));
this.version = ""+entity.getVersion(); this.version = ""+entity.getVersion();

View File

@ -87,7 +87,7 @@ export class DataManagementPlanEditorComponent implements AfterViewInit {
duration: 3000, duration: 3000,
extraClasses: ['snackbar-success'] extraClasses: ['snackbar-success']
}) })
this.router.navigate(['/dataManagementPlans']); this.router.navigate(['/dmps']);
} }
onCallbackError(error: any) { onCallbackError(error: any) {
@ -102,7 +102,7 @@ export class DataManagementPlanEditorComponent implements AfterViewInit {
} }
public cancel(): void { public cancel(): void {
this.router.navigate(['/dataManagementPlans']); this.router.navigate(['/dmps']);
} }
filterOrganisations(value: string): void { filterOrganisations(value: string): void {

View File

@ -23,9 +23,9 @@
</div> </div>
<h3 class="card-title">{{dashboardStatisticsData.totalProjectCount}}</h3> <h3 class="card-title">{{dashboardStatisticsData.totalProjectCount}}</h3>
<p class="card-description text-center"> <p class="card-description text-center">
This is good if your company size is between 2 and 10 Persons. OpenAIRE projects
</p> </p>
<button md-raised-button class="btn btn-rose btn-round">OPEN PROJECTS</button> <button md-raised-button class="btn btn-rose btn-round" [routerLink]=" ['/projects'] ">OPEN PROJECTS</button>
</div> </div>
</div> </div>
<div class="col-md-4 page-title"> <div class="col-md-4 page-title">
@ -36,9 +36,9 @@
</div> </div>
<h3 class="card-title">{{dashboardStatisticsData.totalDataManagementPlanCount}}</h3> <h3 class="card-title">{{dashboardStatisticsData.totalDataManagementPlanCount}}</h3>
<p class="card-description text-center"> <p class="card-description text-center">
This is good if your company size is between 2 and 10 Persons. My DMPs
</p> </p>
<button md-raised-button class="btn btn-rose btn-round">OPEN DMPs</button> <button md-raised-button class="btn btn-rose btn-round" [routerLink]=" ['/dmps'] ">OPEN DMPs</button>
</div> </div>
</div> </div>
<div class="col-md-4 page-title"> <div class="col-md-4 page-title">
@ -49,9 +49,9 @@
</div> </div>
<h3 class="card-title">{{dashboardStatisticsData.totalDataSetCount}}</h3> <h3 class="card-title">{{dashboardStatisticsData.totalDataSetCount}}</h3>
<p class="card-description text-center"> <p class="card-description text-center">
This is good if your company size is between 2 and 10 Persons. My Datasets
</p> </p>
<button md-raised-button class="btn btn-rose btn-round">OPEN DATASETS</button> <button md-raised-button class="btn btn-rose btn-round" [routerLink]=" ['/datasets'] ">OPEN DATASETS</button>
</div> </div>
</div> </div>
</div> </div>
@ -68,6 +68,7 @@
headerIcon="list" headerIcon="list"
category="Projects" category="Projects"
footContent="open projects" footContent="open projects"
routelLink= '/projects'
footerIcon="open_in_new" footerIcon="open_in_new"
linearColor="linear-gradient(60deg, #ffa726, #fb8c00)" linearColor="linear-gradient(60deg, #ffa726, #fb8c00)"
boxShadow="0 4px 20px 0 rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(255, 152, 0, 0.4)"> boxShadow="0 4px 20px 0 rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(255, 152, 0, 0.4)">
@ -79,6 +80,7 @@
headerIcon="mode_edit" headerIcon="mode_edit"
category="DMPs" category="DMPs"
footContent="open DMPs" footContent="open DMPs"
routelLink= '/dmps'
footerIcon="open_in_new" footerIcon="open_in_new"
linearColor="linear-gradient(60deg, #ef5350, #e53935)" linearColor="linear-gradient(60deg, #ef5350, #e53935)"
boxShadow="0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(244, 67, 54, 0.4)"> boxShadow="0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(244, 67, 54, 0.4)">
@ -90,6 +92,7 @@
headerIcon="subject" headerIcon="subject"
category="Datasets" category="Datasets"
footContent="open datasets" footContent="open datasets"
routelLink= '/datasets'
footerIcon="open_in_new" footerIcon="open_in_new"
linearColor="linear-gradient(60deg, #26c6da, #00acc1)" linearColor="linear-gradient(60deg, #26c6da, #00acc1)"
boxShadow="0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(0, 188, 212, 0.4)"> boxShadow="0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(0, 188, 212, 0.4)">

View File

@ -40,13 +40,14 @@ export class DataManagementPlanModel implements Serializable<DataManagementPlanM
if (context == null) { context = this.createValidationContext(); } if (context == null) { context = this.createValidationContext(); }
const formGroup = new FormBuilder().group({ const formGroup = new FormBuilder().group({
id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators],
label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators],
previous: [{ value: this.previous, disabled: disabled }, context.getValidation('previous').validators], previous: [{ value: this.previous, disabled: disabled }, context.getValidation('previous').validators],
version: [{ value: this.version, disabled: disabled }, context.getValidation('version').validators], version: [{ value: this.version, disabled: disabled }, context.getValidation('version').validators],
status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators],
description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators],
project: [{ value: this.project, disabled: disabled }, context.getValidation('project').validators], project: [{ value: this.project, disabled: disabled }, context.getValidation('project').validators],
organisations: [{ value: this.organisations, disabled: disabled }, context.getValidation('description').validators], organisations: [{ value: this.organisations, disabled: disabled }, context.getValidation('organisations').validators],
researchers: [{ value: this.researchers, disabled: disabled }, context.getValidation('researchers').validators], researchers: [{ value: this.researchers, disabled: disabled }, context.getValidation('researchers').validators],
}); });
@ -55,14 +56,15 @@ export class DataManagementPlanModel implements Serializable<DataManagementPlanM
createValidationContext(): ValidationContext { createValidationContext(): ValidationContext {
const baseContext: ValidationContext = new ValidationContext(); const baseContext: ValidationContext = new ValidationContext();
baseContext.validation.push({ key: 'id', validators: [ BackendErrorValidator(this.errorModel, 'id')] });
baseContext.validation.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'label')] }); baseContext.validation.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'label')] });
baseContext.validation.push({ key: 'previous', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'previous')] }); baseContext.validation.push({ key: 'previous', validators: [BackendErrorValidator(this.errorModel, 'previous')] });
baseContext.validation.push({ key: 'version', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'version')] }); baseContext.validation.push({ key: 'version', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'version')] });
baseContext.validation.push({ key: 'status', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'status')] }); baseContext.validation.push({ key: 'status', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'status')] });
baseContext.validation.push({ key: 'description', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'description')] }); baseContext.validation.push({ key: 'description', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'description')] });
baseContext.validation.push({ key: 'project', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'project')] }); baseContext.validation.push({ key: 'project', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'project')] });
baseContext.validation.push({ key: 'organisations', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'organisations')] }); baseContext.validation.push({ key: 'organisations', validators: [BackendErrorValidator(this.errorModel, 'organisations')] });
baseContext.validation.push({ key: 'researchers', validators: [Validators.required, BackendErrorValidator(this.errorModel, 'researchers')] }); baseContext.validation.push({ key: 'researchers', validators: [BackendErrorValidator(this.errorModel, 'researchers')] });
return baseContext; return baseContext;
} }

View File

@ -7,7 +7,7 @@
<h3 class="title">{{ title }}</h3> <h3 class="title">{{ title }}</h3>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<a style="cursor:pointer;"><i class="material-icons text-danger">{{ footerIcon }}</i> {{ footContent }}</a> <a style="cursor:pointer;" (click)= "navigateToUrl()"><i class="material-icons text-danger">{{ footerIcon }}</i> {{ footContent }}</a>
</div> </div>
</div> </div>

View File

@ -1,4 +1,5 @@
import { Component, OnInit, Input } from '@angular/core'; import { Component, OnInit, Input } from '@angular/core';
import { Router } from '@angular/router';
@Component({ @Component({
selector: 'app-figurecard', selector: 'app-figurecard',
@ -13,9 +14,16 @@ export class FigurecardComponent implements OnInit {
@Input() footContent: string; @Input() footContent: string;
@Input() linearColor: string; @Input() linearColor: string;
@Input() boxShadow: string; @Input() boxShadow: string;
constructor() { } @Input() routelLink: string;
constructor(private router:Router) { }
ngOnInit() { ngOnInit() {
} }
navigateToUrl(){
this.router.navigate([this.routelLink]);
}
} }