package com.hundsun.ares.studio.logic.ui.wizard; import java.io.File; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IFolder; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.hundsun.ares.studio.atom.AtomFunction; import com.hundsun.ares.studio.atom.constants.IAtomConstants; import com.hundsun.ares.studio.atom.constants.IAtomResType; import com.hundsun.ares.studio.atom.excel.AtomServiceSheetParserFactory; import com.hundsun.ares.studio.biz.ARESObject; import com.hundsun.ares.studio.biz.BizInterface; import com.hundsun.ares.studio.biz.Parameter; import com.hundsun.ares.studio.biz.constants.IBizConstants; import com.hundsun.ares.studio.biz.constants.IBizResType; import com.hundsun.ares.studio.biz.excel.BizImportOperation; import com.hundsun.ares.studio.biz.excel.factories.BizSheetParserFactory; import com.hundsun.ares.studio.biz.excel.factories.ResourceListSheetParserFactory; import com.hundsun.ares.studio.biz.ui.wizard.ImportExcelWizard; import com.hundsun.ares.studio.core.ARESCore; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.excel.ComposedSheetHandlerFactory; import com.hundsun.ares.studio.core.excel.ExcelParser; import com.hundsun.ares.studio.core.excel.ISheetParserFactory; import com.hundsun.ares.studio.core.excel.Resource; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.core.util.log.Log; import com.hundsun.ares.studio.logic.constants.ILogicConstants; import com.hundsun.ares.studio.logic.constants.ILogicResType; import com.hundsun.ares.studio.logic.excel.LogicServiceSheetParserFactory; import com.hundsun.ares.studio.logic.provider.LogicUI; import com.hundsun.ares.studio.procdure.Procedure; import com.hundsun.ares.studio.procdure.constants.IProcedureResType; import com.hundsun.ares.studio.procdure.excel.ProcedureSheetParserFactory; public class ImportLogicWizard extends ImportExcelWizard{ /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#createPageControls(org.eclipse.swt.widgets.Composite) */ @Override public void createPageControls(Composite pageContainer) { super.createPageControls(pageContainer); setWindowTitle("����ҵ���߼�"); getShell().setImage(AbstractUIPlugin.imageDescriptorFromPlugin(LogicUI.PLUGIN_ID, "icons/full/obj16/logicwizard.gif").createImage()); page.setTitle("����ҵ���߼�"); page.setMessage("ѡ����Ҫ�����ҵ���߼�(�ļ�����Ŀ¼)."); } /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#addPage(org.eclipse.jface.wizard.IWizardPage) */ @Override public void addPage(IWizardPage page) { super.addPage(page); } @Override protected BizImportOperation createImportOperation(File[] files) { BizImportOperation operation = new BizImportOperation(files, this) { @Override protected IARESModuleRoot getRoot(Resource res) { if (StringUtils.equals(res.type, IAtomResType.ATOM_FUNCTION) || StringUtils.equals(res.type, IAtomResType.ATOM_SERVICE) || StringUtils.equals(res.type, IProcedureResType.PROCEDURE)) { IFolder atomFolder = ARESElementUtil.getModuleRootFolder(ImportLogicWizard.this.project, IAtomConstants.ATOM_ROOT_TYPE); return (IARESModuleRoot) ARESCore.create(atomFolder); } else if (StringUtils.equals(res.type, ILogicResType.LOGIC_SERVICE) || StringUtils.equals(res.type, ILogicResType.LOGIC_FUNCTION)) { IFolder logicFolder = ARESElementUtil.getModuleRootFolder(ImportLogicWizard.this.project, ILogicConstants.LOGIC_ROOT_TYPE); return (IARESModuleRoot) ARESCore.create(logicFolder); } else if (StringUtils.equals(res.type, IBizResType.Object)) { IFolder objFolder = ARESElementUtil.getModuleRootFolder(ImportLogicWizard.this.project, IBizConstants.OBJ_ROOT); if (objFolder == null) { objFolder = ARESElementUtil.getModuleRootFolder(ImportLogicWizard.this.project, ILogicConstants.LOGIC_ROOT_TYPE); } return (IARESModuleRoot) ARESCore.create(objFolder); } return null; } @Override protected ExcelParser createParser(File file, Log log) { ExcelParser parser = new ExcelParser(file, log); ISheetParserFactory[] factories = new ISheetParserFactory[] { ResourceListSheetParserFactory.INSTANCE, BizSheetParserFactory.INSTANCE, AtomServiceSheetParserFactory.INSTANCE, ProcedureSheetParserFactory.INSTANCE, LogicServiceSheetParserFactory.INSTANCE }; ComposedSheetHandlerFactory factory = new ComposedSheetHandlerFactory(factories); parser.factory = factory; return parser; } /* (non-Javadoc) * @see com.hundsun.ares.studio.biz.excel.ImportOperation#setParameterTypes(org.eclipse.core.runtime.IProgressMonitor) */ @Override protected void setParameterTypes(IProgressMonitor monitor) { monitor.beginTask("������������...", resources.size()); for (Resource res : resources.values()) { if(res.info instanceof Procedure) { //���� Procedure procedure = (Procedure)res.info; for (Parameter p : procedure.getInputParameters()) { setParameterType(p); } for (Parameter p : procedure.getOutputParameters()) { setParameterType(p); } for (Parameter p : procedure.getInternalVariables()) { setParameterType(p); } }else if(res.info instanceof AtomFunction) { //AF��AS��LS��LF AtomFunction af = (AtomFunction)res.info; for (Parameter p : af.getInputParameters()) { setParameterType(p); } for (Parameter p : af.getOutputParameters()) { setParameterType(p); } for (Parameter p : af.getInternalVariables()) { setParameterType(p); } }else if (res.info instanceof BizInterface) { BizInterface iface = (BizInterface) res.info; for (Parameter p : iface.getInputParameters()) { setParameterType(p); } for (Parameter p : iface.getOutputParameters()) { setParameterType(p); } } else if (res.info instanceof ARESObject) { ARESObject obj = (ARESObject) res.info; for (Parameter p : obj.getProperties()) { setParameterType(p); } } monitor.worked(1); } monitor.done(); } }; return operation; } }