use of org.gbif.ipt.service.manage.SourceManager in project ipt by gbif.
the class ResourceManagerImplIT method data.
public static Stream<Arguments> data() throws IOException {
// Mock classes
AppConfig mockAppConfig = mock(AppConfig.class);
// mock returning resource URI in gbif-uat belong
when(mockAppConfig.getResourceUri(anyString())).thenReturn(UriBuilder.fromPath("http://www.gbif-uat.org:7001/ipt?r=ants").build());
when(mockAppConfig.getResourceVersionUri("ants", new BigDecimal("1.1"))).thenReturn(UriBuilder.fromPath("http://www.gbif-uat.org:7001/ipt?r=ants&v=1.1").build());
when(mockAppConfig.getMaxThreads()).thenReturn(3);
UserAccountManager mockUserAccountManager = mock(UserAccountManager.class);
UserEmailConverter mockEmailConverter = new UserEmailConverter(mockUserAccountManager);
ExtensionRowTypeConverter mockExtensionRowTypeConverter = mock(ExtensionRowTypeConverter.class);
ExtensionManager mockExtensionManager = mock(ExtensionManager.class);
JdbcInfoConverter mockJdbcConverter = mock(JdbcInfoConverter.class);
SourceManager mockSourceManager = mock(SourceManager.class);
RegistryManager mockRegistryManager = MockRegistryManager.buildMock();
GenerateDwcaFactory mockDwcaFactory = mock(GenerateDwcaFactory.class);
PasswordEncrypter mockPasswordEncrypter = mock(PasswordEncrypter.class);
Eml2Rtf mockEml2Rtf = mock(Eml2Rtf.class);
VocabulariesManager mockVocabulariesManager = mock(VocabulariesManager.class);
SimpleTextProvider mockSimpleTextProvider = mock(SimpleTextProvider.class);
ConceptTermConverter mockConceptTermConverter = mock(ConceptTermConverter.class);
// persist eml file for version 1.0 (contents written later)
TMP_EML_FILE = File.createTempFile("eml-1.0", ".xml");
when(MOCK_DATA_DIR.resourceEmlFile("ants", new BigDecimal("1.1"))).thenReturn(TMP_EML_FILE);
// DataCite parameters..
RegistrationManager mockRegistrationManagerDataCite = mock(RegistrationManager.class);
Properties p = PropertiesUtil.loadProperties("datacite.properties");
ClientConfiguration cfg = ClientConfiguration.builder().withBaseApiUrl(p.getProperty("baseApiUrl")).withTimeOut(Long.valueOf(p.getProperty("timeOut"))).withFileCacheMaxSizeMb(Long.valueOf(p.getProperty("fileCacheMaxSizeMb"))).withUser(p.getProperty("user")).withPassword(p.getProperty("password")).build();
// LOG.info("DataCite password (read from Maven property datacite.password)= " + dcCfg.getPassword());
Organisation oDataCite = new Organisation();
oDataCite.setAgencyAccountPrimary(true);
oDataCite.setName("GBIF");
oDataCite.setDoiPrefix(Constants.TEST_DOI_PREFIX);
oDataCite.setCanHost(true);
oDataCite.setAgencyAccountUsername(cfg.getUser());
oDataCite.setAgencyAccountPassword(cfg.getPassword());
oDataCite.setDoiRegistrationAgency(DOIRegistrationAgency.DATACITE);
// mock returning primary DOI agency account
when(mockRegistrationManagerDataCite.findPrimaryDoiAgencyAccount()).thenReturn(oDataCite);
// mock returning DataCite service
DoiService dataCiteService = new RestJsonApiDataCiteService(cfg.getBaseApiUrl(), cfg.getUser(), cfg.getPassword());
when(mockRegistrationManagerDataCite.getDoiService()).thenReturn(dataCiteService);
// mock ResourceManagerImpl for DataCite
ResourceManagerImpl managerDataCite = new ResourceManagerImpl(mockAppConfig, MOCK_DATA_DIR, mockEmailConverter, new OrganisationKeyConverter(mockRegistrationManagerDataCite), mockExtensionRowTypeConverter, mockJdbcConverter, mockSourceManager, mockExtensionManager, mockRegistryManager, mockConceptTermConverter, mockDwcaFactory, mockPasswordEncrypter, mockEml2Rtf, mockVocabulariesManager, mockSimpleTextProvider, mockRegistrationManagerDataCite);
return Stream.of(Arguments.of(managerDataCite, DOIRegistrationAgency.DATACITE, DOIUtils.mintDOI(DOIRegistrationAgency.DATACITE, Constants.TEST_DOI_PREFIX), mockRegistrationManagerDataCite));
}
use of org.gbif.ipt.service.manage.SourceManager in project ipt by gbif.
the class GenerateDCATTest method getResource.
/**
* Generates a test Resource from zipped resource folder, and populates resource with license, contacts, etc.
*
* @param resourceXML resource (XML) configuration file defining column mapping of sourceFile
*
* @return test Resource
*/
private Resource getResource(@NotNull File resourceXML) throws IOException, SAXException, ParserConfigurationException, AlreadyExistingException, ImportException, InvalidFilenameException {
UserAccountManager mockUserAccountManager = mock(UserAccountManager.class);
UserEmailConverter mockEmailConverter = new UserEmailConverter(mockUserAccountManager);
OrganisationKeyConverter mockOrganisationKeyConverter = new OrganisationKeyConverter(mockRegistrationManager);
RegistryManager mockRegistryManager = MockRegistryManager.buildMock();
GenerateDwcaFactory mockDwcaFactory = mock(GenerateDwcaFactory.class);
Eml2Rtf mockEml2Rtf = mock(Eml2Rtf.class);
VocabulariesManager mockVocabulariesManager = mock(VocabulariesManager.class);
SimpleTextProvider mockSimpleTextProvider = mock(SimpleTextProvider.class);
BaseAction baseAction = new BaseAction(mockSimpleTextProvider, mockAppConfig, mockRegistrationManager);
// construct ExtensionFactory using injected parameters
Injector injector = Guice.createInjector(new ServletModule(), new Struts2GuicePluginModule(), new IPTModule());
HttpClient httpClient = injector.getInstance(HttpClient.class);
ThesaurusHandlingRule thesaurusRule = new ThesaurusHandlingRule(mock(VocabulariesManagerImpl.class));
SAXParserFactory saxf = injector.getInstance(SAXParserFactory.class);
ExtensionFactory extensionFactory = new ExtensionFactory(thesaurusRule, saxf, httpClient);
JdbcSupport support = injector.getInstance(JdbcSupport.class);
PasswordEncrypter passwordEncrypter = injector.getInstance(PasswordEncrypter.class);
JdbcInfoConverter jdbcConverter = new JdbcInfoConverter(support);
// construct occurrence core Extension
InputStream occurrenceCoreIs = GenerateDwcaTest.class.getResourceAsStream("/extensions/dwc_occurrence_2015-04-24.xml");
Extension occurrenceCore = extensionFactory.build(occurrenceCoreIs);
ExtensionManager extensionManager = mock(ExtensionManager.class);
// mock ExtensionManager returning occurrence core Extension
when(extensionManager.get("http://rs.tdwg.org/dwc/terms/Occurrence")).thenReturn(occurrenceCore);
ExtensionRowTypeConverter extensionRowTypeConverter = new ExtensionRowTypeConverter(extensionManager);
ConceptTermConverter conceptTermConverter = new ConceptTermConverter(extensionRowTypeConverter);
// mock finding resource.xml file
when(mockDataDir.resourceFile(anyString(), anyString())).thenReturn(resourceXML);
// retrieve sample zipped resource folder
File zippedResourceFolder = FileUtils.getClasspathFile("resources/res1.zip");
// retrieve sample eml.xml file
File emlXML = FileUtils.getClasspathFile("resources/res1/eml.xml");
// mock finding eml.xml file
when(mockDataDir.resourceEmlFile(anyString())).thenReturn(emlXML);
// mock finding dwca.zip file that does not exist
when(mockDataDir.resourceDwcaFile(anyString())).thenReturn(new File("dwca.zip"));
// create SourceManagerImpl
SourceManager mockSourceManager = new SourceManagerImpl(mock(AppConfig.class), mockDataDir);
// create temp directory
File tmpDataDir = FileUtils.createTempDir();
when(mockDataDir.tmpDir()).thenReturn(tmpDataDir);
// create ResourceManagerImpl
ResourceManagerImpl resourceManager = new ResourceManagerImpl(mockAppConfig, mockDataDir, mockEmailConverter, mockOrganisationKeyConverter, extensionRowTypeConverter, jdbcConverter, mockSourceManager, extensionManager, mockRegistryManager, conceptTermConverter, mockDwcaFactory, passwordEncrypter, mockEml2Rtf, mockVocabulariesManager, mockSimpleTextProvider, mockRegistrationManager);
// creator
User creator = new User();
creator.setEmail("jcuadra@gbif.org");
creator.setLastname("Cuadra");
// create a new resource.
Resource resource = resourceManager.create(RESOURCE_SHORTNAME, null, zippedResourceFolder, creator, baseAction);
// update resource title and description, to have double quotation marks which need to be escaped
resource.setTitle("TEST \"RESOURCE\"");
resource.getEml().getDescription().set(0, "Test \"description\"");
// update keyword sets: should be three, with "Occurrence" and "Observation" repeating more than once which breaks the feed
resource.getEml().getKeywords().clear();
KeywordSet keywordSet1 = new KeywordSet();
keywordSet1.add("Phytosociology");
keywordSet1.add("Occurrence");
keywordSet1.add("Observation");
keywordSet1.setKeywordThesaurus("n/a");
KeywordSet keywordSet2 = new KeywordSet();
keywordSet2.add("Occurrence");
keywordSet2.setKeywordThesaurus("http://rs.gbif.org/vocabulary/gbif/dataset_type.xml");
KeywordSet keywordSet3 = new KeywordSet();
keywordSet3.add("Observation");
keywordSet3.setKeywordThesaurus("http://rs.gbif.org/vocabulary/gbif/dataset_subtype.xml");
resource.getEml().addKeywordSet(keywordSet1);
resource.getEml().addKeywordSet(keywordSet2);
resource.getEml().addKeywordSet(keywordSet3);
// CCO
resource.getEml().setIntellectualRights("This work is licensed under <a href=\"http://creativecommons.org/publicdomain/zero/1.0/legalcode\">Creative Commons CCZero (CC0) 1.0 License</a>.");
assertEquals("http://creativecommons.org/publicdomain/zero/1.0/legalcode", resource.getEml().parseLicenseUrl());
// set creator, contact, and metadata provider
Agent agent = new Agent();
agent.setFirstName("Eric");
agent.setLastName("Stienen");
agent.setEmail("eric.stienen@inbo.be");
resource.getEml().addCreator(agent);
resource.getEml().addContact(agent);
resource.getEml().addMetadataProvider(agent);
return resource;
}
use of org.gbif.ipt.service.manage.SourceManager in project ipt by gbif.
the class TranslationActionTest method setup.
@BeforeEach
public void setup() throws Exception {
// mock needed managers
SimpleTextProvider mockTextProvider = mock(SimpleTextProvider.class);
LocaleProviderFactory localeProviderFactory = new DefaultLocaleProviderFactory();
AppConfig mockCfg = mock(AppConfig.class);
ResourceManager mockResourceManager = mock(ResourceManager.class);
SourceManager mockSourceManager = mock(SourceManager.class);
VocabulariesManager mockVocabManager = mock(VocabulariesManager.class);
TranslationAction.Translation translation = new TranslationAction.Translation();
RegistrationManager mockRegistrationManager = mock(RegistrationManager.class);
Container container = mock(Container.class);
// mock getting list of values back for BasisOfRecord field/column in source
Set<String> values = new LinkedHashSet<>();
values.add("spe");
values.add("obs");
values.add("fos");
when(mockSourceManager.inspectColumn(any(SourceBase.class), anyInt(), anyInt(), anyInt())).thenReturn(values);
// mock getI18nVocab - only called in prepare()
Map<String, String> mockVocab = new HashMap<>();
mockVocab.put("NomenclaturalChecklist", "Nomenclatural Checklist");
mockVocab.put("MachineObservation", "Machine Observation");
when(mockVocabManager.getI18nVocab(anyString(), anyString(), anyBoolean())).thenReturn(mockVocab);
// initialize new Resource
Resource resource = new Resource();
String resourceShortName = "TestResource";
resource.setShortname(resourceShortName);
// initialize new ExtensionMapping
ExtensionMapping mapping = new ExtensionMapping();
// add source to mapping
mapping.setSource(new TextFileSource());
ExtensionFactory factory = ExtensionFactoryTest.getFactory();
Extension e = factory.build(ExtensionFactoryTest.class.getResourceAsStream("/extensions/dwc_occurrence.xml"));
// ensure rowType for Extension is set
if (e.getRowType() == null) {
e.setRowType(Constants.DWC_ROWTYPE_TAXON);
}
// add extension to ExtensionMapping
mapping.setExtension(e);
// create map of source value
TreeMap<String, String> sourceValues = new TreeMap<>();
sourceValues.put("k1", "spe");
sourceValues.put("k2", "obs");
// create map of translation values
TreeMap<String, String> translatedValues = new TreeMap<>();
translatedValues.put("k1", "Preserved Specimen");
translatedValues.put("k2", "observation");
// create map of translations that get persisted
Map<String, String> persistedTranslations = new HashMap<>();
persistedTranslations.put("spe", "Preserved Specimen");
persistedTranslations.put("obs", "observation");
// initialize PropertyMapping for BasisOfRecord term
PropertyMapping field = new PropertyMapping();
// set ConceptTerm
field.setTerm(DwcTerm.basisOfRecord);
// set index
field.setIndex(1);
// add translations to field
field.setTranslation(persistedTranslations);
// add set of PropertyMapping, including field, to ExtensionMapping
Set<PropertyMapping> fields = new TreeSet<>();
fields.add(field);
mapping.setFields(fields);
// add ExtensionMapping to resource, with mapping ID 0
List<ExtensionMapping> mappings = new LinkedList<>();
mappings.add(mapping);
resource.setMappings(mappings);
// mock resourceManager.get - called only in ManagerBaseAction.prepare()
when(mockResourceManager.get(anyString())).thenReturn(resource);
// mock a locale provider
when(container.getInstance(LocaleProviderFactory.class)).thenReturn(localeProviderFactory);
// create mock Action
action = new TranslationAction(mockTextProvider, mockCfg, mockRegistrationManager, mockResourceManager, mockSourceManager, mockVocabManager, translation);
action.setContainer(container);
// initialize ExtensionProperty representing BasisOfRecord field on Occurrence core Extension
ExtensionProperty property = mapping.getExtension().getProperty(field.getTerm());
// set a vocabulary for the BasisOfRecord field
// mock creation of BasisOfRecord vocabulary
VocabularyConcept concept = new VocabularyConcept();
concept.setIdentifier("PreservedSpecimen");
concept.setUri("http://rs.tdwg.org/dwc/dwctype/PreservedSpecimen");
// preferred titles
Set<VocabularyTerm> preferredTerms = new HashSet<>();
VocabularyTerm term = new VocabularyTerm();
term.setLang("en");
term.setTitle("Preserved Specimen");
preferredTerms.add(term);
concept.setPreferredTerms(preferredTerms);
// alternative titles
Set<VocabularyTerm> alternateTerms = new HashSet<>();
term = new VocabularyTerm();
term.setLang("en");
term.setTitle("Conserved Specimen");
alternateTerms.add(term);
concept.setAlternativeTerms(alternateTerms);
Vocabulary vocab = new Vocabulary();
List<VocabularyConcept> concepts = new ArrayList<>();
concepts.add(concept);
vocab.setConcepts(concepts);
vocab.setUriString("http://rs.gbif.org/vocabulary/dwc/basis_of_record");
property.setVocabulary(vocab);
// create sessionScoped Translation
// populate sessionScoped Translation with translations
action.getTrans().setTmap(mapping.getExtension().getRowType(), property, sourceValues, translatedValues);
// set various properties on Action
action.setField(field);
action.setExtensionMapping(mapping);
action.setProperty(property);
// mock servlet request
HttpServletRequest mockRequest = mock(HttpServletRequest.class);
// the mapping id is 0 - relates to resource's List<ExtensionMapping> mappings
when(mockRequest.getParameter(TranslationAction.REQ_PARAM_MAPPINGID)).thenReturn("0");
when(mockRequest.getParameter(TranslationAction.REQ_PARAM_ROWTYPE)).thenReturn(Constants.DWC_ROWTYPE_OCCURRENCE);
when(mockRequest.getParameter(TranslationAction.REQ_PARAM_TERM)).thenReturn(DwcTerm.basisOfRecord.qualifiedName());
when(mockRequest.getParameter(Constants.REQ_PARAM_RESOURCE)).thenReturn(resourceShortName);
action.setServletRequest(mockRequest);
// ensure the resource is set
action.setResource(resource);
}
Aggregations