import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.apache.commons.compress.archivers.tar.TarUtils; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import pl.edu.icm.model.bwmeta.y.constants.HierarchyWithLevelIds import pl.edu.icm.synat.api.services.store.StatelessStore import pl.edu.icm.synat.api.services.store.events.RecordEditedEvent import pl.edu.icm.synat.api.services.store.model.RecordConditions import pl.edu.icm.synat.api.services.store.model.RecordId import pl.edu.icm.synat.events.Event import pl.edu.icm.synat.events.EventBus import pl.edu.icm.synat.logic.services.auhtors.orcid.AuthorOrcidService; def sourceTarFile = '/mnt/sdcard/orcid/public_profiles.tar'; AuthorOrcidService service = serviceUtils.getService('author-orcid-service', AuthorOrcidService.class) new FileInputStream(sourceTarFile).with({ stream -> def gzipStrem = new GzipCompressorInputStream(stream); def tarInput = new TarArchiveInputStream(gzipStrem); def archiveEntry = tarInput.getNextEntry(); while(archiveEntry != null){ if(archiveEntry.getName().endsWith("xml")){ File outputFile = File.createTempFile("orcid", ".xml"); new FileOutputStream(outputFile).with ({ os -> IOUtils.copy(tarInput, os); }); service.importOrcidProfiles(outputFile.toURI()); outputFile.delete(); } archiveEntry = tarInput.getNextTarEntry(); } });