a control on the persistent orgs

This commit is contained in:
Michele Artini 2022-09-26 10:29:15 +02:00
parent 75d002c8ba
commit 1ccb1c266f
2 changed files with 33 additions and 14 deletions

View File

@ -20,15 +20,12 @@ import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.common.controller.AbstractDnetController;
import eu.dnetlib.organizations.importer.ImportExecution;
import eu.dnetlib.organizations.importer.ImportExecutor;
import eu.dnetlib.organizations.model.PersistentOrganization;
import eu.dnetlib.organizations.model.SystemConfiguration;
import eu.dnetlib.organizations.model.utils.VocabularyTerm;
import eu.dnetlib.organizations.model.view.PersistentOrganizationView;
import eu.dnetlib.organizations.model.view.UserView;
import eu.dnetlib.organizations.repository.PersistentOrganizationRepository;
import eu.dnetlib.organizations.repository.SystemConfigurationRepository;
import eu.dnetlib.organizations.repository.UserRepository;
import eu.dnetlib.organizations.repository.readonly.PersistentOrganizationViewRepository;
import eu.dnetlib.organizations.repository.readonly.UserViewRepository;
import eu.dnetlib.organizations.utils.DatabaseUtils;
import eu.dnetlib.organizations.utils.MailDispatcher;
@ -42,12 +39,6 @@ public class AdminController extends AbstractDnetController {
@Autowired
private UserViewRepository userViewRepository;
@Autowired
private PersistentOrganizationRepository persistentOrganizationRepository;
@Autowired
private PersistentOrganizationViewRepository persistentOrganizationViewRepository;
@Autowired
private SystemConfigurationRepository systemConfigurationRepository;
@ -215,19 +206,19 @@ public class AdminController extends AbstractDnetController {
@GetMapping("/api/persistentOrgs")
public Iterable<PersistentOrganizationView> listPersistentOrgs() {
return persistentOrganizationViewRepository.findAll();
return dbUtils.listPersistentOrgs();
}
@PostMapping("/api/persistentOrgs")
public Iterable<PersistentOrganizationView> addPersistentOrgs(@RequestBody final List<String> ids) {
ids.forEach(id -> persistentOrganizationRepository.save(new PersistentOrganization(id)));
return persistentOrganizationViewRepository.findAll();
ids.forEach(id -> dbUtils.addPersistentOrgs(id));
return dbUtils.listPersistentOrgs();
}
@DeleteMapping("/api/persistentOrgs")
public Iterable<PersistentOrganizationView> deletePersistentOrgs(@RequestParam final String id) {
persistentOrganizationRepository.deleteById(id);
return persistentOrganizationViewRepository.findAll();
dbUtils.deletePersistentOrgs(id);
return dbUtils.listPersistentOrgs();
}
}

View File

@ -37,6 +37,7 @@ import eu.dnetlib.organizations.model.OpenaireDuplicate;
import eu.dnetlib.organizations.model.Organization;
import eu.dnetlib.organizations.model.OtherIdentifier;
import eu.dnetlib.organizations.model.OtherName;
import eu.dnetlib.organizations.model.PersistentOrganization;
import eu.dnetlib.organizations.model.Relationship;
import eu.dnetlib.organizations.model.Url;
import eu.dnetlib.organizations.model.User;
@ -46,6 +47,7 @@ import eu.dnetlib.organizations.model.utils.OrganizationConflict;
import eu.dnetlib.organizations.model.utils.TempBrowseEntry;
import eu.dnetlib.organizations.model.utils.VocabularyTerm;
import eu.dnetlib.organizations.model.view.OrganizationView;
import eu.dnetlib.organizations.model.view.PersistentOrganizationView;
import eu.dnetlib.organizations.model.view.UserView;
import eu.dnetlib.organizations.repository.AcronymRepository;
import eu.dnetlib.organizations.repository.JournalEntryRepository;
@ -54,11 +56,13 @@ import eu.dnetlib.organizations.repository.OpenaireDuplicateRepository;
import eu.dnetlib.organizations.repository.OrganizationRepository;
import eu.dnetlib.organizations.repository.OtherIdentifierRepository;
import eu.dnetlib.organizations.repository.OtherNameRepository;
import eu.dnetlib.organizations.repository.PersistentOrganizationRepository;
import eu.dnetlib.organizations.repository.RelationshipRepository;
import eu.dnetlib.organizations.repository.UrlRepository;
import eu.dnetlib.organizations.repository.UserCountryRepository;
import eu.dnetlib.organizations.repository.UserRepository;
import eu.dnetlib.organizations.repository.readonly.OrganizationViewRepository;
import eu.dnetlib.organizations.repository.readonly.PersistentOrganizationViewRepository;
@Component
public class DatabaseUtils {
@ -87,6 +91,10 @@ public class DatabaseUtils {
private OrganizationViewRepository organizationViewRepository;
@Autowired
private JournalEntryRepository journalEntryRepository;
@Autowired
private PersistentOrganizationRepository persistentOrganizationRepository;
@Autowired
private PersistentOrganizationViewRepository persistentOrganizationViewRepository;
@Autowired
private JdbcTemplate jdbcTemplate;
@ -585,4 +593,24 @@ public class DatabaseUtils {
return jdbcTemplate.queryForList(sql, String.class);
}
public Iterable<PersistentOrganizationView> listPersistentOrgs() {
return persistentOrganizationViewRepository.findAll();
}
public void addPersistentOrgs(final String id) {
final boolean valid = organizationRepository.findById(id)
.map(Organization::getStatus)
.filter(s -> s.equals(OrganizationStatus.approved.toString()))
.isPresent();
if (valid) {
persistentOrganizationRepository.save(new PersistentOrganization(id));
} else {
throw new RuntimeException("The ID does not refer to an approved Organization");
}
}
public void deletePersistentOrgs(final String id) {
persistentOrganizationRepository.deleteById(id);
}
}