package eu.eudat.models.data.listingmodels; import eu.eudat.data.entities.DMP; import eu.eudat.data.entities.DatasetProfile; import eu.eudat.logic.utilities.builders.XmlBuilder; import eu.eudat.models.DataModel; import eu.eudat.models.data.dataset.DatasetOverviewModel; import eu.eudat.models.data.dmp.AssociatedProfile; import eu.eudat.models.data.dmp.Organisation; import eu.eudat.models.data.dmp.Researcher; import eu.eudat.models.data.project.ProjectOverviewModel; import eu.eudat.models.data.urls.DatasetUrlListing; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; public class DataManagementPlanOverviewModel implements DataModel { private String id; private String label; private String profile; private ProjectOverviewModel project; private Date creationTime; private Date modifiedTime; private List organisations; private int version; private int status; private UUID groupId; private List datasets; private List associatedProfiles; private List researchers; private List users; private String description; 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; } public String getProfile() { return profile; } public void setProfile(String profile) { this.profile = profile; } public ProjectOverviewModel getProject() { return project; } public void setProject(ProjectOverviewModel project) { this.project = project; } public Date getCreationTime() { return creationTime; } public void setCreationTime(Date creationTime) { this.creationTime = creationTime; } public Date getModifiedTime() { return modifiedTime; } public void setModifiedTime(Date modifiedTime) { this.modifiedTime = modifiedTime; } public List getOrganisations() { return organisations; } public void setOrganisations(List organizations) { this.organisations = organizations; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public UUID getGroupId() { return groupId; } public void setGroupId(UUID groupId) { this.groupId = groupId; } public List getDatasets() { return datasets; } public void setDatasets(List datasets) { this.datasets = datasets; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public List getAssociatedProfiles() { return associatedProfiles; } public void setAssociatedProfiles(List associatedProfiles) { this.associatedProfiles = associatedProfiles; } public List getUsers() { return users; } public void setUsers(List users) { this.users = users; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public List getResearchers() { return researchers; } public void setResearchers(List researchers) { this.researchers = researchers; } @Override public DataManagementPlanOverviewModel fromDataModel(DMP entity) { this.id = entity.getId().toString(); this.label = entity.getLabel(); this.groupId = entity.getGroupId(); return this; } public DataManagementPlanOverviewModel fromDataModelDatasets(DMP entity) { this.fromDataModel(entity); this.status = entity.getStatus(); this.version = entity.getVersion(); this.project = new ProjectOverviewModel().fromDataModel(entity.getProject()); if (entity.getProfile() != null) this.profile = entity.getProfile().getLabel(); this.creationTime = entity.getCreated(); this.modifiedTime = entity.getModified(); this.organisations = entity.getOrganisations().stream().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList()); this.datasets = entity.getDataset().stream().map(x-> new DatasetOverviewModel().fromDataModel(x)).collect(Collectors.toList()); this.users = entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()); this.description = entity.getDescription(); this.researchers = entity.getResearchers().stream().map(item -> new Researcher().fromDataModel(item)).collect(Collectors.toList()); if (entity.getAssociatedDmps() != null && !entity.getAssociatedDmps().isEmpty()) { this.associatedProfiles = new LinkedList<>(); for (DatasetProfile datasetProfile : entity.getAssociatedDmps()) { AssociatedProfile associatedProfile = new AssociatedProfile().fromData(datasetProfile); this.associatedProfiles.add(associatedProfile); } } /*if (entity.getAssociatedDmps() != null && !entity.getAssociatedDmps().isEmpty()) { Document viewStyleDoc = XmlBuilder.fromXml(entity.getAssociatedDmps()); Element item = (Element) viewStyleDoc.getElementsByTagName("profiles").item(0); 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; } @Override public DMP toDataModel() { return null; } @Override public String getHint() { return "dataManagementPlanOverviewModel"; } }