no message

This commit is contained in:
annabakouli 2018-01-11 18:19:15 +02:00
parent f34b39d4c1
commit 9b3f58f31a
25 changed files with 27073 additions and 325 deletions

View File

@ -14,18 +14,18 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@Entity @Entity
@Table(name="\"DMP\"") @Table(name = "\"DMP\"")
@NamedEntityGraphs({ @NamedEntityGraphs({
@NamedEntityGraph( @NamedEntityGraph(
name = "organisationsAndResearchers", name = "organisationsAndResearchers",
attributeNodes = {@NamedAttributeNode("organisations"),@NamedAttributeNode("researchers")}), attributeNodes = {@NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")}),
@NamedEntityGraph( @NamedEntityGraph(
name = "fullyDetailed", name = "fullyDetailed",
attributeNodes = { attributeNodes = {
@NamedAttributeNode("project"),@NamedAttributeNode("profile"), @NamedAttributeNode("project"), @NamedAttributeNode("profile"),
@NamedAttributeNode("users"),@NamedAttributeNode("organisations"),@NamedAttributeNode("researchers")}) @NamedAttributeNode("users"), @NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")})
}) })
public class DMP implements Serializable,DataEntity<DMP> { public class DMP implements Serializable, DataEntity<DMP> {
public static Set<String> getHints() { public static Set<String> getHints() {
return hints; return hints;
@ -41,7 +41,7 @@ public class DMP implements Serializable,DataEntity<DMP> {
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)") @Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id; private UUID id;
@Type(type="org.hibernate.type.PostgresUUIDType") @Type(type = "org.hibernate.type.PostgresUUIDType")
@Column(name = "\"Previous\"") @Column(name = "\"Previous\"")
private UUID previous; private UUID previous;
@ -60,7 +60,7 @@ public class DMP implements Serializable,DataEntity<DMP> {
private Project project; private Project project;
@Type(type="eu.eudat.typedefinition.XMLType") @Type(type = "eu.eudat.typedefinition.XMLType")
@Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true) @Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true)
private String associatedDmps; private String associatedDmps;
@ -75,25 +75,25 @@ public class DMP implements Serializable,DataEntity<DMP> {
@OneToMany(fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name="\"DMPOrganisation\"", @JoinTable(name = "\"DMPOrganisation\"",
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")}, joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns={@JoinColumn(name="\"Organisation\"", referencedColumnName="\"ID\"")} inverseJoinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")}
) )
private Set<Organisation> organisations; private Set<Organisation> organisations;
@OneToMany(fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name="\"DMPResearcher\"", @JoinTable(name = "\"DMPResearcher\"",
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")}, joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns={@JoinColumn(name="\"Researcher\"", referencedColumnName="\"ID\"")} inverseJoinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")}
) )
private Set<Researcher> researchers; private Set<Researcher> researchers;
@OneToMany(fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name="\"UserDMP\"", @JoinTable(name = "\"UserDMP\"",
joinColumns={@JoinColumn(name="dmp", referencedColumnName="\"ID\"")}, joinColumns = {@JoinColumn(name = "dmp", referencedColumnName = "\"ID\"")},
inverseJoinColumns={@JoinColumn(name="usr", referencedColumnName="id")} inverseJoinColumns = {@JoinColumn(name = "usr", referencedColumnName = "id")}
) )
private Set<UserInfo> users; private Set<UserInfo> users;
@ -163,7 +163,6 @@ public class DMP implements Serializable,DataEntity<DMP> {
} }
public Set<UserInfo> getUsers() { public Set<UserInfo> getUsers() {
return users; return users;
} }
@ -262,7 +261,7 @@ public class DMP implements Serializable,DataEntity<DMP> {
this.description = entity.getDescription(); this.description = entity.getDescription();
this.researchers = entity.getResearchers(); this.researchers = entity.getResearchers();
this.organisations = entity.getOrganisations(); this.organisations = entity.getOrganisations();
this.users = entity.getUsers(); if (entity.getUsers() != null) this.users = entity.getUsers();
} }
@Override @Override

View File

@ -21,6 +21,7 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
private String extendedDescription; private String extendedDescription;
private Multiplicity multiplicity; private Multiplicity multiplicity;
private boolean hasCommentField; private boolean hasCommentField;
private String commentFieldValue;
public List<Field> getFields() { public List<Field> getFields() {
return fields; return fields;
} }
@ -85,12 +86,19 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
this.hasCommentField = hasCommentField; this.hasCommentField = hasCommentField;
} }
public String getCommentFieldValue() {
return commentFieldValue;
}
public void setCommentFieldValue(String commentFieldValue) {
this.commentFieldValue = commentFieldValue;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element fieldSet = doc.createElement("fieldSet"); Element fieldSet = doc.createElement("fieldSet");
fieldSet.setAttribute("id", this.id); fieldSet.setAttribute("id", this.id);
fieldSet.setAttribute("ordinal", ""+this.ordinal); fieldSet.setAttribute("ordinal", ""+this.ordinal);
fieldSet.setAttribute("hasCommentField",""+this.hasCommentField);
Element title = doc.createElement("title"); Element title = doc.createElement("title");
title.setTextContent(this.title); title.setTextContent(this.title);
@ -104,12 +112,17 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
multiplicity.setAttribute("min", ""+this.multiplicity.getMin()); multiplicity.setAttribute("min", ""+this.multiplicity.getMin());
multiplicity.setAttribute("max", ""+this.multiplicity.getMax()); multiplicity.setAttribute("max", ""+this.multiplicity.getMax());
Element commentField = doc.createElement("commentField");
commentField.setAttribute("hasCommentField",""+this.hasCommentField);
commentField.setAttribute("commentFieldValue",this.commentFieldValue);
Element fieldsElement = doc.createElement("fields"); Element fieldsElement = doc.createElement("fields");
for(Field field : fields){ for(Field field : fields){
fieldsElement.appendChild(field.toXml(doc)); fieldsElement.appendChild(field.toXml(doc));
} }
fieldSet.appendChild(commentField);
fieldSet.appendChild(fieldsElement); fieldSet.appendChild(fieldsElement);
fieldSet.appendChild(multiplicity); fieldSet.appendChild(multiplicity);
fieldSet.appendChild(title); fieldSet.appendChild(title);
@ -123,14 +136,15 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
this.id = element.getAttribute("id"); this.id = element.getAttribute("id");
this.ordinal = Integer.parseInt(element.getAttribute("ordinal")); this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
this.fields = new LinkedList(); this.fields = new LinkedList();
this.hasCommentField = Boolean.parseBoolean(element.getAttribute("hasCommentField"));
Element title = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title"); Element title = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title");
this.title = title.getTextContent(); this.title = title.getTextContent();
Element description = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description"); Element description = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description");
this.description = description.getTextContent(); this.description = description.getTextContent();
Element extendedDescription = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription"); Element extendedDescription = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription");
this.extendedDescription = extendedDescription.getTextContent(); this.extendedDescription = extendedDescription.getTextContent();
Element commentField = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "commentField");
this.hasCommentField = Boolean.parseBoolean(commentField.getAttribute("hasCommentField"));
this.commentFieldValue = commentField.getAttribute("commentFieldValue");
Element fields = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields"); Element fields = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields");
if(fields!=null){ if(fields!=null){

View File

@ -25,77 +25,78 @@ import eu.eudat.utilities.builders.DomainModelConverter;
public class DataManagementPlanManager { public class DataManagementPlanManager {
public DataTableData<DataManagementPlanListingModel> getPaged(ApiContext apiContext, DataManagementPlanTableRequest dataManagementPlanTableRequest,Principal principal) throws IllegalAccessException, InstantiationException{ public DataTableData<DataManagementPlanListingModel> getPaged(ApiContext apiContext, DataManagementPlanTableRequest dataManagementPlanTableRequest, Principal principal) throws IllegalAccessException, InstantiationException {
UserInfo userInfo = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId()); UserInfo userInfo = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
QueryableList<DMP> items = apiContext.getDatabaseRepository().getDmpDao().getWithCriteria(dataManagementPlanTableRequest.getCriteria()); QueryableList<DMP> items = apiContext.getDatabaseRepository().getDmpDao().getWithCriteria(dataManagementPlanTableRequest.getCriteria());
QueryableList<DMP> authItems = apiContext.getDatabaseRepository().getDmpDao().getAuthenticated(items,userInfo); QueryableList<DMP> authItems = apiContext.getDatabaseRepository().getDmpDao().getAuthenticated(items, userInfo);
QueryableList<DMP> pagedItems = PaginationManager.applyPaging(authItems,dataManagementPlanTableRequest); QueryableList<DMP> pagedItems = PaginationManager.applyPaging(authItems, dataManagementPlanTableRequest);
if(dataManagementPlanTableRequest.getWithHint())pagedItems.withHint("fullyDetailed"); if (dataManagementPlanTableRequest.getWithHint()) pagedItems.withHint("fullyDetailed");
List<DataManagementPlanListingModel> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlanListingModel>().fromDataModel( pagedItems.toList(), DataManagementPlanListingModel.class); List<DataManagementPlanListingModel> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlanListingModel>().fromDataModel(pagedItems.toList(), DataManagementPlanListingModel.class);
DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<DataManagementPlanListingModel>(); DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<DataManagementPlanListingModel>();
dataTable.setData(datamanagementPlans); dataTable.setData(datamanagementPlans);
dataTable.setTotalCount(items.count()); dataTable.setTotalCount(items.count());
return dataTable; return dataTable;
} }
public eu.eudat.models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id,Principal principal) throws InstantiationException, IllegalAccessException{ public eu.eudat.models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id, Principal principal) throws InstantiationException, IllegalAccessException {
DMP dataManagementPlanEntity = dmpsRepository.find(UUID.fromString(id)); DMP dataManagementPlanEntity = dmpsRepository.find(UUID.fromString(id));
if(dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size()==0)throw new UnauthorisedException(); if (dataManagementPlanEntity.getCreator().getId()!=principal.getId()&&dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan(); eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan();
datamanagementPlan.fromDataModel(dataManagementPlanEntity); datamanagementPlan.fromDataModel(dataManagementPlanEntity);
return datamanagementPlan; return datamanagementPlan;
} }
public List<DataManagementPlan> getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException{ public List<DataManagementPlan> getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException {
QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria()); QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria());
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(ApiContext apiContext, DataManagementPlan dataManagementPlan, Principal principal){ public static void createOrUpdate(ApiContext apiContext, DataManagementPlan dataManagementPlan, Principal principal) {
DMP newDmp = dataManagementPlan.toDataModel(); DMP newDmp = dataManagementPlan.toDataModel();
createOrganisationsIfTheyDontExist(newDmp,apiContext.getDatabaseRepository().getOrganisationDao()); createOrganisationsIfTheyDontExist(newDmp, apiContext.getDatabaseRepository().getOrganisationDao());
createResearchersIfTheyDontExist(newDmp,apiContext.getDatabaseRepository().getResearcherDao()); createResearchersIfTheyDontExist(newDmp, apiContext.getDatabaseRepository().getResearcherDao());
UserInfo user = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId()); UserInfo user = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
createProjectIfItDoesntExist(newDmp,apiContext.getDatabaseRepository().getProjectDao(),user); createProjectIfItDoesntExist(newDmp, apiContext.getDatabaseRepository().getProjectDao(), user);
newDmp.setCreator(user); newDmp.setCreator(user);
apiContext.getDatabaseRepository().getDmpDao().createOrUpdate(newDmp); apiContext.getDatabaseRepository().getDmpDao().createOrUpdate(newDmp);
} }
private static void createResearchersIfTheyDontExist(DMP newDmp,ResearcherDao researcherRepository){ private static void createResearchersIfTheyDontExist(DMP newDmp, ResearcherDao researcherRepository) {
if(newDmp.getResearchers()!=null&&!newDmp.getResearchers().isEmpty()){ if (newDmp.getResearchers() != null && !newDmp.getResearchers().isEmpty()) {
for(eu.eudat.entities.Researcher researcher : newDmp.getResearchers()){ for (eu.eudat.entities.Researcher researcher : newDmp.getResearchers()) {
ResearcherCriteria criteria = new ResearcherCriteria(); ResearcherCriteria criteria = new ResearcherCriteria();
criteria.setLike(researcher.getReference()); criteria.setLike(researcher.getReference());
List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria); List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria);
if(entries!=null&&!entries.isEmpty())researcher.setId(entries.get(0).getId()); if (entries != null && !entries.isEmpty()) researcher.setId(entries.get(0).getId());
else researcher = researcherRepository.create(researcher); else researcher = researcherRepository.create(researcher);
} }
} }
} }
private static void createOrganisationsIfTheyDontExist(DMP newDmp,OrganisationDao organisationRepository){ private static void createOrganisationsIfTheyDontExist(DMP newDmp, OrganisationDao organisationRepository) {
if(newDmp.getOrganisations()!=null&&!newDmp.getOrganisations().isEmpty()){ if (newDmp.getOrganisations() != null && !newDmp.getOrganisations().isEmpty()) {
for(eu.eudat.entities.Organisation organisation: newDmp.getOrganisations()){ for (eu.eudat.entities.Organisation organisation : newDmp.getOrganisations()) {
OrganisationCriteria criteria = new OrganisationCriteria(); OrganisationCriteria criteria = new OrganisationCriteria();
criteria.setLike(organisation.getReference()); criteria.setLike(organisation.getReference());
List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria); List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria);
if(entries!=null&&!entries.isEmpty())organisation.setId(entries.get(0).getId()); if (entries != null && !entries.isEmpty()) organisation.setId(entries.get(0).getId());
else organisation = organisationRepository.create(organisation); else organisation = organisationRepository.create(organisation);
} }
} }
} }
private static void createProjectIfItDoesntExist(DMP newDmp,ProjectDao projectDao,UserInfo userInfo){ private static void createProjectIfItDoesntExist(DMP newDmp, ProjectDao projectDao, UserInfo userInfo) {
if(newDmp.getProject()!=null){ if (newDmp.getProject() != null) {
Project project = newDmp.getProject(); Project project = newDmp.getProject();
ProjectCriteria criteria = new ProjectCriteria(); ProjectCriteria criteria = new ProjectCriteria();
criteria.setLike(project.getReference()); criteria.setLike(project.getReference());
List<eu.eudat.entities.Project> entries = projectDao.getWithCriteria(criteria).toList(); List<eu.eudat.entities.Project> entries = projectDao.getWithCriteria(criteria).toList();
if(entries!=null&&!entries.isEmpty())project.setId(entries.get(0).getId()); if (entries != null && !entries.isEmpty()) project.setId(entries.get(0).getId());
else{ else {
project.setCreationUser(userInfo); project.setCreationUser(userInfo);
projectDao.createOrUpdate(project); projectDao.createOrUpdate(project);
} }

View File

@ -22,6 +22,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
private List<Field> fields; private List<Field> fields;
private List<FieldSet> multiplicityItems; private List<FieldSet> multiplicityItems;
private boolean hasCommentField; private boolean hasCommentField;
private String commentFieldValue;
public List<Field> getFields() { public List<Field> getFields() {
Collections.sort(this.fields); Collections.sort(this.fields);
return fields; return fields;
@ -79,8 +80,6 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.multiplicity = multiplicity; this.multiplicity = multiplicity;
} }
public List<FieldSet> getMultiplicityItems() { public List<FieldSet> getMultiplicityItems() {
return multiplicityItems; return multiplicityItems;
} }
@ -93,12 +92,20 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.ordinal = ordinal; this.ordinal = ordinal;
} }
public void setHasCommentField(boolean hasCommentField) {
this.hasCommentField = hasCommentField;
}
public boolean getHasCommentField() { public boolean getHasCommentField() {
return hasCommentField; return hasCommentField;
} }
public void setHasCommentField(boolean hasCommentField) { public String getCommentFieldValue() {
this.hasCommentField = hasCommentField; return commentFieldValue;
}
public void setCommentFieldValue(String commentFieldValue) {
this.commentFieldValue = commentFieldValue;
} }
@Override @Override
@ -109,6 +116,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
item.setOrdinal(this.ordinal); item.setOrdinal(this.ordinal);
item.setHasCommentField(this.hasCommentField); item.setHasCommentField(this.hasCommentField);
item.setMultiplicity(this.multiplicity); item.setMultiplicity(this.multiplicity);
item.setCommentFieldValue(this.commentFieldValue);
return item; return item;
} }
@ -122,6 +130,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.extendedDescription = item.getExtendedDescription(); this.extendedDescription = item.getExtendedDescription();
this.hasCommentField = item.getHasCommentField(); this.hasCommentField = item.getHasCommentField();
this.multiplicity = item.getMultiplicity(); this.multiplicity = item.getMultiplicity();
this.commentFieldValue = item.getCommentFieldValue();
} }
@Override @Override

View File

@ -47,7 +47,7 @@ public class LinkedInTokenValidator implements TokenValidator {
LinkedInProfile linkedInProfile = linkedInService.profileOperations().getUserProfile(); LinkedInProfile linkedInProfile = linkedInService.profileOperations().getUserProfile();
LoginProviderUser user = new LoginProviderUser(); LoginProviderUser user = new LoginProviderUser();
if (user.getEmail() == null) throw new UnauthorisedException("Cannot login user.LinkedIn account did not provide email"); if (linkedInProfile.getEmailAddress() == null) throw new UnauthorisedException("Cannot login user.LinkedIn account did not provide email");
user.setEmail(linkedInProfile.getEmailAddress()); user.setEmail(linkedInProfile.getEmailAddress());
user.setIsVerified(true); //TODO user.setIsVerified(true); //TODO
user.setName(linkedInProfile.getFirstName() + " " + linkedInProfile.getLastName()); user.setName(linkedInProfile.getFirstName() + " " + linkedInProfile.getLastName());

View File

@ -80,7 +80,7 @@ public class AuthenticationService {
credential.setCreationTime(new Date()); credential.setCreationTime(new Date());
credential.setStatus(1); credential.setStatus(1);
credential.setLastUpdateTime(new Date()); credential.setLastUpdateTime(new Date());
credential.setProvider((int) TokenValidatorFactoryImpl.LoginProvider.FACEBOOK.getValue()); credential.setProvider((int) profile.getProvider().getValue());
credential.setSecret(profile.getSecret()); credential.setSecret(profile.getSecret());
if(userInfo == null) { if(userInfo == null) {
userInfo = new UserInfo(); userInfo = new UserInfo();

View File

@ -19,7 +19,7 @@ configuration.externalUrls = file:///C:\\Users\\ikalyvas\\Documents\\Projects\\O
spring.mail.default-encoding=UTF-8 spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.gmail.com spring.mail.host=smtp.gmail.com
spring.mail.username=kalivasioan@gmail.com spring.mail.username=kalivasioan@gmail.com
spring.mail.password=A3b*1*92 spring.mail.password=A3b*1*92giannis
spring.mail.port=587 spring.mail.port=587
spring.mail.protocol=smtp spring.mail.protocol=smtp
spring.mail.test-connection=false spring.mail.test-connection=false
@ -38,7 +38,7 @@ google.login.clientId = 524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googl
########################LINKEDIN LOGIN Properties#############################HiR4hQH9HNubKC5iKQy0l4mAZ ########################LINKEDIN LOGIN Properties#############################HiR4hQH9HNubKC5iKQy0l4mAZ
linkedin.login.clientId = 86bl8vfk77clh9 linkedin.login.clientId = 86bl8vfk77clh9
linkedin.login.clientSecret = 2OCO9e3wKylW05Tt linkedin.login.clientSecret = 2OCO9e3wKylW05Tt
linkedin.login.redirect_uri = 2OCO9e3wKylW05Tt linkedin.login.redirect_uri = http://localhost:4200/login/linkedin
########################LINKEDIN LOGIN Properties############################# ########################LINKEDIN LOGIN Properties#############################
twitter.login.clientId = HiR4hQH9HNubKC5iKQy0l4mAZ twitter.login.clientId = HiR4hQH9HNubKC5iKQy0l4mAZ

View File

@ -3,8 +3,9 @@
<app-datasets-criteria-component></app-datasets-criteria-component> <app-datasets-criteria-component></app-datasets-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
<!-- Column Definition: Name --> <!-- Column Definition: Name -->

View File

@ -2,10 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;
right: 20px !important; right: 20px !important;

View File

@ -11,10 +11,13 @@
} }
.project-editor { .project-editor {
.mat-form-field-full-width{
mat-form-field { mat-form-field {
width: 100%; width: 100%;
padding: 3px; padding: 3px;
} }
}
.mat-card { .mat-card {
margin: 16px 0; margin: 16px 0;

View File

@ -5,14 +5,14 @@
<mat-card-title *ngIf="!isNew">{{'DATASET-EDITOR.TITLE.EDIT' | translate}} {{dataset.label}}</mat-card-title> <mat-card-title *ngIf="!isNew">{{'DATASET-EDITOR.TITLE.EDIT' | translate}} {{dataset.label}}</mat-card-title>
<mat-card-content> <mat-card-content>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" <input matInput placeholder="{{'DATASET-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label"
required> required>
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error> <mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error>
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri" required> <input matInput placeholder="{{'DATASET-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri" required>
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error> <mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>

View File

@ -3,8 +3,9 @@
<app-dmp-criteria-component></app-dmp-criteria-component> <app-dmp-criteria-component></app-dmp-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
@ -49,7 +50,7 @@
<mat-cell *matCellDef="let row"> <mat-cell *matCellDef="let row">
<mat-menu #actionsMenu="matMenu"> <mat-menu #actionsMenu="matMenu">
<button mat-menu-item (click)="rowClick(row.id)"><mat-icon>mode_edit</mat-icon>{{'DMP-LISTING.ACTIONS.EDIT' | translate}}</button> <button mat-menu-item (click)="rowClick(row.id)"><mat-icon>mode_edit</mat-icon>{{'DMP-LISTING.ACTIONS.EDIT' | translate}}</button>
<button mat-menu-item (click)="openShareDialog(row.id)"><mat-icon>insert_invitation</mat-icon>{{'DMP-LISTING.ACTIONS.INVITE' | translate}}</button> <button mat-menu-item (click)="openShareDialog(row.id,row.label)"><mat-icon>insert_invitation</mat-icon>{{'DMP-LISTING.ACTIONS.INVITE' | translate}}</button>
</mat-menu> </mat-menu>
<button mat-icon-button [matMenuTriggerFor]="actionsMenu"> <button mat-icon-button [matMenuTriggerFor]="actionsMenu">
<mat-icon>more_vert</mat-icon> <mat-icon>more_vert</mat-icon>

View File

@ -2,10 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;
right: 20px !important; right: 20px !important;

View File

@ -27,7 +27,7 @@ export class DataManagementPlanListingComponent implements OnInit {
@ViewChild(DataManagementPlanCriteriaComponent) criteria: DataManagementPlanCriteriaComponent; @ViewChild(DataManagementPlanCriteriaComponent) criteria: DataManagementPlanCriteriaComponent;
dataSource: DataManagementPlanDataSource | null; dataSource: DataManagementPlanDataSource | null;
displayedColumns: String[] = ['name', 'project', 'profile', 'researchers', 'organisations', 'version','actions']; displayedColumns: String[] = ['name', 'project', 'profile', 'researchers', 'organisations', 'version', 'actions'];
constructor( constructor(
private dataManagementPlanService: DataManagementPlanService, private dataManagementPlanService: DataManagementPlanService,
@ -58,12 +58,13 @@ export class DataManagementPlanListingComponent implements OnInit {
return defaultCriteria; return defaultCriteria;
} }
openShareDialog(rowId: any) { openShareDialog(rowId: any, rowName: any) {
let dialogRef = this.dialog.open(InvitationComponent, { let dialogRef = this.dialog.open(InvitationComponent, {
height: '200px', height: '200px',
width: '700px', width: '700px',
data: { data: {
dmpId: rowId dmpId: rowId,
dmpName: rowName
} }
}); });
} }

View File

@ -5,7 +5,7 @@
<mat-card-title *ngIf="!isNew">{{formGroup.get('label').value}}</mat-card-title> <mat-card-title *ngIf="!isNew">{{formGroup.get('label').value}}</mat-card-title>
<mat-card-content> <mat-card-content>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DMP-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" required> <input matInput placeholder="{{'DMP-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" required>
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error> <mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error>
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
@ -18,7 +18,7 @@
<mat-error *ngIf="formGroup.get('description').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('description').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
<auto-complete class="full-width" placeholder="{{'DMP-EDITOR.FIELDS.PROJECT' | translate}}" <auto-complete class="mat-form-field-full-width" placeholder="{{'DMP-EDITOR.FIELDS.PROJECT' | translate}}"
[configuration]="projectAutoCompleteConfiguration" [configuration]="projectAutoCompleteConfiguration"
titleKey="label" titleKey="label"
[control]="formGroup.get('project')" [control]="formGroup.get('project')"

View File

@ -11,10 +11,14 @@
} }
.data-management-plan-editor { .data-management-plan-editor {
.mat-form-field-full-width{
mat-form-field { mat-form-field {
width: 100%; width: 100%;
padding: 3px; padding: 3px;
} }
}
.mat-card { .mat-card {
margin: 16px 0; margin: 16px 0;

View File

@ -1,7 +1,8 @@
<div> <form *ngIf="formGroup" [formGroup]="formGroup">
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup"> <h1 mat-dialog-title>{{'INVITATION-EDITOR.TITLE' | translate}} {{data.dmpName}}</h1>
<td-chips color="accent" [items]="filteredUsers" formControlName="users" placeholder="{{'INVITATION-EDITOR.TITLE' | translate}}" <div mat-dialog-content>
(inputChange)="filterUsers($event)" [requireMatch]="false"> <td-chips color="accent" [items]="filteredUsers" formControlName="users" placeholder="{{'INVITATION-EDITOR.AUTOCOMPLETE-TITLE' | translate}}"
(inputChange)="filterUsers($event)" requireMatch>
<ng-template td-chip let-chip="chip"> <ng-template td-chip let-chip="chip">
<div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div> <div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div>
{{chip.name}} {{chip.name}}
@ -13,6 +14,10 @@
</ng-template> </ng-template>
<mat-progress-bar [style.height.px]="2" *ngIf="filteredUsersAsync" mode="indeterminate"></mat-progress-bar> <mat-progress-bar [style.height.px]="2" *ngIf="filteredUsersAsync" mode="indeterminate"></mat-progress-bar>
</td-chips> </td-chips>
</div>
<div mat-dialog-actions>
<div layout="row" class="full-width text-right" align="end">
<button mat-raised-button color="primary" (click)="send()" type="button">{{'INVITATION-EDITOR.ACTIONS.SEND-INVITATION' | translate}}</button> <button mat-raised-button color="primary" (click)="send()" type="button">{{'INVITATION-EDITOR.ACTIONS.SEND-INVITATION' | translate}}</button>
</form> </div>
</div> </div>
</form>

View File

@ -3,7 +3,9 @@
<app-projects-criteria-component></app-projects-criteria-component> <app-projects-criteria-component></app-projects-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
@ -41,9 +43,7 @@
<mat-row *matRowDef="let row; columns: displayedColumns" (click)="rowClick(row.id)"></mat-row> <mat-row *matRowDef="let row; columns: displayedColumns" (click)="rowClick(row.id)"></mat-row>
</mat-table> </mat-table>
<mat-paginator #paginator <mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]">
[length]="dataSource?.totalCount"
[pageSizeOptions]="[10, 25, 100]">
</mat-paginator> </mat-paginator>
</mat-card> </mat-card>

View File

@ -2,9 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;

View File

@ -159,7 +159,8 @@
} }
}, },
"INVITATION-EDITOR": { "INVITATION-EDITOR": {
"TITLE": "User/Email", "TITLE": "Send Invitations for ",
"AUTOCOMPLETE-TITLE": "User/Email",
"ACTIONS": { "ACTIONS": {
"SEND-INVITATION": "Send Invitations", "SEND-INVITATION": "Send Invitations",
"CANCEL": "Cancel" "CANCEL": "Cancel"

6680
hs_err_pid11912.log Normal file

File diff suppressed because it is too large Load Diff

6707
hs_err_pid11972.log Normal file

File diff suppressed because it is too large Load Diff

6608
hs_err_pid12228.log Normal file

File diff suppressed because it is too large Load Diff

6725
hs_err_pid12896.log Normal file

File diff suppressed because it is too large Load Diff