package org.nightlabs.jfire.dynamictrade.admin.ui.createproducttype; import javax.jdo.FetchPlan; import javax.jdo.JDOHelper; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.widgets.Display; import org.nightlabs.base.ui.editor.Editor2PerspectiveRegistry; import org.nightlabs.base.ui.job.Job; import org.nightlabs.base.ui.wizard.DynamicPathWizard; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jdo.ObjectIDUtil; import org.nightlabs.jfire.base.JFireEjb3Factory; import org.nightlabs.jfire.base.login.ui.Login; import org.nightlabs.jfire.dynamictrade.DynamicTradeManagerRemote; import org.nightlabs.jfire.dynamictrade.admin.ui.editor.DynamicProductTypeEditor; import org.nightlabs.jfire.dynamictrade.admin.ui.editor.DynamicProductTypeEditorInput; import org.nightlabs.jfire.dynamictrade.admin.ui.priceconfig.ChooseDynamicTradePriceConfigPage; import org.nightlabs.jfire.dynamictrade.admin.ui.resource.Messages; import org.nightlabs.jfire.dynamictrade.store.DynamicProductType; import org.nightlabs.jfire.idgenerator.IDGenerator; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.store.dao.ProductTypeDAO; import org.nightlabs.jfire.store.id.ProductTypeID; import org.nightlabs.progress.NullProgressMonitor; import org.nightlabs.progress.ProgressMonitor; public class CreateDynamicProductTypeWizard extends DynamicPathWizard { private ProductTypeID parentProductTypeID; private ChooseDynamicTradePriceConfigPage selectPriceConfigPage; // private OwnerVendorPage ownerVendorPage; private static String[] FETCH_GROUPS_PARENT_PRODUCT_TYPE = { FetchPlan.DEFAULT, ProductType.FETCH_GROUP_NAME, ProductType.FETCH_GROUP_OWNER, ProductType.FETCH_GROUP_VENDOR, ProductType.FETCH_GROUP_DELIVERY_CONFIGURATION }; public CreateDynamicProductTypeWizard(ProductTypeID parentProductTypeID) { this.parentProductTypeID = parentProductTypeID; } private DynamicProductTypeNamePage dynamicProductTypeNamePage; @Override public void addPages() { assert parentProductTypeID != null; dynamicProductTypeNamePage = new DynamicProductTypeNamePage(parentProductTypeID); addPage(dynamicProductTypeNamePage); selectPriceConfigPage = new ChooseDynamicTradePriceConfigPage(parentProductTypeID); addPage(selectPriceConfigPage); // ownerVendorPage = new OwnerVendorPage(parentProductTypeID); // addPage(ownerVendorPage); } @Override public boolean performFinish() { ProductType parentProductType = ProductTypeDAO.sharedInstance().getProductType( parentProductTypeID, FETCH_GROUPS_PARENT_PRODUCT_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor()); // TODO async! final DynamicProductType dynamicProductType = new DynamicProductType( IDGenerator.getOrganisationID(), ObjectIDUtil.makeValidIDString(dynamicProductTypeNamePage.getDynamicProductTypeNameBuffer().getText()) + '_' + ProductType.createProductTypeID(), parentProductType, dynamicProductTypeNamePage.getInheritanceNature(), dynamicProductTypeNamePage.getPackageNature()); dynamicProductType.getName().copyFrom(dynamicProductTypeNamePage.getDynamicProductTypeNameBuffer()); dynamicProductType.getFieldMetaData(ProductType.FieldName.name).setValueInherited(false); dynamicProductType.getFieldMetaData(DynamicProductType.FieldName.propertySet).setValueInherited(false); selectPriceConfigPage.configureProductType(dynamicProductType); // if(ownerVendorPage.isPageComplete()) // ownerVendorPage.configureProductType(dynamicProductType); Job job = new Job(Messages.getString("org.nightlabs.jfire.dynamictrade.admin.ui.createproducttype.CreateDynamicProductTypeWizard.createDynamicProductTypeJob.name")) { //$NON-NLS-1$ @Override protected IStatus run(ProgressMonitor monitor) throws Exception { DynamicTradeManagerRemote vm = JFireEjb3Factory.getRemoteBean(DynamicTradeManagerRemote.class, Login.getLogin().getInitialContextProperties()); DynamicProductType vt = vm.storeDynamicProductType(dynamicProductType, true, new String[] { FetchPlan.DEFAULT }, 1); final ProductTypeID dynamicProductTypeID = (ProductTypeID) JDOHelper.getObjectId(vt); // TODO remove this DEBUG stuff // StoreManager sm = JFireEjbFactory.getBean(StoreManager.class, Login.getLogin().getInitialContextProperties()); // sm.setProductTypeStatus_published(dynamicProductTypeID, false, null, 1); // if (ProductType.INHERITANCE_NATURE_LEAF == dynamicProductType.getInheritanceNature()) { // sm.setProductTypeStatus_confirmed(dynamicProductTypeID, false, null, 1); // sm.setProductTypeStatus_saleable(dynamicProductTypeID, true, false, null, 1); // } // end DEBUG stuff Display.getDefault().asyncExec(new Runnable() { public void run() { try { Editor2PerspectiveRegistry.sharedInstance().openEditor( new DynamicProductTypeEditorInput(dynamicProductTypeID), DynamicProductTypeEditor.EDITOR_ID); } catch (Exception e) { throw new RuntimeException(e); } } }); return Status.OK_STATUS; } }; job.setUser(true); job.setPriority(org.eclipse.core.runtime.jobs.Job.SHORT); job.schedule(); return true; } public void setParentProductTypeID(ProductTypeID parentProductTypeID) { this.parentProductTypeID = parentProductTypeID; } }