/**
*
*/
package org.nightlabs.jfire.trade.ui.legalentity.edit;
import java.util.Collections;
import java.util.List;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.nightlabs.base.ui.wizard.AbstractWizardPageProviderDelegate;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.base.JFireEjb3Factory;
import org.nightlabs.jfire.base.login.ui.Login;
import org.nightlabs.jfire.base.ui.person.search.PersonSearchWizardPage;
import org.nightlabs.jfire.person.Person;
import org.nightlabs.jfire.prop.IStruct;
import org.nightlabs.jfire.trade.LegalEntity;
import org.nightlabs.jfire.trade.TradeManagerRemote;
/**
* @author Daniel Mazurek
*
*/
public class LegalEntitySearchCreateWizardDelegate extends AbstractWizardPageProviderDelegate {
private PersonSearchWizardPage personSearchWizardPage;
/**
*
*/
public LegalEntitySearchCreateWizardDelegate() {
personSearchWizardPage = new PersonSearchWizardPage(null);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.wizard.IPageProvider#getPages()
*/
@Override
public List<? extends IWizardPage> getPages() {
// Prepare the PersonSearchWizardPage, if there are preparatorial information available.
IWizard iWizard = getWizard();
if (iWizard instanceof ILegalEntitySearchWizard) {
ILegalEntitySearchWizard legalEntityWizard = (ILegalEntitySearchWizard) iWizard;
personSearchWizardPage = new PersonSearchWizardPage(
legalEntityWizard.getQuickSearchText(),
legalEntityWizard.getAllowNewLegalEntityCreation(),
legalEntityWizard.getAllowEditLegalEntity()
);
}
return Collections.singletonList(personSearchWizardPage); // Since there is only ONE page...
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.wizard.IWizardDelegate#performFinish()
*/
@Override
public boolean performFinish() {
Person selectedPerson = personSearchWizardPage.getSelectedPerson();
try {
TradeManagerRemote tradeManager = JFireEjb3Factory.getRemoteBean(TradeManagerRemote.class, Login.getLogin().getInitialContextProperties());
IStruct struct = null;
boolean wasInflated = selectedPerson.isInflated();
if (wasInflated) {
// Need to deflate the person before storing.
struct = selectedPerson.getStructure();
selectedPerson.deflate();
}
LegalEntity legalEntity = tradeManager.storePersonAsLegalEntity(selectedPerson, true, LegalEntityPersonEditor.FETCH_GROUPS_FULL_LE_DATA,
NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT);
if (wasInflated) {
// re-inflate after retrieval
legalEntity.getPerson().inflate(struct);
}
((ILegalEntitySearchWizard) getWizard()).setLegalEntity(legalEntity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
}
}