package org.safehaus.penrose.studio.federation.linking; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.operation.IRunnableWithProgress; import org.safehaus.penrose.federation.FederationRepositoryConfig; import org.safehaus.penrose.federation.IdentityLinkingResult; import org.safehaus.penrose.ldap.SearchResult; import org.safehaus.penrose.ldap.DN; import org.safehaus.penrose.studio.federation.linking.editor.IdentityLinkingPage; import java.lang.reflect.InvocationTargetException; import java.util.Collection; /** * @author Endi Sukma Dewata */ public class DeleteTask implements IRunnableWithProgress { IdentityLinkingPage page; FederationRepositoryConfig repository; private IdentityLinkingResult data; private String baseDn; private String filter; private int scope; private Collection<SearchResult> globalEntries; public DeleteTask(IdentityLinkingPage page, FederationRepositoryConfig repository) { this.page = page; this.repository = repository; } public void run(final IProgressMonitor monitor) throws InvocationTargetException { try { monitor.beginTask("Deleting "+repository.getName()+"...", globalEntries.size()); for (SearchResult globalEntry : globalEntries) { if (monitor.isCanceled()) throw new InterruptedException(); monitor.subTask("Deleting "+globalEntry+"..."); DN localDn = data.getDn(); page.linkingClient.deleteEntry(localDn, globalEntry.getDn()); data.setSearched(false); data.removeLinkedEntry(globalEntry.getDn()); data.removeMatchedEntry(globalEntry.getDn()); page.loadLocalEntry(data); page.updateStatus(data); monitor.worked(1); } /* if (!data.hasLinks()) { Filter f = page.createFilter(data.getEntry(), filter); Collection<DN> matches = page.searchMatches(baseDn, f, scope); data.setMatches(matches); } */ } catch (InterruptedException e) { // ignore } catch (Exception e) { throw new InvocationTargetException(e); } finally { monitor.done(); } } public IdentityLinkingResult getData() { return data; } public void setData(IdentityLinkingResult data) { this.data = data; } public String getBaseDn() { return baseDn; } public void setBaseDn(String baseDn) { this.baseDn = baseDn; } public String getFilter() { return filter; } public void setFilter(String filter) { this.filter = filter; } public int getScope() { return scope; } public void setScope(int scope) { this.scope = scope; } public Collection<SearchResult> getGlobalEntries() { return globalEntries; } public void setGlobalEntries(Collection<SearchResult> globalEntries) { this.globalEntries = globalEntries; } }