// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.repository.imports; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IPath; import org.eclipse.ui.internal.wizards.datatransfer.TarLeveledStructureProvider; import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider; import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider; /** */ public class ProviderManager extends ResourcesManager { private IImportStructureProvider provider; public ProviderManager(Object provider) { this.provider = (IImportStructureProvider) provider; } public InputStream getStream(IPath path) { return provider.getContents(path2Object.get(path)); } public boolean collectPath2Object(Object root) { return doCollectItemFiles(root, 0); } private boolean doCollectItemFiles(Object entry, int level) { List children = provider.getChildren(entry); if (children == null) { children = new ArrayList(1); } Iterator childrenEnum = children.iterator(); while (childrenEnum.hasNext()) { Object child = childrenEnum.next(); if (provider.isFolder(child)) { doCollectItemFiles(child, level + 1); } else { add(provider.getFullPath(child), child); } } return true; } public void closeResource() { if (provider instanceof ZipLeveledStructureProvider) { ((ZipLeveledStructureProvider) provider).closeArchive(); } if (provider instanceof TarLeveledStructureProvider) { ((TarLeveledStructureProvider) provider).closeArchive(); } } /** * Getter for provider. * * @return the provider */ public IImportStructureProvider getProvider() { return this.provider; } }