Search in sources :

Example 1 with VocabulariesManager

use of org.gbif.ipt.service.admin.VocabulariesManager 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));
}
Also used : AppConfig(org.gbif.ipt.config.AppConfig) RegistrationManager(org.gbif.ipt.service.admin.RegistrationManager) RestJsonApiDataCiteService(org.gbif.doi.service.datacite.RestJsonApiDataCiteService) Organisation(org.gbif.ipt.model.Organisation) UserEmailConverter(org.gbif.ipt.model.converter.UserEmailConverter) JdbcInfoConverter(org.gbif.ipt.model.converter.JdbcInfoConverter) VocabulariesManager(org.gbif.ipt.service.admin.VocabulariesManager) Properties(java.util.Properties) BigDecimal(java.math.BigDecimal) Eml2Rtf(org.gbif.ipt.task.Eml2Rtf) UserAccountManager(org.gbif.ipt.service.admin.UserAccountManager) OrganisationKeyConverter(org.gbif.ipt.model.converter.OrganisationKeyConverter) PasswordEncrypter(org.gbif.ipt.model.converter.PasswordEncrypter) DoiService(org.gbif.doi.service.DoiService) ExtensionManager(org.gbif.ipt.service.admin.ExtensionManager) SimpleTextProvider(org.gbif.ipt.struts2.SimpleTextProvider) GenerateDwcaFactory(org.gbif.ipt.task.GenerateDwcaFactory) SourceManager(org.gbif.ipt.service.manage.SourceManager) MockRegistryManager(org.gbif.ipt.mock.MockRegistryManager) RegistryManager(org.gbif.ipt.service.registry.RegistryManager) ConceptTermConverter(org.gbif.ipt.model.converter.ConceptTermConverter) ClientConfiguration(org.gbif.datacite.rest.client.configuration.ClientConfiguration) ExtensionRowTypeConverter(org.gbif.ipt.model.converter.ExtensionRowTypeConverter)

Example 2 with VocabulariesManager

use of org.gbif.ipt.service.admin.VocabulariesManager in project ipt by gbif.

the class GenerateDwcaEventTest method getResource.

/**
 * Generates a test sampling event resource having an event core with occurrence extension.
 */
private Resource getResource(@NotNull File resourceXML, @NotNull File eventSourceFile, @NotNull File occurrenceSourceFile) throws IOException, SAXException, ParserConfigurationException, AlreadyExistingException, ImportException, InvalidFilenameException {
    UserAccountManager mockUserAccountManager = mock(UserAccountManager.class);
    UserEmailConverter mockEmailConverter = new UserEmailConverter(mockUserAccountManager);
    RegistrationManager mockRegistrationManager = mock(RegistrationManager.class);
    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);
    mockHandler = mock(ResourceManagerImpl.class);
    resourceDir = FileUtils.createTempDir();
    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);
    ExtensionManager extensionManager = mock(ExtensionManager.class);
    // construct event core Extension
    InputStream eventCoreIs = GenerateDwcaTest.class.getResourceAsStream("/extensions/dwc_event_2015-04-24.xml");
    Extension eventCore = extensionFactory.build(eventCoreIs);
    // construct occurrence core Extension
    InputStream occurrenceCoreIs = GenerateDwcaTest.class.getResourceAsStream("/extensions/dwc_occurrence_2015-04-24.xml");
    Extension occurrenceCore = extensionFactory.build(occurrenceCoreIs);
    // mock ExtensionManager returning occurrence core Extension
    when(extensionManager.get("http://rs.tdwg.org/dwc/terms/Occurrence")).thenReturn(occurrenceCore);
    when(extensionManager.get("http://rs.tdwg.org/dwc/terms/Event")).thenReturn(eventCore);
    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/event/event.zip");
    // retrieve sample eml.xml file
    File emlXML = FileUtils.getClasspathFile("resources/event/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
    mockSourceManager = new SourceManagerImpl(mock(AppConfig.class), mockDataDir);
    // create temp directory
    File tmpDataDir = FileUtils.createTempDir();
    when(mockDataDir.tmpDir()).thenReturn(tmpDataDir);
    // publication log file
    File publicationLogFile = new File(resourceDir, DataDir.PUBLICATION_LOG_FILENAME);
    when(mockDataDir.resourcePublicationLogFile(RESOURCE_SHORTNAME)).thenReturn(publicationLogFile);
    // create ResourceManagerImpl
    ResourceManagerImpl resourceManager = new ResourceManagerImpl(mockAppConfig, mockDataDir, mockEmailConverter, mockOrganisationKeyConverter, extensionRowTypeConverter, jdbcConverter, mockSourceManager, extensionManager, mockRegistryManager, conceptTermConverter, mockDwcaFactory, passwordEncrypter, mockEml2Rtf, mockVocabulariesManager, mockSimpleTextProvider, mockRegistrationManager);
    // create user
    User creator = new User();
    creator.setFirstname("Leonardo");
    creator.setLastname("Pisano");
    creator.setEmail("fi@liberabaci.com");
    creator.setLastLoginToNow();
    creator.setRole(User.Role.Manager);
    creator.setPassword("011235813");
    // create a new resource.
    resource = resourceManager.create(RESOURCE_SHORTNAME, Resource.CoreRowType.SAMPLINGEVENT.toString(), zippedResourceFolder, creator, baseAction);
    // copy event source file to tmp folder
    File copiedEvent = new File(resourceDir, "event.txt");
    // mock file to which event source file gets copied to
    when(mockDataDir.sourceFile(any(Resource.class), any(FileSource.class))).thenReturn(copiedEvent);
    // mock log file
    when(mockDataDir.sourceLogFile(anyString(), anyString())).thenReturn(new File(resourceDir, "log.txt"));
    // add event fileSource to test Resource
    FileSource eventFileSource = mockSourceManager.add(resource, eventSourceFile, "event.txt");
    resource.getMappings().get(0).setSource(eventFileSource);
    // copy occurrence source file to tmp folder
    File copiedOccurrence = new File(resourceDir, "occurrence.txt");
    // mock file to which occurrence source file gets copied to
    when(mockDataDir.sourceFile(any(Resource.class), any(FileSource.class))).thenReturn(copiedOccurrence);
    // add occurrence fileSource to test Resource
    FileSource occurrenceFileSource = mockSourceManager.add(resource, occurrenceSourceFile, "occurrence.txt");
    resource.getMappings().get(1).setSource(occurrenceFileSource);
    // mock creation of zipped dwca in temp directory - this later becomes the actual archive generated
    when(mockDataDir.tmpFile(anyString(), anyString())).thenReturn(new File(tmpDataDir, "dwca.zip"));
    // mock creation of versioned zipped dwca in resource directory
    when(mockDataDir.resourceDwcaFile(anyString(), any(BigDecimal.class))).thenReturn(new File(resourceDir, VERSIONED_ARCHIVE_FILENAME));
    return resource;
}
Also used : User(org.gbif.ipt.model.User) IPTModule(org.gbif.ipt.config.IPTModule) JdbcSupport(org.gbif.ipt.config.JdbcSupport) ServletModule(com.google.inject.servlet.ServletModule) UserAccountManager(org.gbif.ipt.service.admin.UserAccountManager) OrganisationKeyConverter(org.gbif.ipt.model.converter.OrganisationKeyConverter) Injector(com.google.inject.Injector) MockRegistryManager(org.gbif.ipt.mock.MockRegistryManager) RegistryManager(org.gbif.ipt.service.registry.RegistryManager) ConceptTermConverter(org.gbif.ipt.model.converter.ConceptTermConverter) ExtensionRowTypeConverter(org.gbif.ipt.model.converter.ExtensionRowTypeConverter) RegistrationManager(org.gbif.ipt.service.admin.RegistrationManager) InputStream(java.io.InputStream) ResourceManagerImpl(org.gbif.ipt.service.manage.impl.ResourceManagerImpl) FileSource(org.gbif.ipt.model.FileSource) Resource(org.gbif.ipt.model.Resource) BaseAction(org.gbif.ipt.action.BaseAction) SourceManagerImpl(org.gbif.ipt.service.manage.impl.SourceManagerImpl) UserEmailConverter(org.gbif.ipt.model.converter.UserEmailConverter) VocabulariesManager(org.gbif.ipt.service.admin.VocabulariesManager) JdbcInfoConverter(org.gbif.ipt.model.converter.JdbcInfoConverter) BigDecimal(java.math.BigDecimal) Extension(org.gbif.ipt.model.Extension) PasswordEncrypter(org.gbif.ipt.model.converter.PasswordEncrypter) VocabulariesManagerImpl(org.gbif.ipt.service.admin.impl.VocabulariesManagerImpl) ExtensionManager(org.gbif.ipt.service.admin.ExtensionManager) Struts2GuicePluginModule(com.google.inject.struts2.Struts2GuicePluginModule) ExtensionFactory(org.gbif.ipt.model.factory.ExtensionFactory) SimpleTextProvider(org.gbif.ipt.struts2.SimpleTextProvider) HttpClient(org.gbif.utils.HttpClient) ThesaurusHandlingRule(org.gbif.ipt.model.factory.ThesaurusHandlingRule) ArchiveFile(org.gbif.dwc.ArchiveFile) File(java.io.File) SAXParserFactory(javax.xml.parsers.SAXParserFactory)

Example 3 with VocabulariesManager

use of org.gbif.ipt.service.admin.VocabulariesManager in project ipt by gbif.

the class ExtensionFactoryTest method getFactory.

public static ExtensionFactory getFactory() throws Exception {
    IPTModule mod = new IPTModule();
    SAXParserFactory sax = mod.provideNsAwareSaxParserFactory();
    HttpClient client = HttpUtil.newDefaultMultithreadedClient();
    VocabulariesManager vocabulariesManager = mock(VocabulariesManager.class);
    Vocabulary v = new Vocabulary();
    v.setUriString("http://rs.gbif.org/vocabulary/gbif/nomenclatural_code");
    v.setTitle("Nomenclatural Codes");
    when(vocabulariesManager.get(new URL("http://rs.gbif.org/vocabulary/gbif/nomenclatural_code.xml"))).thenReturn(v);
    ThesaurusHandlingRule thesaurusHandlingRule = new ThesaurusHandlingRule(vocabulariesManager);
    return new ExtensionFactory(thesaurusHandlingRule, sax, client);
}
Also used : Vocabulary(org.gbif.ipt.model.Vocabulary) IPTModule(org.gbif.ipt.config.IPTModule) HttpClient(org.gbif.utils.HttpClient) VocabulariesManager(org.gbif.ipt.service.admin.VocabulariesManager) URL(java.net.URL) SAXParserFactory(javax.xml.parsers.SAXParserFactory)

Example 4 with VocabulariesManager

use of org.gbif.ipt.service.admin.VocabulariesManager 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;
}
Also used : User(org.gbif.ipt.model.User) IPTModule(org.gbif.ipt.config.IPTModule) JdbcSupport(org.gbif.ipt.config.JdbcSupport) ServletModule(com.google.inject.servlet.ServletModule) KeywordSet(org.gbif.metadata.eml.KeywordSet) UserAccountManager(org.gbif.ipt.service.admin.UserAccountManager) OrganisationKeyConverter(org.gbif.ipt.model.converter.OrganisationKeyConverter) Injector(com.google.inject.Injector) MockRegistryManager(org.gbif.ipt.mock.MockRegistryManager) RegistryManager(org.gbif.ipt.service.registry.RegistryManager) ConceptTermConverter(org.gbif.ipt.model.converter.ConceptTermConverter) ExtensionRowTypeConverter(org.gbif.ipt.model.converter.ExtensionRowTypeConverter) MockAppConfig(org.gbif.ipt.mock.MockAppConfig) AppConfig(org.gbif.ipt.config.AppConfig) Agent(org.gbif.metadata.eml.Agent) InputStream(java.io.InputStream) ResourceManagerImpl(org.gbif.ipt.service.manage.impl.ResourceManagerImpl) Resource(org.gbif.ipt.model.Resource) BaseAction(org.gbif.ipt.action.BaseAction) SourceManagerImpl(org.gbif.ipt.service.manage.impl.SourceManagerImpl) UserEmailConverter(org.gbif.ipt.model.converter.UserEmailConverter) VocabulariesManager(org.gbif.ipt.service.admin.VocabulariesManager) JdbcInfoConverter(org.gbif.ipt.model.converter.JdbcInfoConverter) Extension(org.gbif.ipt.model.Extension) PasswordEncrypter(org.gbif.ipt.model.converter.PasswordEncrypter) VocabulariesManagerImpl(org.gbif.ipt.service.admin.impl.VocabulariesManagerImpl) ExtensionManager(org.gbif.ipt.service.admin.ExtensionManager) Struts2GuicePluginModule(com.google.inject.struts2.Struts2GuicePluginModule) ExtensionFactory(org.gbif.ipt.model.factory.ExtensionFactory) SimpleTextProvider(org.gbif.ipt.struts2.SimpleTextProvider) HttpClient(org.gbif.utils.HttpClient) ThesaurusHandlingRule(org.gbif.ipt.model.factory.ThesaurusHandlingRule) SourceManager(org.gbif.ipt.service.manage.SourceManager) File(java.io.File) SAXParserFactory(javax.xml.parsers.SAXParserFactory)

Example 5 with VocabulariesManager

use of org.gbif.ipt.service.admin.VocabulariesManager in project ipt by gbif.

the class GenerateDwcaIT method getResource.

/**
 * Generates a test Resource.
 * </br>
 * The test resource is built from the test occurrence resource /res1 (res1/resource.xml, res1/eml.xml) mocking all
 * necessary methods executed by GenerateDwca.call().
 * </br>
 * For flexibility, the source file used to generate the core data file can be changed. The columns of this
 * source file must match the resourceXML configuration file passed in. By changing the source file and resource
 * configuration file, multiple scenarios can be created for testing.
 *
 * @param resourceXML resource (XML) configuration file defining column mapping of sourceFile
 * @param sourceFile  source file
 *
 * @return test Resource
 */
private Resource getResource(@NotNull File resourceXML, @NotNull File sourceFile) throws IOException, SAXException, ParserConfigurationException, AlreadyExistingException, ImportException, InvalidFilenameException {
    UserAccountManager mockUserAccountManager = mock(UserAccountManager.class);
    UserEmailConverter mockEmailConverter = new UserEmailConverter(mockUserAccountManager);
    RegistrationManager mockRegistrationManager = mock(RegistrationManager.class);
    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);
    when(extensionManager.get("http://rs.tdwg.org/dwc/xsd/simpledarwincore/SimpleDarwinRecord")).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
    mockSourceManager = new SourceManagerImpl(mock(AppConfig.class), mockDataDir);
    // archival mode on
    when(mockAppConfig.isArchivalMode()).thenReturn(true);
    // create ResourceManagerImpl
    ResourceManagerImpl resourceManager = new ResourceManagerImpl(mockAppConfig, mockDataDir, mockEmailConverter, mockOrganisationKeyConverter, extensionRowTypeConverter, jdbcConverter, mockSourceManager, extensionManager, mockRegistryManager, conceptTermConverter, mockDwcaFactory, passwordEncrypter, mockEml2Rtf, mockVocabulariesManager, mockSimpleTextProvider, mockRegistrationManager);
    // create a new resource.
    // create user
    User creator = new User();
    creator.setFirstname("Leonardo");
    creator.setLastname("Pisano");
    creator.setEmail("fi@liberabaci.com");
    creator.setLastLoginToNow();
    creator.setRole(User.Role.Manager);
    creator.setPassword("011235813");
    Resource resource = resourceManager.create(RESOURCE_SHORTNAME, null, zippedResourceFolder, creator, baseAction);
    // copy source file to tmp folder
    File copied = new File(resourceDir, "occurrence.txt");
    // mock file to which source file gets copied to
    when(mockDataDir.sourceFile(any(Resource.class), any(FileSource.class))).thenReturn(copied);
    // publication log file
    File publicationLogFile = new File(resourceDir, DataDir.PUBLICATION_LOG_FILENAME);
    when(mockDataDir.resourcePublicationLogFile(RESOURCE_SHORTNAME)).thenReturn(publicationLogFile);
    // mock log file
    when(mockDataDir.sourceLogFile(anyString(), anyString())).thenReturn(new File(resourceDir, "log.txt"));
    // add SourceBase.TextFileSource fileSource to test Resource
    FileSource fileSource = mockSourceManager.add(resource, sourceFile, "occurrence.txt");
    resource.getMappings().get(0).setSource(fileSource);
    // mock creation of zipped dwca in temp directory - this later becomes the actual archive generated
    when(mockDataDir.tmpFile(anyString(), anyString())).thenReturn(new File(tmpDataDir, "dwca.zip"));
    // mock creation of versioned zipped dwca in resource directory
    when(mockDataDir.resourceDwcaFile(anyString(), any(BigDecimal.class))).thenReturn(new File(resourceDir, VERSIONED_ARCHIVE_FILENAME));
    return resource;
}
Also used : User(org.gbif.ipt.model.User) IPTModule(org.gbif.ipt.config.IPTModule) JdbcSupport(org.gbif.ipt.config.JdbcSupport) ServletModule(com.google.inject.servlet.ServletModule) UserAccountManager(org.gbif.ipt.service.admin.UserAccountManager) OrganisationKeyConverter(org.gbif.ipt.model.converter.OrganisationKeyConverter) Injector(com.google.inject.Injector) MockRegistryManager(org.gbif.ipt.mock.MockRegistryManager) RegistryManager(org.gbif.ipt.service.registry.RegistryManager) ConceptTermConverter(org.gbif.ipt.model.converter.ConceptTermConverter) ExtensionRowTypeConverter(org.gbif.ipt.model.converter.ExtensionRowTypeConverter) RegistrationManager(org.gbif.ipt.service.admin.RegistrationManager) InputStream(java.io.InputStream) ResourceManagerImpl(org.gbif.ipt.service.manage.impl.ResourceManagerImpl) FileSource(org.gbif.ipt.model.FileSource) Resource(org.gbif.ipt.model.Resource) BaseAction(org.gbif.ipt.action.BaseAction) SourceManagerImpl(org.gbif.ipt.service.manage.impl.SourceManagerImpl) UserEmailConverter(org.gbif.ipt.model.converter.UserEmailConverter) VocabulariesManager(org.gbif.ipt.service.admin.VocabulariesManager) JdbcInfoConverter(org.gbif.ipt.model.converter.JdbcInfoConverter) BigDecimal(java.math.BigDecimal) Extension(org.gbif.ipt.model.Extension) PasswordEncrypter(org.gbif.ipt.model.converter.PasswordEncrypter) VocabulariesManagerImpl(org.gbif.ipt.service.admin.impl.VocabulariesManagerImpl) ExtensionManager(org.gbif.ipt.service.admin.ExtensionManager) Struts2GuicePluginModule(com.google.inject.struts2.Struts2GuicePluginModule) ExtensionFactory(org.gbif.ipt.model.factory.ExtensionFactory) SimpleTextProvider(org.gbif.ipt.struts2.SimpleTextProvider) HttpClient(org.gbif.utils.HttpClient) ThesaurusHandlingRule(org.gbif.ipt.model.factory.ThesaurusHandlingRule) ArchiveFile(org.gbif.dwc.ArchiveFile) File(java.io.File) SAXParserFactory(javax.xml.parsers.SAXParserFactory)

Aggregations

VocabulariesManager (org.gbif.ipt.service.admin.VocabulariesManager)9 RegistrationManager (org.gbif.ipt.service.admin.RegistrationManager)7 SimpleTextProvider (org.gbif.ipt.struts2.SimpleTextProvider)7 Resource (org.gbif.ipt.model.Resource)6 ExtensionManager (org.gbif.ipt.service.admin.ExtensionManager)6 UserAccountManager (org.gbif.ipt.service.admin.UserAccountManager)6 File (java.io.File)5 BigDecimal (java.math.BigDecimal)5 SAXParserFactory (javax.xml.parsers.SAXParserFactory)5 AppConfig (org.gbif.ipt.config.AppConfig)5 IPTModule (org.gbif.ipt.config.IPTModule)5 MockRegistryManager (org.gbif.ipt.mock.MockRegistryManager)5 Extension (org.gbif.ipt.model.Extension)5 ConceptTermConverter (org.gbif.ipt.model.converter.ConceptTermConverter)5 ExtensionRowTypeConverter (org.gbif.ipt.model.converter.ExtensionRowTypeConverter)5 JdbcInfoConverter (org.gbif.ipt.model.converter.JdbcInfoConverter)5 OrganisationKeyConverter (org.gbif.ipt.model.converter.OrganisationKeyConverter)5 PasswordEncrypter (org.gbif.ipt.model.converter.PasswordEncrypter)5 UserEmailConverter (org.gbif.ipt.model.converter.UserEmailConverter)5 ExtensionFactory (org.gbif.ipt.model.factory.ExtensionFactory)5