Commit changes before create a new module

roadmap
parent 9cb9cdb030
commit 6072708d8a

@ -0,0 +1,51 @@
package eu.eudat.migration.controllers;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.migration.dao.TemplateRepository;
import eu.eudat.migration.entities.Template;
import eu.eudat.migration.entities.User;
import eu.eudat.migration.services.DMPRoadmapService;
import eu.eudat.models.data.helpers.responses.ResponseItem;
import eu.eudat.types.ApiMessageCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/")
@ConditionalOnProperty(prefix = "roadmap", name="database.url")
public class MigrateController {
private final DMPRoadmapService roadmapMigration;
@Autowired
public MigrateController(DMPRoadmapService roadmapMigration) {
this.roadmapMigration = roadmapMigration;
}
@GetMapping(path = "template/all", produces = "application/json")
public ResponseEntity<List<Template>> getAllTemplates() {
return ResponseEntity.ok(this.roadmapMigration.getTemplates());
}
@GetMapping(path = "template/argos/memory", produces = "application/json")
public ResponseEntity<List<eu.eudat.models.data.admin.composite.DatasetProfile>> getDatasetProfiles() {
return ResponseEntity.ok(this.roadmapMigration.getDatesetProfiles());
}
@GetMapping(path = "user/all", produces = "application/json")
public ResponseEntity<List<User>> getAllUsers() {
return ResponseEntity.ok(this.roadmapMigration.getUsers());
}
@GetMapping(path = "migration/execute", produces = "application/json")
public ResponseEntity<Object> migrate() {
this.roadmapMigration.migrate();
return ResponseEntity.ok(new ResponseItem<UUID>().status(ApiMessageCode.NO_MESSAGE));
}
}

@ -1,44 +0,0 @@
package eu.eudat.migration.controllers;
import eu.eudat.data.entities.DatasetProfile;
import eu.eudat.migration.DMPRoadmapMigration;
import eu.eudat.migration.dao.TemplateRepository;
import eu.eudat.migration.entities.Template;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/template")
@ConditionalOnProperty(prefix = "roadmap", name="database.url")
public class TemplateController {
private final TemplateRepository templateRepository;
private final DMPRoadmapMigration roadmapMigration;
@Autowired
public TemplateController(TemplateRepository templateRepository, DMPRoadmapMigration roadmapMigration) {
this.templateRepository = templateRepository;
this.roadmapMigration = roadmapMigration;
}
@GetMapping(path = "/all", produces = "application/json")
public ResponseEntity<List<Template>> getAllTemplates() {
return ResponseEntity.ok(this.templateRepository.findAll());
}
@GetMapping(path = "/argos/memory", produces = "application/json")
public ResponseEntity<List<eu.eudat.models.data.admin.composite.DatasetProfile>> getDatasetProfiles() {
return ResponseEntity.ok(this.roadmapMigration.getDatesetProfiles());
}
@GetMapping(path = "/argos/saved", produces = "application/json")
public ResponseEntity<List<DatasetProfile>> getProfiles() {
return ResponseEntity.ok(this.roadmapMigration.getProfiles());
}
}

@ -0,0 +1,9 @@
package eu.eudat.migration.dao;
import eu.eudat.migration.entities.User;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.jpa.repository.JpaRepository;
@ConditionalOnProperty(prefix = "roadmap", name="database.url")
public interface UserRepository extends JpaRepository<User, Long> {
}

@ -0,0 +1,106 @@
package eu.eudat.migration.entities;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "answers")
public class Answer {
@Id
private Long id;
private String text;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "question_id")
private Question question;
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "answers_question_options",
joinColumns = {@JoinColumn(name = "answer_id")},
inverseJoinColumns = {@JoinColumn(name = "question_option_id")}
)
@LazyCollection(LazyCollectionOption.FALSE)
private Set<QuestionOption> questionOptions = new HashSet<>();
@Override
public String toString() {
return "Answer{" +
"id=" + id +
", text='" + text + '\'' +
", user=" + user +
", question=" + question +
", createdAt=" + createdAt +
", updatedAt=" + updatedAt +
", questionOptions=" + questionOptions +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Question getQuestion() {
return question;
}
public void setQuestion(Question question) {
this.question = question;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public Set<QuestionOption> getQuestionOptions() {
return questionOptions;
}
public void setQuestionOptions(Set<QuestionOption> questionOptions) {
this.questionOptions = questionOptions;
}
}

@ -0,0 +1,61 @@
package eu.eudat.migration.entities;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "perms")
public class Perm {
@Id
private Long id;
private String name;
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
@Override
public String toString() {
return "Perm{" +
"id=" + id +
", name='" + name + '\'' +
", createdAt=" + createdAt +
", updatedAt=" + updatedAt +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
}

@ -1,11 +1,13 @@
package eu.eudat.migration.entities;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.util.Date;
import java.util.*;
@Entity
@Table(name = "plans")
@SuppressWarnings("JpaAttributeTypeInspection")
public class Plan {
@Id
@ -51,6 +53,17 @@ public class Plan {
private String ethicalIssuesReport;
@Column(name = "funding_status")
private FundingStatus fundingStatus;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "roles",
joinColumns = {@JoinColumn(name = "plan_id")},
inverseJoinColumns = {@JoinColumn(name = "user_id")}
)
@LazyCollection(LazyCollectionOption.FALSE)
private Set<User> users = new HashSet<>();
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "plan_id")
@LazyCollection(LazyCollectionOption.FALSE)
private Set<Answer> answers = new HashSet<>();
public enum Visibility {
ORGANIZATION,
@ -224,4 +237,20 @@ public class Plan {
public void setFundingStatus(FundingStatus fundingStatus) {
this.fundingStatus = fundingStatus;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
public Set<Answer> getAnswers() {
return answers;
}
public void setAnswers(Set<Answer> answers) {
this.answers = answers;
}
}

@ -0,0 +1,126 @@
package eu.eudat.migration.entities;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "users")
public class User {
@Id
private Long id;
private String firstname;
private String surname;
private String email;
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "org_id")
private Organization organization;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "language_id")
private Language language;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "users_perms",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "perm_id")}
)
@LazyCollection(LazyCollectionOption.FALSE)
private Set<Perm> perms = new HashSet<>();
@Override
public String toString() {
return "User{" +
"id=" + id +
", firstname='" + firstname + '\'' +
", surname='" + surname + '\'' +
", email='" + email + '\'' +
", createdAt=" + createdAt +
", updatedAt=" + updatedAt +
", organization=" + organization +
", language=" + language +
", perms=" + perms +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public Organization getOrganization() {
return organization;
}
public void setOrganization(Organization organization) {
this.organization = organization;
}
public Language getLanguage() {
return language;
}
public void setLanguage(Language language) {
this.language = language;
}
public Set<Perm> getPerms() {
return perms;
}
public void setPerms(Set<Perm> perms) {
this.perms = perms;
}
}

@ -1,13 +1,11 @@
package eu.eudat.migration;
package eu.eudat.migration.services;
import eu.eudat.logic.managers.AdminManager;
import eu.eudat.logic.managers.MetricsManager;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.migration.dao.TemplateRepository;
import eu.eudat.migration.entities.Question;
import eu.eudat.migration.entities.QuestionFormat;
import eu.eudat.migration.entities.Template;
import eu.eudat.migration.entities.Theme;
import eu.eudat.migration.dao.UserRepository;
import eu.eudat.migration.entities.*;
import eu.eudat.models.data.admin.components.datasetprofile.Field;
import eu.eudat.models.data.admin.components.datasetprofile.FieldSet;
import eu.eudat.models.data.admin.components.datasetprofile.Page;
@ -17,43 +15,57 @@ import eu.eudat.models.data.components.commons.DefaultValue;
import eu.eudat.models.data.components.commons.Multiplicity;
import eu.eudat.models.data.components.commons.ViewStyle;
import eu.eudat.models.data.components.commons.Visibility;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
import eu.eudat.models.data.dmp.DataManagementPlanEditorModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
import eu.eudat.types.MetricNames;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Component
@Service
@ConditionalOnProperty(prefix = "roadmap", name = "database.url")
public class DMPRoadmapMigration implements CommandLineRunner {
public class DMPRoadmapService {
/** DMPRoadmap Repositories*/
private final TemplateRepository templateRepository;
private final UserRepository userRepository;
/** Argos beans */
private final ApiContext apiContext;
private final MetricsManager metricsManager;
/** Profiles */
/** Data */
private final List<DatasetProfile> datasetProfiles = new ArrayList<>();
private final List<eu.eudat.data.entities.DatasetProfile> profiles = new ArrayList<>();
private final List<DataManagementPlanEditorModel> dmps = new ArrayList<>();
private final List<DatasetWizardModel> datasets = new ArrayList<>();
/** Metadata */
private final Map<Long, UUID> groups = new HashMap<>();
@Autowired
public DMPRoadmapMigration(TemplateRepository templateRepository, ApiContext apiContext, MetricsManager metricsManager) {
public DMPRoadmapService(TemplateRepository templateRepository, UserRepository userRepository, ApiContext apiContext, MetricsManager metricsManager) {
this.templateRepository = templateRepository;
this.userRepository = userRepository;
this.apiContext = apiContext;
this.metricsManager = metricsManager;
}
@Override
public void run(String... args) {
public void migrate() {
List<Template> templates = templateRepository.findAll();
List<User> users = userRepository.findAll();
templates.forEach(template -> {
DatasetProfile datasetProfile = buildDatasetProfile(template);
this.datasetProfiles.add(datasetProfile);
this.createProfile(datasetProfile, template);
// this.createProfile(datasetProfile, template);
template.getPlans().forEach(plan -> {
DataManagementPlanEditorModel dmpModel = this.buildDMP(plan, null);
this.dmps.add(dmpModel);
});
});
users.forEach(user -> {
});
}
@ -68,10 +80,36 @@ public class DMPRoadmapMigration implements CommandLineRunner {
datasetProfile.setVersion(template.getVersion());
datasetProfile = this.apiContext.getOperationsContext().getDatabaseRepository().
getDatasetProfileDao().createOrUpdate(datasetProfile);
this.profiles.add(datasetProfile);
metricsManager.increaseValue(MetricNames.DATASET_TEMPLATE, 1, MetricsManager.datasetTemplateStatus.get(datasetProfile.getStatus()));
}
private DataManagementPlanEditorModel buildDMP(Plan plan, eu.eudat.data.entities.DatasetProfile datasetProfile) {
DataManagementPlanEditorModel dmpModel = new DataManagementPlanEditorModel();
return dmpModel;
}
private DatasetWizardModel buildDataset(Plan plan, eu.eudat.data.entities.DatasetProfile datasetProfile) {
DatasetWizardModel datasetModel = new DatasetWizardModel();
datasetModel.setDataRepositories(new ArrayList<>());
if(datasetProfile != null) {
/* TODO Dataset Definition */
PagedDatasetProfile datasetProfileDefinition = new PagedDatasetProfile();
datasetModel.setDatasetProfileDefinition(datasetProfileDefinition);
/* TODO DMP */
DatasetProfileOverviewModel profile = new DatasetProfileOverviewModel();
profile.setId(datasetProfile.getId());
profile.setLabel(datasetProfile.getLabel());
datasetModel.setProfile(profile);
}
datasetModel.setDescription(plan.getDescription());
datasetModel.setExternalDatasets(new ArrayList<>());
datasetModel.setLabel(plan.getTitle());
datasetModel.setRegistries(new ArrayList<>());
datasetModel.setServices(new ArrayList<>());
datasetModel.setTags(new ArrayList<>());
return datasetModel;
}
private DatasetProfile buildDatasetProfile(Template template) {
DatasetProfile datasetProfile = new DatasetProfile();
datasetProfile.setLabel(template.getTitle());
@ -237,7 +275,19 @@ public class DMPRoadmapMigration implements CommandLineRunner {
return datasetProfiles;
}
public List<eu.eudat.data.entities.DatasetProfile> getProfiles() {
return profiles;
public List<DataManagementPlanEditorModel> getDmps() {
return dmps;
}
public List<DatasetWizardModel> getDatasets() {
return datasets;
}
public List<Template> getTemplates() {
return templateRepository.findAll();
}
public List<User> getUsers() {
return userRepository.findAll();
}
}
Loading…
Cancel
Save