package eu.dnetlib.openaire.community.db.utils; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import org.apache.commons.lang3.ObjectUtils; import eu.dnetlib.openaire.community.db.model.DbCommunity; import eu.dnetlib.openaire.community.db.model.DbDatasource; import eu.dnetlib.openaire.community.db.model.DbProject; import eu.dnetlib.openaire.community.db.model.DbSupportOrg; import eu.dnetlib.openaire.exporter.model.community.CommunityContentprovider; import eu.dnetlib.openaire.exporter.model.community.CommunityDetails; import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization; import eu.dnetlib.openaire.exporter.model.community.CommunityProject; import eu.dnetlib.openaire.exporter.model.community.CommunitySummary; public class ConvertionUtils { public final static String PIPE_SEPARATOR = "||"; public static CommunitySummary toCommunitySummary(final DbCommunity c) { final CommunitySummary summary = new CommunitySummary(); populateSummary(summary, c); return summary; } public static DbCommunity toCommunity(final CommunityDetails details) { 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()); 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()); c.setLogoUrl(details.getLogoUrl()); return c; } private static String[] toStringArray(final List list) { return list.toArray(new String[list.size()]); } public static CommunityDetails CommunityDetails(final DbCommunity c) { final CommunityDetails details = new CommunityDetails(); populateSummary(details, c); details.setAdvancedConstraints(c.getAdvancedConstraints()); details.setRemoveConstraints(c.getRemoveConstraints()); details.setFos(Arrays.asList(c.getFos())); details.setSdg(Arrays.asList(c.getSdg())); details.setSubjects(Arrays.asList(c.getSubjects())); details.setClaim(c.getClaim()); details.setMembership(c.getMembership()); details.setOtherZenodoCommunities(Arrays.asList(c.getOtherZenodoCommunities())); return details; } private static void populateSummary(final CommunitySummary summary, final DbCommunity c) { summary.setId(c.getId()); summary.setShortName(c.getShortName()); summary.setName(c.getName()); summary.setLastUpdateDate(c.getLastUpdateDate()); summary.setCreationDate(c.getCreationDate()); summary.setQueryId(c.getId() + PIPE_SEPARATOR + c.getShortName()); summary.setType(c.getType()); summary.setDescription(c.getDescription()); summary.setLogoUrl(c.getLogoUrl()); summary.setStatus(c.getStatus()); summary.setZenodoCommunity(c.getMainZenodoCommunity()); } public static CommunityProject toCommunityProject(final DbProject dbEntry) { 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; } public static DbProject toDbProject(final String id, final CommunityProject project) { 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; } public static CommunityContentprovider toCommunityContentprovider(final DbDatasource dbEntry) { final CommunityContentprovider ccp = new CommunityContentprovider(); ccp.setCommunityId(dbEntry.getCommunity()); ccp.setOpenaireId(dbEntry.getDsId()); ccp.setName(dbEntry.getDsName()); ccp.setOfficialname(dbEntry.getDsOfficialName()); ccp.setSelectioncriteria(dbEntry.getConstraints()); return ccp; } public static DbDatasource toDbDatasource(final String id, final CommunityContentprovider provider) { final DbDatasource ds = new DbDatasource(); ds.setCommunity(id); ds.setDsId(provider.getOpenaireId()); ds.setDsName(provider.getName()); ds.setDsOfficialName(provider.getOfficialname()); ds.setConstraints(provider.getSelectioncriteria()); return ds; } public static CommunityOrganization toCommunityOrganiztion(final DbSupportOrg dbEntry) { final CommunityOrganization co = new CommunityOrganization(); co.setCommunityId(dbEntry.getCommunity()); co.setName(dbEntry.getOrgName()); co.setWebsite_url(dbEntry.getOrgUrl()); co.setLogo_url(dbEntry.getOrgLogoUrl()); return co; } public static DbSupportOrg toDbSupportOrg(final String id, final CommunityOrganization org) { final DbSupportOrg dbo = new DbSupportOrg(); dbo.setCommunity(id); dbo.setOrgName(org.getName()); dbo.setOrgUrl(org.getWebsite_url()); dbo.setOrgLogoUrl(org.getLogo_url()); return dbo; } }