package org.safehaus.penrose.studio.federation.linking.wizard;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.apache.log4j.Logger;
import org.safehaus.penrose.ldap.*;
import org.safehaus.penrose.partition.PartitionClient;
import org.safehaus.penrose.filter.Filter;
import org.safehaus.penrose.studio.federation.linking.wizard.LinkingResultsPage;
import org.safehaus.penrose.studio.federation.linking.wizard.LinkingSearchPage;
import org.safehaus.penrose.studio.dialog.ErrorDialog;
import java.util.Collection;
/**
* @author Endi Sukma Dewata
*/
public class LinkingWizard extends Wizard {
Logger log = Logger.getLogger(getClass());
private DN dn;
private Filter filter;
private SearchResult searchResult;
private PartitionClient partitionClient;
private Collection<SearchResult> results;
LinkingSearchPage searchPage;
LinkingResultsPage resultsPage;
public LinkingWizard() {
setWindowTitle("Linking Wizard");
}
public void addPages() {
searchPage = new LinkingSearchPage();
searchPage.setDn(dn);
searchPage.setFilter(filter);
searchPage.setSearchResult(searchResult);
searchPage.setPartitionClient(partitionClient);
addPage(searchPage);
resultsPage = new LinkingResultsPage();
resultsPage.setDn(dn);
resultsPage.setSearchResult(searchResult);
resultsPage.setPartitionClient(partitionClient);
addPage(resultsPage);
}
public IWizardPage getNextPage(IWizardPage page) {
if (page == searchPage) {
DN searchBaseDn = new DN(searchPage.getBaseDn());
String filter = searchPage.getFilter();
int scope = searchPage.getScope();
Collection<SearchResult> results = search(searchBaseDn, filter, scope);
resultsPage.setResults(results);
return resultsPage;
} else {
return super.getNextPage(page);
}
}
public Collection<SearchResult> search(DN baseDn, String filter, int scope) {
try {
SearchRequest request = new SearchRequest();
request.setDn(baseDn);
request.setFilter(filter);
request.setScope(scope);
SearchResponse response = new SearchResponse();
partitionClient.search(request, response);
return response.getResults();
} catch (Exception e) {
log.error(e.getMessage(), e);
ErrorDialog.open(e);
}
return null;
}
public boolean performFinish() {
try {
results = resultsPage.getSelections();
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
ErrorDialog.open(e);
return false;
}
}
public PartitionClient getPartitionClient() {
return partitionClient;
}
public void setPartitionClient(PartitionClient partitionClient) {
this.partitionClient = partitionClient;
}
public SearchResult getSearchResult() {
return searchResult;
}
public void setSearchResult(SearchResult searchResult) {
this.searchResult = searchResult;
}
public DN getDn() {
return dn;
}
public void setDn(DN dn) {
this.dn = dn;
}
public Collection<SearchResult> getResults() {
return results;
}
public void setResults(Collection<SearchResult> results) {
this.results = results;
}
public Filter getFilter() {
return filter;
}
public void setFilter(Filter filter) {
this.filter = filter;
}
}