@Override public void unimportXAR(File xarFile, PackageConfiguration configuration) throws IOException, XWikiException { if (configuration.getWiki() == null) { XWikiContext context = getXWikiContext(); if (context.getWiki().isVirtualMode()) { List<String> wikis = getXWikiContext().getWiki().getVirtualWikisDatabaseNames(context); if (!wikis.contains(context.getMainXWiki())) { unimportXARFromWiki(xarFile, context.getMainXWiki(), configuration); } for (String subwiki : wikis) { unimportXARFromWiki(xarFile, subwiki, configuration); } } else { unimportXARFromWiki(xarFile, context.getMainXWiki(), configuration); } } else { unimportXARFromWiki(xarFile, configuration.getWiki(), configuration); } }
@Override public void unimportPages(Collection<XarEntry> pages, PackageConfiguration configuration) throws XWikiException { if (configuration.getWiki() == null) { XWikiContext context = getXWikiContext(); if (context.getWiki().isVirtualMode()) { List<String> wikis = getXWikiContext().getWiki().getVirtualWikisDatabaseNames(context); if (!wikis.contains(context.getMainXWiki())) { unimportPagesFromWiki(pages, context.getMainXWiki(), configuration); } for (String subwiki : wikis) { unimportPagesFromWiki(pages, subwiki, configuration); } } else { unimportPagesFromWiki(pages, context.getMainXWiki(), configuration); } } else { unimportPagesFromWiki(pages, configuration.getWiki(), configuration); } }
private XarMergeResult importXARToWiki( XarFile previousXarFile, InputStream xarInputStream, String wiki, PackageConfiguration configuration) throws IOException { XarMergeResult mergeResult = new XarMergeResult(); ZipArchiveInputStream zis = new ZipArchiveInputStream(xarInputStream); XWikiContext xcontext = getXWikiContext(); String currentWiki = xcontext.getDatabase(); try { xcontext.setDatabase(wiki); this.observation.notify(new XARImportingEvent(), null, xcontext); for (ArchiveEntry entry = zis.getNextEntry(); entry != null; entry = zis.getNextEntry()) { if (!entry.isDirectory()) { DocumentImporterHandler documentHandler = new DocumentImporterHandler(this, this.componentManager, wiki); try { documentHandler.setPreviousXarFile(previousXarFile); documentHandler.setConfiguration(configuration); parseDocument(zis, documentHandler); if (documentHandler.getMergeResult() != null) { mergeResult.addMergeResult(documentHandler.getMergeResult()); } if (configuration.isLogEnabled()) { this.logger.info( "Successfully imported document [{}] in language [{}]", documentHandler.getDocument().getDocumentReference(), documentHandler.getDocument().getRealLanguage()); } } catch (NotADocumentException e) { // Impossible to know that before parsing this.logger.debug("Entry [" + entry + "] is not a document", e); } catch (Exception e) { this.logger.error("Failed to parse document [" + entry.getName() + "]", e); if (configuration.isLogEnabled()) { this.logger.info( "Failed to import document [{}] in language [{}]", documentHandler.getDocument().getDocumentReference(), documentHandler.getDocument().getRealLanguage()); } } } } } finally { this.observation.notify(new XARImportedEvent(), null, xcontext); xcontext.setDatabase(currentWiki); } return mergeResult; }