2023-06-15 11:37:01 +02:00
|
|
|
package eu.dnetlib.openaire.community.db.utils;
|
2023-06-14 13:53:59 +02:00
|
|
|
|
2023-06-26 14:29:29 +02:00
|
|
|
import java.time.LocalDateTime;
|
2023-06-15 14:37:15 +02:00
|
|
|
import java.util.Arrays;
|
2023-06-26 14:29:29 +02:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
2023-06-27 09:55:39 +02:00
|
|
|
import org.apache.commons.lang3.StringUtils;
|
2023-06-15 14:37:15 +02:00
|
|
|
|
2023-06-14 13:53:59 +02:00
|
|
|
import eu.dnetlib.openaire.community.db.model.DbCommunity;
|
2023-06-15 10:18:18 +02:00
|
|
|
import eu.dnetlib.openaire.community.db.model.DbDatasource;
|
2023-06-14 13:53:59 +02:00
|
|
|
import eu.dnetlib.openaire.community.db.model.DbProject;
|
2023-06-27 12:37:23 +02:00
|
|
|
import eu.dnetlib.openaire.community.db.model.DbSubCommunity;
|
2023-06-19 15:47:48 +02:00
|
|
|
import eu.dnetlib.openaire.community.db.model.DbSupportOrg;
|
2023-06-15 10:18:18 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityContentprovider;
|
2023-06-15 14:37:15 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityDetails;
|
2023-06-15 10:18:18 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization;
|
2023-06-14 13:53:59 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityProject;
|
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunitySummary;
|
2023-06-27 09:55:39 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.CommunityWritableProperties;
|
2023-06-27 12:37:23 +02:00
|
|
|
import eu.dnetlib.openaire.exporter.model.community.SubCommunity;
|
2023-06-14 13:53:59 +02:00
|
|
|
|
2023-06-27 09:55:39 +02:00
|
|
|
public class CommunityMappingUtils {
|
2023-06-14 13:53:59 +02:00
|
|
|
|
2023-06-26 10:28:29 +02:00
|
|
|
public final static String PIPE_SEPARATOR = "||";
|
|
|
|
|
2023-06-15 14:37:15 +02:00
|
|
|
public static CommunitySummary toCommunitySummary(final DbCommunity c) {
|
2023-06-15 11:27:59 +02:00
|
|
|
final CommunitySummary summary = new CommunitySummary();
|
2023-06-15 14:37:15 +02:00
|
|
|
populateSummary(summary, c);
|
|
|
|
return summary;
|
|
|
|
}
|
|
|
|
|
2023-06-16 11:12:24 +02:00
|
|
|
public static DbCommunity toCommunity(final CommunityDetails details) {
|
2023-06-26 14:29:29 +02:00
|
|
|
final DbCommunity c = new DbCommunity();
|
|
|
|
c.setId(details.getId());
|
|
|
|
c.setName(details.getName());
|
|
|
|
c.setShortName(details.getShortName());
|
|
|
|
c.setDescription(details.getDescription());
|
|
|
|
c.setStatus(details.getStatus());
|
2023-06-27 09:55:39 +02:00
|
|
|
c.setLogoUrl(details.getLogoUrl());
|
2023-06-26 14:29:29 +02:00
|
|
|
c.setMembership(details.getMembership());
|
|
|
|
c.setType(details.getType());
|
|
|
|
c.setClaim(details.getClaim());
|
|
|
|
c.setSubjects(toStringArray(details.getSubjects()));
|
|
|
|
c.setFos(toStringArray(details.getFos()));
|
|
|
|
c.setSdg(toStringArray(details.getSdg()));
|
|
|
|
c.setAdvancedConstraints(details.getAdvancedConstraints());
|
|
|
|
c.setRemoveConstraints(details.getRemoveConstraints());
|
|
|
|
c.setMainZenodoCommunity(details.getZenodoCommunity());
|
|
|
|
c.setOtherZenodoCommunities(toStringArray(details.getOtherZenodoCommunities()));
|
|
|
|
c.setCreationDate(ObjectUtils.firstNonNull(details.getCreationDate(), LocalDateTime.now()));
|
|
|
|
c.setLastUpdateDate(LocalDateTime.now());
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
2023-06-27 09:55:39 +02:00
|
|
|
public static void populateCommunity(final DbCommunity c, final CommunityWritableProperties details) {
|
|
|
|
if (StringUtils.isNotBlank(details.getName())) {
|
|
|
|
c.setName(details.getName());
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(details.getShortName())) {
|
|
|
|
c.setShortName(details.getShortName());
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(details.getDescription())) {
|
|
|
|
c.setDescription(details.getDescription());
|
|
|
|
}
|
|
|
|
if (details.getStatus() != null) {
|
|
|
|
c.setStatus(details.getStatus());
|
|
|
|
}
|
|
|
|
if (details.getMembership() != null) {
|
|
|
|
c.setMembership(details.getMembership());
|
|
|
|
}
|
|
|
|
if (details.getType() != null) {
|
|
|
|
c.setType(details.getType());
|
|
|
|
}
|
|
|
|
if (details.getClaim() != null) {
|
|
|
|
c.setClaim(details.getClaim());
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(details.getLogoUrl())) {
|
|
|
|
c.setLogoUrl(details.getLogoUrl());
|
|
|
|
}
|
|
|
|
if (details.getFos() != null) {
|
|
|
|
c.setFos(toStringArray(details.getFos()));
|
|
|
|
}
|
|
|
|
if (details.getSdg() != null) {
|
|
|
|
c.setSdg(toStringArray(details.getSdg()));
|
|
|
|
}
|
|
|
|
if (details.getSubjects() != null) {
|
|
|
|
c.setSubjects(toStringArray(details.getSubjects()));
|
|
|
|
}
|
|
|
|
if (details.getAdvancedConstraints() != null) {
|
|
|
|
c.setAdvancedConstraints(details.getAdvancedConstraints());
|
|
|
|
}
|
|
|
|
if (details.getRemoveConstraints() != null) {
|
|
|
|
c.setRemoveConstraints(details.getRemoveConstraints());
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(details.getMainZenodoCommunity())) {
|
|
|
|
c.setMainZenodoCommunity(details.getMainZenodoCommunity());
|
|
|
|
}
|
|
|
|
if (details.getOtherZenodoCommunities() != null) {
|
|
|
|
c.setOtherZenodoCommunities(toStringArray(details.getOtherZenodoCommunities()));
|
|
|
|
}
|
|
|
|
|
|
|
|
c.setLastUpdateDate(LocalDateTime.now());
|
2023-06-16 11:12:24 +02:00
|
|
|
}
|
|
|
|
|
2023-06-15 14:37:15 +02:00
|
|
|
public static CommunityDetails CommunityDetails(final DbCommunity c) {
|
|
|
|
final CommunityDetails details = new CommunityDetails();
|
|
|
|
populateSummary(details, c);
|
2023-06-19 15:47:48 +02:00
|
|
|
details.setAdvancedConstraints(c.getAdvancedConstraints());
|
2023-06-26 14:29:29 +02:00
|
|
|
details.setRemoveConstraints(c.getRemoveConstraints());
|
2023-06-15 14:37:15 +02:00
|
|
|
details.setFos(Arrays.asList(c.getFos()));
|
|
|
|
details.setSdg(Arrays.asList(c.getSdg()));
|
|
|
|
details.setSubjects(Arrays.asList(c.getSubjects()));
|
2023-06-19 15:47:48 +02:00
|
|
|
details.setClaim(c.getClaim());
|
|
|
|
details.setMembership(c.getMembership());
|
|
|
|
details.setOtherZenodoCommunities(Arrays.asList(c.getOtherZenodoCommunities()));
|
|
|
|
return details;
|
2023-06-15 14:37:15 +02:00
|
|
|
}
|
2023-06-15 11:27:59 +02:00
|
|
|
|
2023-06-15 14:37:15 +02:00
|
|
|
private static void populateSummary(final CommunitySummary summary, final DbCommunity c) {
|
2023-06-15 11:27:59 +02:00
|
|
|
summary.setId(c.getId());
|
2023-06-19 15:47:48 +02:00
|
|
|
summary.setShortName(c.getShortName());
|
|
|
|
summary.setName(c.getName());
|
|
|
|
summary.setLastUpdateDate(c.getLastUpdateDate());
|
2023-06-15 11:27:59 +02:00
|
|
|
summary.setCreationDate(c.getCreationDate());
|
2023-06-19 15:47:48 +02:00
|
|
|
summary.setQueryId(c.getId() + PIPE_SEPARATOR + c.getShortName());
|
2023-06-26 14:29:29 +02:00
|
|
|
summary.setType(c.getType());
|
2023-06-15 11:27:59 +02:00
|
|
|
summary.setDescription(c.getDescription());
|
|
|
|
summary.setLogoUrl(c.getLogoUrl());
|
|
|
|
summary.setStatus(c.getStatus());
|
|
|
|
summary.setZenodoCommunity(c.getMainZenodoCommunity());
|
2023-06-14 13:53:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static CommunityProject toCommunityProject(final DbProject dbEntry) {
|
2023-06-15 11:27:59 +02:00
|
|
|
final CommunityProject cp = new CommunityProject();
|
|
|
|
cp.setCommunityId(dbEntry.getCommunity());
|
|
|
|
cp.setOpenaireId(dbEntry.getProjectId());
|
|
|
|
cp.setName(dbEntry.getProjectName());
|
|
|
|
cp.setAcronym(dbEntry.getProjectAcronym());
|
|
|
|
cp.setFunder(dbEntry.getProjectFunder());
|
|
|
|
cp.setGrantId(dbEntry.getProjectCode());
|
|
|
|
return cp;
|
2023-06-14 13:53:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static DbProject toDbProject(final String id, final CommunityProject project) {
|
2023-06-15 14:37:15 +02:00
|
|
|
final DbProject p = new DbProject();
|
|
|
|
p.setCommunity(id);
|
|
|
|
p.setProjectId(project.getOpenaireId());
|
|
|
|
p.setProjectName(project.getName());
|
|
|
|
p.setProjectAcronym(project.getAcronym());
|
|
|
|
p.setProjectCode(project.getGrantId());
|
|
|
|
p.setProjectFunder(project.getFunder());
|
|
|
|
return p;
|
2023-06-14 13:53:59 +02:00
|
|
|
}
|
|
|
|
|
2023-06-15 10:18:18 +02:00
|
|
|
public static CommunityContentprovider toCommunityContentprovider(final DbDatasource dbEntry) {
|
2023-06-15 11:27:59 +02:00
|
|
|
final CommunityContentprovider ccp = new CommunityContentprovider();
|
|
|
|
ccp.setCommunityId(dbEntry.getCommunity());
|
|
|
|
ccp.setOpenaireId(dbEntry.getDsId());
|
|
|
|
ccp.setName(dbEntry.getDsName());
|
2023-06-19 15:47:48 +02:00
|
|
|
ccp.setOfficialname(dbEntry.getDsOfficialName());
|
|
|
|
ccp.setSelectioncriteria(dbEntry.getConstraints());
|
2023-06-15 11:27:59 +02:00
|
|
|
return ccp;
|
2023-06-15 10:18:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static DbDatasource toDbDatasource(final String id, final CommunityContentprovider provider) {
|
2023-06-15 14:37:15 +02:00
|
|
|
final DbDatasource ds = new DbDatasource();
|
|
|
|
ds.setCommunity(id);
|
|
|
|
ds.setDsId(provider.getOpenaireId());
|
|
|
|
ds.setDsName(provider.getName());
|
2023-06-19 15:47:48 +02:00
|
|
|
ds.setDsOfficialName(provider.getOfficialname());
|
|
|
|
ds.setConstraints(provider.getSelectioncriteria());
|
2023-06-15 14:37:15 +02:00
|
|
|
return ds;
|
2023-06-15 10:18:18 +02:00
|
|
|
}
|
|
|
|
|
2023-06-27 12:37:23 +02:00
|
|
|
public static CommunityOrganization toCommunityOrganization(final DbSupportOrg dbEntry) {
|
2023-06-15 11:27:59 +02:00
|
|
|
final CommunityOrganization co = new CommunityOrganization();
|
|
|
|
co.setCommunityId(dbEntry.getCommunity());
|
2023-06-19 15:47:48 +02:00
|
|
|
co.setName(dbEntry.getOrgName());
|
|
|
|
co.setWebsite_url(dbEntry.getOrgUrl());
|
|
|
|
co.setLogo_url(dbEntry.getOrgLogoUrl());
|
2023-06-15 11:27:59 +02:00
|
|
|
return co;
|
2023-06-15 10:18:18 +02:00
|
|
|
}
|
|
|
|
|
2023-06-19 15:47:48 +02:00
|
|
|
public static DbSupportOrg toDbSupportOrg(final String id, final CommunityOrganization org) {
|
|
|
|
final DbSupportOrg dbo = new DbSupportOrg();
|
2023-06-15 14:37:15 +02:00
|
|
|
dbo.setCommunity(id);
|
2023-06-19 15:47:48 +02:00
|
|
|
dbo.setOrgName(org.getName());
|
|
|
|
dbo.setOrgUrl(org.getWebsite_url());
|
|
|
|
dbo.setOrgLogoUrl(org.getLogo_url());
|
2023-06-15 14:37:15 +02:00
|
|
|
return dbo;
|
2023-06-15 10:18:18 +02:00
|
|
|
}
|
|
|
|
|
2023-06-27 12:37:23 +02:00
|
|
|
public static DbSubCommunity toDbSubCommunity(final SubCommunity sub) {
|
|
|
|
final DbSubCommunity dbsc = new DbSubCommunity();
|
|
|
|
dbsc.setCommunity(sub.getCommunityId());
|
|
|
|
dbsc.setId(sub.getSubCommunityId());
|
|
|
|
dbsc.setCategory(sub.getCategory());
|
|
|
|
dbsc.setLabel(sub.getLabel());
|
|
|
|
dbsc.setParams(sub.getParams());
|
|
|
|
dbsc.setParent(sub.getParent());
|
|
|
|
return dbsc;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static SubCommunity toSubCommunity(final DbSubCommunity sub) {
|
|
|
|
final SubCommunity sc = new SubCommunity();
|
|
|
|
sc.setSubCommunityId(sub.getId());
|
|
|
|
sc.setCategory(sub.getCategory());
|
|
|
|
sc.setCommunityId(sub.getCommunity());
|
|
|
|
sc.setLabel(sub.getLabel());
|
|
|
|
sc.setParams(sub.getParams());
|
|
|
|
sc.setParent(sub.getParent());
|
|
|
|
return sc;
|
|
|
|
}
|
|
|
|
|
2023-06-27 09:55:39 +02:00
|
|
|
private static String[] toStringArray(final List<String> list) {
|
|
|
|
return list.toArray(new String[list.size()]);
|
|
|
|
}
|
2023-06-27 12:37:23 +02:00
|
|
|
|
2023-06-14 13:53:59 +02:00
|
|
|
}
|