Compare commits
11 Commits
dnet-appli
...
master
Author | SHA1 | Date |
---|---|---|
Michele Artini | 8e353f7fa3 | |
Michele Artini | 140e14e48d | |
Michele Artini | 180aedd918 | |
Michele Artini | 8e82868559 | |
Michele Artini | 1415976a0f | |
Michele Artini | 40db13d562 | |
Michele Artini | 550baf79e4 | |
Michele Artini | 3cbce1024c | |
Michele Artini | 760791578b | |
Michele Artini | 19bc482244 | |
Michele Artini | db18cb601c |
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ import eu.dnetlib.openaire.exporter.model.community.CommunityContentprovider;
|
|||
import eu.dnetlib.openaire.exporter.model.community.CommunityDetails;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityMembershipType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityPlanType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityProject;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityStatus;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityType;
|
||||
|
@ -242,6 +243,7 @@ public class CommunityImporterService {
|
|||
|
||||
details.setId(c.getId());
|
||||
details.setShortName(c.getLabel());
|
||||
details.setDisplayShortName(c.getLabel());
|
||||
details.setLastUpdateDate(CommunityMappingUtils.asLocalDateTime(c.getLastUpdateDate()));
|
||||
details.setCreationDate(CommunityMappingUtils.asLocalDateTime(c.getCreationDate()));
|
||||
details.setQueryId(c.getId() + PIPE_SEPARATOR + c.getLabel());
|
||||
|
@ -259,6 +261,8 @@ public class CommunityImporterService {
|
|||
}
|
||||
|
||||
details.setName(StringUtils.firstNonBlank(asCsv(CSUMMARY_NAME, c.getParams()), c.getLabel()));
|
||||
details.setDisplayName(StringUtils.firstNonBlank(asCsv(CSUMMARY_NAME, c.getParams()), c.getLabel()));
|
||||
|
||||
details.setZenodoCommunity(asCsv(CSUMMARY_ZENODOC, c.getParams()));
|
||||
details.setSubjects(splitValues(asValues(CPROFILE_SUBJECT, c.getParams()), CSV_DELIMITER));
|
||||
details.setFos(splitValues(asValues(CPROFILE_FOS, c.getParams()), CSV_DELIMITER));
|
||||
|
@ -268,7 +272,7 @@ public class CommunityImporterService {
|
|||
// In the map the string is the serialization of the json representing the selection criteria so it is a valid json
|
||||
details.setRemoveConstraints(SelectionCriteria.fromJson(asCsv(CPROFILE_REMOVE_CONSTRAINT, c.getParams())));
|
||||
details.setSuggestedAcknowledgements(splitValues(asValues(CPROFILE_SUGGESTED_ACKNOWLEDGEMENT, c.getParams()), CSV_DELIMITER));
|
||||
details.setPlan(null);
|
||||
details.setPlan(CommunityPlanType.Default);
|
||||
try {
|
||||
details.setCreationDate(CommunityMappingUtils.asLocalDateTime(asCsv(CPROFILE_CREATIONDATE, c.getParams())));
|
||||
} catch (final Exception e) {
|
||||
|
|
|
@ -27,6 +27,7 @@ import eu.dnetlib.openaire.community.utils.CommunityClaimTypeConverter;
|
|||
import eu.dnetlib.openaire.community.utils.CommunityMembershipTypeConverter;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityClaimType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityMembershipType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityPlanType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityStatus;
|
||||
import eu.dnetlib.openaire.exporter.model.community.CommunityType;
|
||||
import eu.dnetlib.openaire.exporter.model.community.selectioncriteria.SelectionCriteria;
|
||||
|
@ -34,9 +35,9 @@ import eu.dnetlib.openaire.exporter.model.community.selectioncriteria.SelectionC
|
|||
@Entity
|
||||
@Table(name = "communities")
|
||||
@TypeDefs({
|
||||
@TypeDef(name = "string-array", typeClass = StringArrayType.class),
|
||||
@TypeDef(name = "json", typeClass = JsonStringType.class),
|
||||
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
|
||||
@TypeDef(name = "string-array", typeClass = StringArrayType.class),
|
||||
@TypeDef(name = "json", typeClass = JsonStringType.class),
|
||||
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
|
||||
})
|
||||
public class DbCommunity implements Serializable {
|
||||
|
||||
|
@ -52,6 +53,12 @@ public class DbCommunity implements Serializable {
|
|||
@Column(name = "shortname")
|
||||
private String shortName;
|
||||
|
||||
@Column(name = "displayname")
|
||||
private String displayName;
|
||||
|
||||
@Column(name = "displayshortname")
|
||||
private String displayShortName;
|
||||
|
||||
@Column(name = "description")
|
||||
private String description;
|
||||
|
||||
|
@ -115,7 +122,8 @@ public class DbCommunity implements Serializable {
|
|||
private String[] suggestedAcknowledgements;
|
||||
|
||||
@Column(name = "plan")
|
||||
private String plan;
|
||||
@Enumerated(EnumType.STRING)
|
||||
private CommunityPlanType plan;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -141,6 +149,22 @@ public class DbCommunity implements Serializable {
|
|||
this.shortName = shortName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(final String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getDisplayShortName() {
|
||||
return displayShortName;
|
||||
}
|
||||
|
||||
public void setDisplayShortName(final String displayShortName) {
|
||||
this.displayShortName = displayShortName;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
@ -269,11 +293,11 @@ public class DbCommunity implements Serializable {
|
|||
this.suggestedAcknowledgements = suggestedAcknowledgements;
|
||||
}
|
||||
|
||||
public String getPlan() {
|
||||
public CommunityPlanType getPlan() {
|
||||
return plan;
|
||||
}
|
||||
|
||||
public void setPlan(final String plan) {
|
||||
public void setPlan(final CommunityPlanType plan) {
|
||||
this.plan = plan;
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ public class CommunityMappingUtils {
|
|||
c.setId(details.getId());
|
||||
c.setName(details.getName());
|
||||
c.setShortName(details.getShortName());
|
||||
c.setDisplayName(details.getDisplayName());
|
||||
c.setDisplayShortName(details.getDisplayShortName());
|
||||
c.setDescription(details.getDescription());
|
||||
c.setStatus(details.getStatus());
|
||||
c.setLogoUrl(details.getLogoUrl());
|
||||
|
@ -77,6 +79,12 @@ public class CommunityMappingUtils {
|
|||
if (StringUtils.isNotBlank(details.getShortName())) {
|
||||
c.setShortName(details.getShortName());
|
||||
}
|
||||
if (StringUtils.isNotBlank(details.getDisplayName())) {
|
||||
c.setDisplayName(details.getDisplayName());
|
||||
}
|
||||
if (StringUtils.isNotBlank(details.getDisplayShortName())) {
|
||||
c.setDisplayShortName(details.getDisplayShortName());
|
||||
}
|
||||
if (StringUtils.isNotBlank(details.getDescription())) {
|
||||
c.setDescription(details.getDescription());
|
||||
}
|
||||
|
@ -138,8 +146,10 @@ public class CommunityMappingUtils {
|
|||
|
||||
private static void populateSummary(final CommunitySummary summary, final DbCommunity c) {
|
||||
summary.setId(c.getId());
|
||||
summary.setShortName(c.getShortName());
|
||||
summary.setName(c.getName());
|
||||
summary.setShortName(c.getShortName());
|
||||
summary.setDisplayName(c.getDisplayName());
|
||||
summary.setDisplayShortName(c.getDisplayShortName());
|
||||
summary.setLastUpdateDate(c.getLastUpdateDate());
|
||||
summary.setCreationDate(c.getCreationDate());
|
||||
summary.setQueryId(c.getId() + PIPE_SEPARATOR + c.getShortName());
|
||||
|
|
|
@ -9,6 +9,8 @@ CREATE TABLE communities (
|
|||
id text PRIMARY KEY,
|
||||
name text NOT NULL,
|
||||
shortname text NOT NULL, -- in the profile is label
|
||||
displayname text,
|
||||
displayshortname text,
|
||||
description text NOT NULL DEFAULT '',
|
||||
status text NOT NULL DEFAULT 'hidden', -- all, manager, hidden, members
|
||||
membership text NOT NULL DEFAULT 'by-invitation', -- open, by-invitation
|
||||
|
@ -25,7 +27,7 @@ CREATE TABLE communities (
|
|||
last_update timestamp NOT NULL DEFAULT now(),
|
||||
logo_url text,
|
||||
suggested_acknowledgements text[],
|
||||
plan text
|
||||
plan text NOT NULL DEFAULT 'Default'
|
||||
);
|
||||
|
||||
CREATE TABLE community_projects (
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -86,20 +86,16 @@ public class OrganizationController extends AbstractDnetController {
|
|||
@PostMapping("/save")
|
||||
public List<String> save(@RequestBody final OrganizationView org, final Authentication authentication) {
|
||||
|
||||
if (StringUtils.isBlank(org.getName())) {
|
||||
throw new RuntimeException("Missing field: name");
|
||||
} else if (StringUtils.isBlank(org.getCountry())) {
|
||||
throw new RuntimeException("Missing field: country");
|
||||
} else if (StringUtils.isBlank(org.getType())) {
|
||||
throw new RuntimeException("Missing field: type");
|
||||
} else if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
final String orgId =
|
||||
if (StringUtils.isBlank(org.getName())) { throw new RuntimeException("Missing field: name"); }
|
||||
if (StringUtils.isBlank(org.getCountry())) { throw new RuntimeException("Missing field: country"); }
|
||||
if (StringUtils.isBlank(org.getType())) { throw new RuntimeException("Missing field: type"); }
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
final String orgId =
|
||||
databaseUtils.insertOrUpdateOrganization(org, UserInfo.getEmail(authentication), UserInfo.isSimpleUser(authentication));
|
||||
return Arrays.asList(orgId);
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
return Arrays.asList(orgId);
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@GetMapping("/info")
|
||||
|
@ -115,11 +111,11 @@ public class OrganizationController extends AbstractDnetController {
|
|||
suggestionInfoViewByCountryRepository.findAll().forEach(info::add);
|
||||
} else if (UserInfo.isSimpleUser(authentication) || UserInfo.isNationalAdmin(authentication)) {
|
||||
userCountryRepository.getCountriesForUser(UserInfo.getEmail(authentication))
|
||||
.stream()
|
||||
.map(suggestionInfoViewByCountryRepository::findById)
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get)
|
||||
.forEach(info::add);
|
||||
.stream()
|
||||
.map(suggestionInfoViewByCountryRepository::findById)
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get)
|
||||
.forEach(info::add);
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
@ -129,29 +125,26 @@ public class OrganizationController extends AbstractDnetController {
|
|||
final OrganizationView org = organizationViewRepository.findById(id).get();
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
return org;
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@GetMapping("/conflicts")
|
||||
public List<OrganizationConflict> conflicts(@RequestParam final String id, final Authentication authentication) {
|
||||
if (UserInfo.isSuperAdmin(authentication) || userCountryRepository.verifyAuthorizationForId(id, UserInfo.getEmail(authentication))) {
|
||||
return databaseUtils.listConflictsForId(id);
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@GetMapping("/duplicates")
|
||||
public List<OpenaireDuplicateView> duplicates(@RequestParam final String id, final Authentication authentication) {
|
||||
if (UserInfo.isSuperAdmin(authentication) || userCountryRepository.verifyAuthorizationForId(id, UserInfo.getEmail(authentication))) {
|
||||
return listDuplicates(id);
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
private List<OpenaireDuplicateView> listDuplicates(final String id) {
|
||||
|
@ -161,43 +154,42 @@ public class OrganizationController extends AbstractDnetController {
|
|||
@GetMapping("/conflicts/byCountry/{country}")
|
||||
public Collection<Set<OrganizationConflict>> findConflictsByCountry(@PathVariable final String country, final Authentication authentication) {
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)) {
|
||||
return groupConflicts(conflictGroupViewRepository.findByCountry1OrCountry2(country, country).stream());
|
||||
} else if (UserInfo.isSimpleUser(authentication) || UserInfo.isNationalAdmin(authentication)) {
|
||||
if (UserInfo.isSuperAdmin(authentication)) { return groupConflicts(conflictGroupViewRepository.findByCountry1OrCountry2(country, country).stream()); }
|
||||
if (UserInfo.isSimpleUser(authentication) || UserInfo.isNationalAdmin(authentication)) {
|
||||
final Stream<ConflictGroupView> list = userCountryRepository.getCountriesForUser(UserInfo.getEmail(authentication))
|
||||
.stream()
|
||||
.filter(country::equalsIgnoreCase)
|
||||
.map(c -> conflictGroupViewRepository.findByCountry1OrCountry2(c, c).stream())
|
||||
.findFirst()
|
||||
.orElse(Stream.empty());
|
||||
.stream()
|
||||
.filter(country::equalsIgnoreCase)
|
||||
.map(c -> conflictGroupViewRepository.findByCountry1OrCountry2(c, c).stream())
|
||||
.findFirst()
|
||||
.orElse(Stream.empty());
|
||||
return groupConflicts(list);
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/duplicates/byCountry/{country}")
|
||||
public Iterable<DuplicateGroupView> findDuplicatesByCountry(@PathVariable final String country, final Authentication authentication) {
|
||||
public Iterable<DuplicateGroupView> findDuplicatesByCountry(@PathVariable final String country,
|
||||
@RequestParam(required = false, defaultValue = "0") final int page,
|
||||
@RequestParam(required = false, defaultValue = "${openorgs.findDuplicatesByCountry.limit.default}") final int size,
|
||||
final Authentication authentication) {
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)) {
|
||||
return duplicateGroupViewRepository.findByCountry(country);
|
||||
} else if (UserInfo.isSimpleUser(authentication) || UserInfo.isNationalAdmin(authentication)) {
|
||||
if (UserInfo.isSuperAdmin(authentication)) { return duplicateGroupViewRepository.findByCountry(country, PageRequest.of(page, size)); }
|
||||
if (UserInfo.isSimpleUser(authentication) || UserInfo.isNationalAdmin(authentication)) {
|
||||
return userCountryRepository.getCountriesForUser(UserInfo.getEmail(authentication))
|
||||
.stream()
|
||||
.filter(country::equalsIgnoreCase)
|
||||
.map(duplicateGroupViewRepository::findByCountry)
|
||||
.findFirst()
|
||||
.orElse(new ArrayList<DuplicateGroupView>());
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
.stream()
|
||||
.filter(country::equalsIgnoreCase)
|
||||
.map(c -> duplicateGroupViewRepository.findByCountry(c, PageRequest.of(page, size)))
|
||||
.findFirst()
|
||||
.orElse(new ArrayList<DuplicateGroupView>());
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@GetMapping(value = "/duplicates/byCountry/{country}/csv", produces = "text/csv")
|
||||
public void findDuplicatesByCountryCSV(@PathVariable final String country, final HttpServletResponse res, final Authentication authentication)
|
||||
throws IOException {
|
||||
final Iterable<DuplicateGroupView> list = findDuplicatesByCountry(country, authentication);
|
||||
throws IOException {
|
||||
final Iterable<DuplicateGroupView> list = findDuplicatesByCountry(country, 0, Integer.MAX_VALUE, authentication);
|
||||
CSVConverter.writeCSV(res.getOutputStream(), list, DuplicateGroupView.class, "id", "name", "city", "country", "numberOfDuplicates");
|
||||
}
|
||||
|
||||
|
@ -219,148 +211,131 @@ public class OrganizationController extends AbstractDnetController {
|
|||
if (simrels.isEmpty()) { return new ArrayList<>(); }
|
||||
|
||||
final boolean b = UserInfo.isSuperAdmin(authentication)
|
||||
|| simrels.stream()
|
||||
.map(OpenaireDuplicate::getLocalId)
|
||||
.distinct()
|
||||
.allMatch(id -> userCountryRepository.verifyAuthorizationForId(id, UserInfo.getEmail(authentication)));
|
||||
|| simrels.stream()
|
||||
.map(OpenaireDuplicate::getLocalId)
|
||||
.distinct()
|
||||
.allMatch(id -> userCountryRepository.verifyAuthorizationForId(id, UserInfo.getEmail(authentication)));
|
||||
|
||||
if (b) {
|
||||
databaseUtils.saveDuplicates(simrels, UserInfo.getEmail(authentication));
|
||||
return listDuplicates(simrels.get(0).getLocalId());
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@GetMapping("/search/{page}/{size}")
|
||||
public Page<OrganizationSimpleView> search(@PathVariable final int page,
|
||||
@PathVariable final int size,
|
||||
@RequestParam final String q,
|
||||
@RequestParam(required = false, defaultValue = "") final String status,
|
||||
final Authentication authentication) {
|
||||
@PathVariable final int size,
|
||||
@RequestParam final String q,
|
||||
@RequestParam(required = false, defaultValue = "") final String status,
|
||||
final Authentication authentication) {
|
||||
|
||||
if (status.equals(SPECIAL_STATUS_FOR_CANDIDATE_DUP)) {
|
||||
if (SPECIAL_STATUS_FOR_CANDIDATE_DUP.equals(status)) {
|
||||
return UserInfo.isSuperAdmin(authentication)
|
||||
? organizationSimpleViewRepository.searchCandidateDuplicates(q, PageRequest.of(page, size))
|
||||
: organizationSimpleViewRepository.searchCandidateDuplicatesForUser(q, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
? organizationSimpleViewRepository.searchCandidateDuplicates(q, PageRequest.of(page, size))
|
||||
: organizationSimpleViewRepository.searchCandidateDuplicatesForUser(q, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
}
|
||||
final List<String> statuses;
|
||||
if (StringUtils.isNotBlank(status)) {
|
||||
statuses = Arrays.asList(status.split(","));
|
||||
} else if (UserInfo.isSimpleUser(authentication)) {
|
||||
statuses = Arrays.asList(OrganizationStatus.approved.toString());
|
||||
} else {
|
||||
final List<String> statuses;
|
||||
if (StringUtils.isNotBlank(status)) {
|
||||
statuses = Arrays.asList(status.split(","));
|
||||
} else if (UserInfo.isSimpleUser(authentication)) {
|
||||
statuses = Arrays.asList(OrganizationStatus.approved.toString());
|
||||
} else {
|
||||
statuses = Arrays.asList(OrganizationStatus.approved.toString(), OrganizationStatus.suggested.toString());
|
||||
}
|
||||
statuses = Arrays.asList(OrganizationStatus.approved.toString(), OrganizationStatus.suggested.toString());
|
||||
}
|
||||
|
||||
return UserInfo.isSuperAdmin(authentication)
|
||||
return UserInfo.isSuperAdmin(authentication)
|
||||
? organizationSimpleViewRepository.search(q, statuses, PageRequest.of(page, size))
|
||||
: organizationSimpleViewRepository.searchForUser(q, UserInfo.getEmail(authentication), statuses, PageRequest.of(page, size));
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/byCountry/{status}/{code}/{page}/{size}")
|
||||
public Page<OrganizationSimpleView> findByCountry(@PathVariable final String status,
|
||||
@PathVariable final String code,
|
||||
@PathVariable final int page,
|
||||
@PathVariable final int size,
|
||||
final Authentication authentication) {
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(code, UserInfo.getEmail(authentication))) {
|
||||
if (status.equalsIgnoreCase("all")) {
|
||||
return organizationSimpleViewRepository.findByCountryOrderByName(code, PageRequest.of(page, size));
|
||||
} else {
|
||||
return organizationSimpleViewRepository.findByCountryAndStatusOrderByName(code, status, PageRequest.of(page, size));
|
||||
}
|
||||
} else {
|
||||
@PathVariable final String code,
|
||||
@PathVariable final int page,
|
||||
@PathVariable final int size,
|
||||
final Authentication authentication) {
|
||||
if (!UserInfo.isSuperAdmin(authentication) && !userCountryRepository.verifyAuthorizationForCountry(code, UserInfo.getEmail(authentication))) {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
if ("all".equalsIgnoreCase(status)) { return organizationSimpleViewRepository.findByCountryOrderByName(code, PageRequest.of(page, size)); }
|
||||
return organizationSimpleViewRepository.findByCountryAndStatusOrderByName(code, status, PageRequest.of(page, size));
|
||||
}
|
||||
|
||||
@GetMapping("/byCountry/{status}/{code}")
|
||||
public Iterable<OrganizationSimpleView> findOrgsByStatusAndCountry(@PathVariable final String status,
|
||||
@PathVariable final String code,
|
||||
final Authentication authentication) {
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(code, UserInfo.getEmail(authentication))) {
|
||||
if (status.equalsIgnoreCase("all")) {
|
||||
return organizationSimpleViewRepository.findByCountryOrderByName(code);
|
||||
} else {
|
||||
return organizationSimpleViewRepository.findByCountryAndStatusOrderByName(code, status);
|
||||
}
|
||||
} else {
|
||||
public List<OrganizationSimpleView> findOrgsByStatusAndCountry(@PathVariable final String status,
|
||||
@PathVariable final String code,
|
||||
@RequestParam(required = false, defaultValue = "0") final int page,
|
||||
@RequestParam(required = false, defaultValue = "${openorgs.findOrgsByStatusAndCountry.limit.default}") final int size,
|
||||
final Authentication authentication) {
|
||||
if (!UserInfo.isSuperAdmin(authentication) && !userCountryRepository.verifyAuthorizationForCountry(code, UserInfo.getEmail(authentication))) {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
if ("all".equalsIgnoreCase(status)) { return organizationSimpleViewRepository.findByCountryOrderByName(code, PageRequest.of(page, size)).getContent(); }
|
||||
return organizationSimpleViewRepository.findByCountryAndStatusOrderByName(code, status, PageRequest.of(page, size)).getContent();
|
||||
}
|
||||
|
||||
@GetMapping(value = "/byCountry/{status}/{code}/csv", produces = "text/csv")
|
||||
public void findOrgsByStatusAndCountryCSV(@PathVariable final String status,
|
||||
@PathVariable final String code,
|
||||
final HttpServletResponse res,
|
||||
final Authentication authentication) throws IOException {
|
||||
final Iterable<OrganizationSimpleView> list = findOrgsByStatusAndCountry(status, code, authentication);
|
||||
@PathVariable final String code,
|
||||
final HttpServletResponse res,
|
||||
final Authentication authentication) throws IOException {
|
||||
final Iterable<OrganizationSimpleView> list = findOrgsByStatusAndCountry(status, code, 0, Integer.MAX_VALUE, authentication);
|
||||
CSVConverter.writeCSV(res
|
||||
.getOutputStream(), list, OrganizationSimpleView.class, "id", "name", "type", "city", "country", "acronyms", "urls", "status", "nSimilarDups", "nSuggestedDups", "nDifferentDups");
|
||||
.getOutputStream(), list, OrganizationSimpleView.class, "id", "name", "type", "city", "country", "acronyms", "urls", "status", "nSimilarDups", "nSuggestedDups", "nDifferentDups");
|
||||
}
|
||||
|
||||
@GetMapping("/byType/{status}/{type}/{page}/{size}")
|
||||
public Page<OrganizationSimpleView> findByType(@PathVariable final String status,
|
||||
@PathVariable final String type,
|
||||
@PathVariable final int page,
|
||||
@PathVariable final int size,
|
||||
final Authentication authentication) {
|
||||
@PathVariable final String type,
|
||||
@PathVariable final int page,
|
||||
@PathVariable final int size,
|
||||
final Authentication authentication) {
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)) {
|
||||
if (status.equalsIgnoreCase("all")) {
|
||||
return organizationSimpleViewRepository.findByTypeOrderByName(type, PageRequest.of(page, size));
|
||||
} else {
|
||||
return organizationSimpleViewRepository.findByTypeAndStatusOrderByName(type, status, PageRequest.of(page, size));
|
||||
}
|
||||
} else {
|
||||
if (status.equalsIgnoreCase("all")) {
|
||||
return organizationSimpleViewRepository.findByTypeForUser(type, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
} else {
|
||||
return organizationSimpleViewRepository
|
||||
.findByTypeAndStatusForUser(type, status, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
}
|
||||
if ("all".equalsIgnoreCase(status)) { return organizationSimpleViewRepository.findByTypeOrderByName(type, PageRequest.of(page, size)); }
|
||||
return organizationSimpleViewRepository.findByTypeAndStatusOrderByName(type, status, PageRequest.of(page, size));
|
||||
}
|
||||
if ("all".equalsIgnoreCase(status)) {
|
||||
return organizationSimpleViewRepository.findByTypeForUser(type, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
}
|
||||
return organizationSimpleViewRepository
|
||||
.findByTypeAndStatusForUser(type, status, UserInfo.getEmail(authentication), PageRequest.of(page, size));
|
||||
|
||||
}
|
||||
|
||||
@GetMapping("/browse/countries")
|
||||
public List<BrowseEntry> browseCountries(final Authentication authentication) {
|
||||
return UserInfo.isSuperAdmin(authentication)
|
||||
? databaseUtils.browseCountries()
|
||||
: databaseUtils.browseCountriesForUser(UserInfo.getEmail(authentication));
|
||||
? databaseUtils.browseCountries()
|
||||
: databaseUtils.browseCountriesForUser(UserInfo.getEmail(authentication));
|
||||
}
|
||||
|
||||
@GetMapping("/browse/types")
|
||||
public List<BrowseEntry> browseOrganizationTypes(final Authentication authentication) {
|
||||
return UserInfo.isSuperAdmin(authentication)
|
||||
? databaseUtils.browseTypes()
|
||||
: databaseUtils.browseTypesForUser(UserInfo.getEmail(authentication));
|
||||
? databaseUtils.browseTypes()
|
||||
: databaseUtils.browseTypesForUser(UserInfo.getEmail(authentication));
|
||||
}
|
||||
|
||||
@PostMapping("/conflicts/fix/similar")
|
||||
public List<String> fixConflictSim(final Authentication authentication, @RequestBody final List<String> ids) {
|
||||
if (ids.size() > 1 && UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForId(ids.get(0), UserInfo.getEmail(authentication))) {
|
||||
|| userCountryRepository.verifyAuthorizationForId(ids.get(0), UserInfo.getEmail(authentication))) {
|
||||
final String newOrgId = databaseUtils.fixConflictSimilars(ids, UserInfo.getEmail(authentication));
|
||||
return Arrays.asList(newOrgId);
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@PostMapping("/conflicts/fix/different")
|
||||
public List<String> fixConflictDiff(final Authentication authentication, @RequestBody final List<String> ids) {
|
||||
if (ids.size() > 1 && UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForId(ids.get(0), UserInfo.getEmail(authentication))) {
|
||||
|| userCountryRepository.verifyAuthorizationForId(ids.get(0), UserInfo.getEmail(authentication))) {
|
||||
databaseUtils.fixConflictDifferents(ids, UserInfo.getEmail(authentication));
|
||||
return ids;
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@GetMapping("/note")
|
||||
|
@ -368,11 +343,10 @@ public class OrganizationController extends AbstractDnetController {
|
|||
final OrganizationView org = organizationViewRepository.findById(id).get();
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
return noteRepository.findById(id).orElse(new Note(id, "", null, null));
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
@PostMapping("/note")
|
||||
|
@ -381,20 +355,17 @@ public class OrganizationController extends AbstractDnetController {
|
|||
|
||||
final OrganizationView org = organizationViewRepository.findById(orgId).get();
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
|
||||
if (StringUtils.isNotBlank(note.getNote())) {
|
||||
note.setModifiedBy(UserInfo.getEmail(authentication));
|
||||
note.setModificationDate(OffsetDateTime.now());
|
||||
return noteRepository.save(note);
|
||||
} else {
|
||||
noteRepository.deleteById(orgId);
|
||||
return new Note(orgId, "", null, null);
|
||||
}
|
||||
} else {
|
||||
if (!UserInfo.isSuperAdmin(authentication)
|
||||
&& !userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
if (StringUtils.isNotBlank(note.getNote())) {
|
||||
note.setModifiedBy(UserInfo.getEmail(authentication));
|
||||
note.setModificationDate(OffsetDateTime.now());
|
||||
return noteRepository.save(note);
|
||||
}
|
||||
noteRepository.deleteById(orgId);
|
||||
return new Note(orgId, "", null, null);
|
||||
}
|
||||
|
||||
@GetMapping("/journal")
|
||||
|
@ -402,11 +373,10 @@ public class OrganizationController extends AbstractDnetController {
|
|||
final OrganizationView org = organizationViewRepository.findById(id).get();
|
||||
|
||||
if (UserInfo.isSuperAdmin(authentication)
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
|| userCountryRepository.verifyAuthorizationForCountry(org.getCountry(), UserInfo.getEmail(authentication))) {
|
||||
return journalEntryRepository.findByOrgIdOrderByDateDesc(id);
|
||||
} else {
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
throw new RuntimeException("User not authorized");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.dnetlib.organizations.repository.readonly;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import eu.dnetlib.organizations.model.view.DuplicateGroupView;
|
||||
|
@ -9,5 +10,5 @@ import eu.dnetlib.organizations.model.view.DuplicateGroupView;
|
|||
@Repository
|
||||
public interface DuplicateGroupViewRepository extends ReadOnlyRepository<DuplicateGroupView, String> {
|
||||
|
||||
List<DuplicateGroupView> findByCountry(String country);
|
||||
List<DuplicateGroupView> findByCountry(String country, Pageable page);
|
||||
}
|
||||
|
|
|
@ -15,60 +15,56 @@ public interface OrganizationSimpleViewRepository extends ReadOnlyRepository<Org
|
|||
|
||||
// SEARCH
|
||||
@Query(value = "SELECT \n"
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_similar') AS n_similar_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'suggested') AS n_suggested_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx "
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON org.id = a.id\n"
|
||||
+ " LEFT OUTER JOIN urls u ON org.id = u.id\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d1 ON org.id = d1.local_id\n"
|
||||
+ "WHERE org.status in :statuses AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_similar') AS n_similar_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'suggested') AS n_suggested_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx "
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON org.id = a.id\n"
|
||||
+ " LEFT OUTER JOIN urls u ON org.id = u.id\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d1 ON org.id = d1.local_id\n"
|
||||
+ "WHERE org.status in :statuses AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
Page<OrganizationSimpleView> search(@Param("text") String text, @Param("statuses") List<String> statuses, Pageable pageable);
|
||||
|
||||
// SEARCH FOR USER
|
||||
@Query(value = "SELECT\n"
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_similar' ) AS n_similar_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'suggested' ) AS n_suggested_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id)\n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d1 ON (org.id = d1.local_id)\n"
|
||||
+ " LEFT OUTER JOIN user_countries uc ON (uc.country = org.country) \n"
|
||||
+ "WHERE uc.email = :email AND org.status IN :statuses AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_similar' ) AS n_similar_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'suggested' ) AS n_suggested_dups,\n"
|
||||
+ " count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id)\n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d1 ON (org.id = d1.local_id)\n"
|
||||
+ " LEFT OUTER JOIN user_countries uc ON (uc.country = org.country) \n"
|
||||
+ "WHERE uc.email = :email AND org.status IN :statuses AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
Page<OrganizationSimpleView> searchForUser(@Param("text") String text,
|
||||
@Param("email") String email,
|
||||
@Param("statuses") List<String> statuses,
|
||||
Pageable pageable);
|
||||
@Param("email") String email,
|
||||
@Param("statuses") List<String> statuses,
|
||||
Pageable pageable);
|
||||
|
||||
Page<OrganizationSimpleView> findByCountryOrderByName(String country, Pageable pageable);
|
||||
|
||||
Iterable<OrganizationSimpleView> findByCountryOrderByName(String code);
|
||||
|
||||
Iterable<OrganizationSimpleView> findByCountryAndStatusOrderByName(String code, String status);
|
||||
|
||||
Page<OrganizationSimpleView> findByCountryAndStatusOrderByName(String code, String status, Pageable pageable);
|
||||
|
||||
Page<OrganizationSimpleView> findByTypeOrderByName(String type, Pageable pageable);
|
||||
|
@ -83,51 +79,51 @@ public interface OrganizationSimpleViewRepository extends ReadOnlyRepository<Org
|
|||
|
||||
// SEARCH FOR VALID DUPLICATE CANDIDATES
|
||||
@Query(value = "SELECT\n"
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " NULL AS n_similar_dups,\n"
|
||||
+ " NULL AS n_suggested_dups,\n"
|
||||
+ " NULL AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n"
|
||||
+ "WHERE org.status = 'raw' AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " NULL AS n_similar_dups,\n"
|
||||
+ " NULL AS n_suggested_dups,\n"
|
||||
+ " NULL AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n"
|
||||
+ "WHERE org.status = 'raw' AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
Page<OrganizationSimpleView> searchCandidateDuplicates(@Param("text") String text, Pageable pageable);
|
||||
|
||||
// SEARCH FOR VALID DUPLICATE CANDIDATES FOR USER
|
||||
@Query(value = "SELECT\n"
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " NULL AS n_similar_dups,\n"
|
||||
+ " NULL AS n_suggested_dups,\n"
|
||||
+ " NULL AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n"
|
||||
+ " LEFT OUTER JOIN user_countries uc ON (uc.country = org.country)\n"
|
||||
+ "WHERE org.status = 'raw' AND uc.email = :email AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
+ " org.id,\n"
|
||||
+ " org.name,\n"
|
||||
+ " org.type,\n"
|
||||
+ " org.city,\n"
|
||||
+ " org.country,\n"
|
||||
+ " org.status,\n"
|
||||
+ " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n"
|
||||
+ " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n"
|
||||
+ " NULL AS n_similar_dups,\n"
|
||||
+ " NULL AS n_suggested_dups,\n"
|
||||
+ " NULL AS n_different_dups\n"
|
||||
+ "FROM org_index_search idx\n"
|
||||
+ " JOIN organizations org ON (idx.id = org.id) \n"
|
||||
+ " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n"
|
||||
+ " LEFT OUTER JOIN urls u ON (org.id = u.id)\n"
|
||||
+ " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n"
|
||||
+ " LEFT OUTER JOIN user_countries uc ON (uc.country = org.country)\n"
|
||||
+ "WHERE org.status = 'raw' AND uc.email = :email AND (org.name ilike '%'||:text||'%' OR idx.txt @@ plainto_tsquery(:text))\n"
|
||||
+ "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n"
|
||||
+ "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n"
|
||||
+ "ORDER BY org.name", nativeQuery = true)
|
||||
Page<OrganizationSimpleView> searchCandidateDuplicatesForUser(@Param("text") String text, @Param("email") String email, Pageable pageable);
|
||||
|
||||
}
|
||||
|
|
|
@ -49,6 +49,9 @@ openaire.api.https.proxy = 10.19.65.35
|
|||
|
||||
openorgs.support.pages = { "Ask a question": "https://www.openaire.eu/support/helpdesk?view=ticket&layout=open", "FAQ": "https://www.openaire.eu/faqs" }
|
||||
|
||||
openorgs.findDuplicatesByCountry.limit.default = 1000
|
||||
openorgs.findOrgsByStatusAndCountry.limit.default = 1000
|
||||
|
||||
openaire.override.logout.url =
|
||||
|
||||
openaire.explore.organization.baseurl = https://explore.openaire.eu/search/organization?organizationId=%s
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
CREATE OR REPLACE PROCEDURE import_dedup_events() LANGUAGE plpgsql AS $$
|
||||
BEGIN
|
||||
|
||||
-- MAKE A WORKING COPY OF THE TABLE PREPARED BY THE DEDUP JOB
|
||||
DROP TABLE IF EXISTS tmp_dedup_events_work;
|
||||
CREATE TABLE tmp_dedup_events_work AS SELECT * FROM tmp_dedup_events;
|
||||
|
||||
DELETE FROM oa_conflicts WHERE created_by = 'dedupWf' and modified_by = 'dedupWf' and reltype = 'suggested';
|
||||
DELETE FROM oa_duplicates WHERE created_by = 'dedupWf' and modified_by = 'dedupWf' and reltype = 'suggested';
|
||||
DELETE FROM organizations WHERE created_by = 'dedupWf' and modified_by = 'dedupWf' and status = 'suggested';
|
||||
|
@ -10,51 +14,51 @@ DELETE FROM organizations WHERE created_by = 'dedupWf' and modified_by = 'dedupW
|
|||
UPDATE organizations SET id = 'pending_org_::'||MD5(id) WHERE status = 'suggested' AND id NOT LIKE 'pending_org_::%';
|
||||
|
||||
-- FIX IMPORT DATA
|
||||
DELETE FROM tmp_dedup_events WHERE oa_original_id = '' OR oa_original_id IS NULL;
|
||||
UPDATE tmp_dedup_events SET local_id = oa_original_id WHERE local_id = '' OR local_id IS NULL;
|
||||
UPDATE tmp_dedup_events SET oa_country = 'UNKNOWN' WHERE oa_country = '' OR oa_country IS NULL;
|
||||
UPDATE tmp_dedup_events SET oa_name = oa_acronym WHERE oa_name = '' OR oa_name IS NULL;
|
||||
DELETE FROM tmp_dedup_events WHERE oa_name = '' OR oa_name IS NULL;
|
||||
DELETE FROM tmp_dedup_events_work WHERE oa_original_id = '' OR oa_original_id IS NULL;
|
||||
UPDATE tmp_dedup_events_work SET local_id = oa_original_id WHERE local_id = '' OR local_id IS NULL;
|
||||
UPDATE tmp_dedup_events_work SET oa_country = 'UNKNOWN' WHERE oa_country = '' OR oa_country IS NULL;
|
||||
UPDATE tmp_dedup_events_work SET oa_name = oa_acronym WHERE oa_name = '' OR oa_name IS NULL;
|
||||
DELETE FROM tmp_dedup_events_work WHERE oa_name = '' OR oa_name IS NULL;
|
||||
|
||||
-- delete invalid relations (a raw org can not be suggested as duplicate and as new org)
|
||||
DELETE FROM tmp_dedup_events WHERE oa_original_id IN (
|
||||
DELETE FROM tmp_dedup_events_work WHERE oa_original_id IN (
|
||||
SELECT oa_original_id
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
GROUP BY oa_original_id HAVING count(oa_original_id) > 1)
|
||||
AND (local_id = '' OR local_id is NULL OR local_id = oa_original_id)
|
||||
AND (group_id = '' OR group_id is NULL);
|
||||
|
||||
-- delete invalid relations (a raw org can not be suggested to multiple orgs)
|
||||
DELETE FROM tmp_dedup_events WHERE oa_original_id IN (
|
||||
DELETE FROM tmp_dedup_events_work WHERE oa_original_id IN (
|
||||
SELECT oa_original_id
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
GROUP BY oa_original_id HAVING count(oa_original_id) > 1)
|
||||
AND local_id NOT LIKE 'openorgs____::%';
|
||||
|
||||
-- delete invalid groups (only one row)
|
||||
DELETE FROM tmp_dedup_events WHERE group_id IN (
|
||||
DELETE FROM tmp_dedup_events_work WHERE group_id IN (
|
||||
SELECT group_id
|
||||
FROM tmp_dedup_events GROUP BY group_id
|
||||
FROM tmp_dedup_events_work GROUP BY group_id
|
||||
HAVING count(*) = 1
|
||||
);
|
||||
|
||||
-- IMPORT MISSING TERMS
|
||||
INSERT INTO id_types(val, name) SELECT distinct arr[2], arr[2] FROM (SELECT string_to_array(unnest(string_to_array(pid_list, '@@@')), '###') AS arr FROM tmp_dedup_events WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%') as c ON CONFLICT DO NOTHING;
|
||||
INSERT INTO id_types(val, name) SELECT distinct arr[2], arr[2] FROM (SELECT string_to_array(unnest(string_to_array(pid_list, '@@@')), '###') AS arr FROM tmp_dedup_events_work WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%') as c ON CONFLICT DO NOTHING;
|
||||
|
||||
-- NEW ORGANIZATIONS (suggested)
|
||||
INSERT INTO organizations(id, name, country, status, ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests, ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, created_by, modified_by)
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_name, oa_country, 'suggested', ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests, ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, 'dedupWf', 'dedupWf'
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE local_id NOT LIKE 'openorgs\_\_\_\_::%' AND local_id = oa_original_id
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO acronyms(id, acronym)
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_acronym FROM tmp_dedup_events
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_acronym FROM tmp_dedup_events_work
|
||||
WHERE local_id NOT LIKE 'openorgs\_\_\_\_::%' AND local_id = oa_original_id AND oa_acronym IS NOT NULL AND oa_acronym != ''
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO urls(id, url)
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_url FROM tmp_dedup_events
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_url FROM tmp_dedup_events_work
|
||||
WHERE local_id NOT LIKE 'openorgs\_\_\_\_::%' AND local_id = oa_original_id AND oa_url IS NOT NULL AND oa_url != ''
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
|
@ -62,7 +66,7 @@ INSERT INTO other_ids(id, otherid, type)
|
|||
SELECT 'pending_org_::'||MD5(local_id), arr[1] AS otherid, arr[2] AS type
|
||||
FROM (
|
||||
SELECT local_id, string_to_array(unnest(string_to_array(pid_list, '@@@')), '###') AS arr
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE local_id NOT LIKE 'openorgs\_\_\_\_::%' AND local_id = oa_original_id
|
||||
) as c
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
@ -70,7 +74,7 @@ ON CONFLICT DO NOTHING;
|
|||
-- NEW ORGANIZATIONS (raw)
|
||||
INSERT INTO organizations(id, name, country, status, ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests, ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, created_by, modified_by)
|
||||
SELECT oa_original_id, oa_name, oa_country, 'raw', ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests, ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, 'dedupWf', 'dedupWf'
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%'
|
||||
ON CONFLICT(id) DO UPDATE SET
|
||||
(name, country, ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests, ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, modification_date, modified_by) =
|
||||
|
@ -78,13 +82,13 @@ ON CONFLICT(id) DO UPDATE SET
|
|||
|
||||
INSERT INTO acronyms(id, acronym)
|
||||
SELECT oa_original_id, oa_acronym
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%' AND oa_acronym IS NOT NULL AND oa_acronym != ''
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO urls(id, url)
|
||||
SELECT oa_original_id, oa_url
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%' AND oa_url IS NOT NULL AND oa_url != ''
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
|
@ -93,7 +97,7 @@ SELECT oa_original_id, arr[1] AS otherid, arr[2] AS type
|
|||
FROM (
|
||||
SELECT oa_original_id,
|
||||
string_to_array(unnest(string_to_array(pid_list, '@@@')), '###') AS arr
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE oa_original_id NOT LIKE 'openorgs\_\_\_\_::%'
|
||||
) as c
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
@ -101,23 +105,23 @@ ON CONFLICT DO NOTHING;
|
|||
-- DUPLICATES (relations to openorgs)
|
||||
INSERT INTO oa_duplicates (local_id, oa_original_id, oa_collectedfrom, created_by, modified_by)
|
||||
SELECT local_id, oa_original_id, oa_collectedfrom, 'dedupWf', 'dedupWf'
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE local_id LIKE 'openorgs\_\_\_\_::%' AND oa_original_id NOT LIKE 'openorgs\_\_\_\_::%'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- DUPLICATES (relations to suggested)
|
||||
INSERT INTO oa_duplicates (local_id, oa_original_id, oa_collectedfrom, created_by, modified_by)
|
||||
SELECT 'pending_org_::'||MD5(local_id), oa_original_id, oa_collectedfrom, 'dedupWf', 'dedupWf'
|
||||
FROM tmp_dedup_events
|
||||
FROM tmp_dedup_events_work
|
||||
WHERE local_id NOT LIKE 'openorgs\_\_\_\_::%' AND oa_original_id NOT LIKE 'openorgs\_\_\_\_::%'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- CONFLICTS (I generate all the couples)
|
||||
CREATE TEMPORARY TABLE tmp_conflict_groups AS
|
||||
SELECT DISTINCT group_id as gid, local_id oid from tmp_dedup_events
|
||||
SELECT DISTINCT group_id as gid, local_id oid from tmp_dedup_events_work
|
||||
WHERE local_id LIKE 'openorgs\_\_\_\_::%' AND oa_original_id LIKE 'openorgs\_\_\_\_::%' AND local_id != oa_original_id AND group_id IS NOT NULL AND group_id != ''
|
||||
UNION
|
||||
SELECT DISTINCT group_id as gid, oa_original_id oid from tmp_dedup_events
|
||||
SELECT DISTINCT group_id as gid, oa_original_id oid from tmp_dedup_events_work
|
||||
WHERE local_id LIKE 'openorgs\_\_\_\_::%' AND oa_original_id LIKE 'openorgs\_\_\_\_::%' AND local_id != oa_original_id AND group_id IS NOT NULL AND group_id != '';
|
||||
|
||||
INSERT INTO oa_conflicts (id1, id2, idgroup, created_by, modified_by) SELECT DISTINCT
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>dnet-applications</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>cmd-line-apps</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>dnet-applications</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>libs</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>libs</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>libs</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -124,44 +124,48 @@ public class CommunityDetails extends CommunitySummary {
|
|||
public String toString() {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
builder.append("CommunityDetails [\n\tcreationDate = ")
|
||||
.append(creationDate)
|
||||
.append(",\n\tlastUpdateDate = ")
|
||||
.append(lastUpdateDate)
|
||||
.append(",\n\tsubjects = ")
|
||||
.append(subjects)
|
||||
.append(",\n\tfos = ")
|
||||
.append(fos)
|
||||
.append(",\n\tsdg = ")
|
||||
.append(sdg)
|
||||
.append(",\n\tadvancedConstraints = ")
|
||||
.append(advancedConstraints)
|
||||
.append(",\n\tremoveConstraints = ")
|
||||
.append(removeConstraints)
|
||||
.append(",\n\totherZenodoCommunities = ")
|
||||
.append(otherZenodoCommunities)
|
||||
.append(",\n\tid = ")
|
||||
.append(id)
|
||||
.append(",\n\tqueryId = ")
|
||||
.append(queryId)
|
||||
.append(",\n\ttype = ")
|
||||
.append(type)
|
||||
.append(",\n\tname = ")
|
||||
.append(name)
|
||||
.append(",\n\tshortName = ")
|
||||
.append(shortName)
|
||||
.append(",\n\tdescription = ")
|
||||
.append(description)
|
||||
.append(",\n\tlogoUrl = ")
|
||||
.append(logoUrl)
|
||||
.append(",\n\tstatus = ")
|
||||
.append(status)
|
||||
.append(",\n\tzenodoCommunity = ")
|
||||
.append(zenodoCommunity)
|
||||
.append(",\n\tsuggestedAcknowledgements = ")
|
||||
.append(suggestedAcknowledgements)
|
||||
.append(",\n\tplan = ")
|
||||
.append(plan)
|
||||
.append("\n]");
|
||||
.append(creationDate)
|
||||
.append(",\n\tlastUpdateDate = ")
|
||||
.append(lastUpdateDate)
|
||||
.append(",\n\tsubjects = ")
|
||||
.append(subjects)
|
||||
.append(",\n\tfos = ")
|
||||
.append(fos)
|
||||
.append(",\n\tsdg = ")
|
||||
.append(sdg)
|
||||
.append(",\n\tadvancedConstraints = ")
|
||||
.append(advancedConstraints)
|
||||
.append(",\n\tremoveConstraints = ")
|
||||
.append(removeConstraints)
|
||||
.append(",\n\totherZenodoCommunities = ")
|
||||
.append(otherZenodoCommunities)
|
||||
.append(",\n\tid = ")
|
||||
.append(id)
|
||||
.append(",\n\tqueryId = ")
|
||||
.append(queryId)
|
||||
.append(",\n\ttype = ")
|
||||
.append(type)
|
||||
.append(",\n\tname = ")
|
||||
.append(name)
|
||||
.append(",\n\tshortName = ")
|
||||
.append(shortName)
|
||||
.append(",\n\tdisplayName = ")
|
||||
.append(displayName)
|
||||
.append(",\n\tdisplayShortName = ")
|
||||
.append(displayShortName)
|
||||
.append(",\n\tdescription = ")
|
||||
.append(description)
|
||||
.append(",\n\tlogoUrl = ")
|
||||
.append(logoUrl)
|
||||
.append(",\n\tstatus = ")
|
||||
.append(status)
|
||||
.append(",\n\tzenodoCommunity = ")
|
||||
.append(zenodoCommunity)
|
||||
.append(",\n\tsuggestedAcknowledgements = ")
|
||||
.append(suggestedAcknowledgements)
|
||||
.append(",\n\tplan = ")
|
||||
.append(plan)
|
||||
.append("\n]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package eu.dnetlib.openaire.exporter.model.community;
|
||||
|
||||
public enum CommunityPlanType {
|
||||
Standard, Advanced, Premium, National, Default
|
||||
}
|
|
@ -24,6 +24,12 @@ public class CommunitySummary {
|
|||
@Schema(description = "community short name")
|
||||
protected String shortName;
|
||||
|
||||
@Schema(description = "community name for display")
|
||||
protected String displayName;
|
||||
|
||||
@Schema(description = "community short name for display")
|
||||
protected String displayShortName;
|
||||
|
||||
@Schema(description = "community creation date")
|
||||
protected LocalDateTime creationDate;
|
||||
|
||||
|
@ -49,28 +55,32 @@ public class CommunitySummary {
|
|||
protected String zenodoCommunity;
|
||||
|
||||
@Schema(description = "community plan")
|
||||
protected String plan;
|
||||
protected CommunityPlanType plan;
|
||||
|
||||
public CommunitySummary() {}
|
||||
|
||||
public CommunitySummary(
|
||||
final String id,
|
||||
final String queryId,
|
||||
final CommunityType type,
|
||||
final String name,
|
||||
final String shortName,
|
||||
final LocalDateTime creationDate,
|
||||
final LocalDateTime lastUpdateDate,
|
||||
final String description,
|
||||
final String logoUrl,
|
||||
final CommunityStatus status,
|
||||
final String zenodoCommunity,
|
||||
final String plan) {
|
||||
final String id,
|
||||
final String queryId,
|
||||
final CommunityType type,
|
||||
final String name,
|
||||
final String shortName,
|
||||
final String displayName,
|
||||
final String displayShortName,
|
||||
final LocalDateTime creationDate,
|
||||
final LocalDateTime lastUpdateDate,
|
||||
final String description,
|
||||
final String logoUrl,
|
||||
final CommunityStatus status,
|
||||
final String zenodoCommunity,
|
||||
final CommunityPlanType plan) {
|
||||
this.id = id;
|
||||
this.queryId = queryId;
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
this.shortName = shortName;
|
||||
this.displayName = displayName;
|
||||
this.displayShortName = displayShortName;
|
||||
this.creationDate = creationDate;
|
||||
this.lastUpdateDate = lastUpdateDate;
|
||||
this.description = description;
|
||||
|
@ -82,17 +92,19 @@ public class CommunitySummary {
|
|||
|
||||
public CommunitySummary(final CommunitySummary summary) {
|
||||
this(summary.getId(),
|
||||
summary.getQueryId(),
|
||||
summary.getType(),
|
||||
summary.getName(),
|
||||
summary.getShortName(),
|
||||
summary.getCreationDate(),
|
||||
summary.getLastUpdateDate(),
|
||||
summary.getDescription(),
|
||||
summary.getLogoUrl(),
|
||||
summary.getStatus(),
|
||||
summary.getZenodoCommunity(),
|
||||
summary.getPlan());
|
||||
summary.getQueryId(),
|
||||
summary.getType(),
|
||||
summary.getName(),
|
||||
summary.getShortName(),
|
||||
summary.getDisplayName(),
|
||||
summary.getDisplayShortName(),
|
||||
summary.getCreationDate(),
|
||||
summary.getLastUpdateDate(),
|
||||
summary.getDescription(),
|
||||
summary.getLogoUrl(),
|
||||
summary.getStatus(),
|
||||
summary.getZenodoCommunity(),
|
||||
summary.getPlan());
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
|
@ -135,6 +147,22 @@ public class CommunitySummary {
|
|||
this.shortName = shortName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(final String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getDisplayShortName() {
|
||||
return displayShortName;
|
||||
}
|
||||
|
||||
public void setDisplayShortName(final String displayShortName) {
|
||||
this.displayShortName = displayShortName;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreationDate() {
|
||||
return creationDate;
|
||||
}
|
||||
|
@ -199,11 +227,11 @@ public class CommunitySummary {
|
|||
this.zenodoCommunity = zenodoCommunity;
|
||||
}
|
||||
|
||||
public String getPlan() {
|
||||
public CommunityPlanType getPlan() {
|
||||
return plan;
|
||||
}
|
||||
|
||||
public void setPlan(final String plan) {
|
||||
public void setPlan(final CommunityPlanType plan) {
|
||||
this.plan = plan;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,12 @@ public class CommunityWritableProperties {
|
|||
@Schema(description = "community short name")
|
||||
private String shortName;
|
||||
|
||||
@Schema(description = "community name for display")
|
||||
private String displayName;
|
||||
|
||||
@Schema(description = "community short name for display")
|
||||
private String displayShortName;
|
||||
|
||||
@Schema(description = "community description")
|
||||
private String description;
|
||||
|
||||
|
@ -56,7 +62,7 @@ public class CommunityWritableProperties {
|
|||
private CommunityClaimType claim;
|
||||
|
||||
@Schema(description = "community plan")
|
||||
private String plan;
|
||||
private CommunityPlanType plan;
|
||||
|
||||
public List<String> getFos() {
|
||||
return fos;
|
||||
|
@ -98,6 +104,22 @@ public class CommunityWritableProperties {
|
|||
this.shortName = shortName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(final String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getDisplayShortName() {
|
||||
return displayShortName;
|
||||
}
|
||||
|
||||
public void setDisplayShortName(final String displayShortName) {
|
||||
this.displayShortName = displayShortName;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
@ -178,11 +200,12 @@ public class CommunityWritableProperties {
|
|||
this.otherZenodoCommunities = otherZenodoCommunities;
|
||||
}
|
||||
|
||||
public String getPlan() {
|
||||
public CommunityPlanType getPlan() {
|
||||
return plan;
|
||||
}
|
||||
|
||||
public void setPlan(final String plan) {
|
||||
public void setPlan(final CommunityPlanType plan) {
|
||||
this.plan = plan;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>libs</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>dnet-applications</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
4
pom.xml
4
pom.xml
|
@ -10,7 +10,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>eu.dnetlib.dhp</groupId>
|
||||
<artifactId>dnet-applications</artifactId>
|
||||
<version>3.5.3</version>
|
||||
<version>3.5.5-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<licenses>
|
||||
|
@ -44,7 +44,7 @@
|
|||
<connection>scm:git:gitea@code-repo.d4science.org:D-Net/dnet-applications.git</connection>
|
||||
<developerConnection>scm:git:gitea@code-repo.d4science.org:D-Net/dnet-applications.git</developerConnection>
|
||||
<url>https://code-repo.d4science.org/D-Net/dnet-applications/</url>
|
||||
<tag>dnet-applications-3.5.3</tag>
|
||||
<tag>HEAD</tag>
|
||||
</scm>
|
||||
|
||||
<description>This module is the root descriptor for the dnet-applications project</description>
|
||||
|
|
Loading…
Reference in New Issue