package com.hundsun.ares.studio.jres.service.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 com.hundsun.ares.studio.biz.ARESObject; 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.HisSheetParserFactory; 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.jres.service.Service; public class ImportServiceWizard extends ImportExcelWizard { @Override protected BizImportOperation createImportOperation(File[] files) { BizImportOperation operation = new BizImportOperation(files, this) { @Override protected IARESModuleRoot getRoot(Resource res) { if (StringUtils.equals(res.type, IBizResType.Service)) { return getBizRoot(); } else if (StringUtils.equals(res.type, IBizResType.Object)) { IFolder objFolder = ARESElementUtil.getModuleRootFolder(ImportServiceWizard.this.project, IBizConstants.OBJ_ROOT); if (objFolder != null) { return (IARESModuleRoot) ARESCore.create(objFolder); } else { return getBizRoot(); } } return null; } @Override protected ExcelParser createParser(File file, Log log) { ExcelParser parser = new ExcelParser(file, log); parser.context.put("project", this.project); ISheetParserFactory[] factories = new ISheetParserFactory[] { ResourceListSheetParserFactory.INSTANCE, BizSheetParserFactory.INSTANCE, ServiceSheetParserFactory.INSTANCE, HisSheetParserFactory.INSTANCE }; ComposedSheetHandlerFactory factory = new ComposedSheetHandlerFactory(factories); parser.factory = factory; return parser; } /* (non-Javadoc) * @see com.hundsun.ares.studio.biz.excel.ImportOperation#processParameterTypes(org.eclipse.core.runtime.IProgressMonitor) */ protected void setParameterTypes(IProgressMonitor monitor) { monitor.beginTask("������������...", resources.size()); for (Resource res : resources.values()) { if (res.info instanceof Service) { Service srv = (Service) res.info; for (Parameter p : srv.getInterface().getInputParameters()) { setParameterType(p); } for (Parameter p : srv.getInterface().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; } protected IARESModuleRoot getBizRoot() { IFolder bizFolder = ARESElementUtil.getModuleRootFolder(this.project, IBizConstants.BIZ_ROOT2); if (bizFolder == null) bizFolder = ARESElementUtil.getModuleRootFolder(this.project, IBizConstants.BIZ_ROOT); return (IARESModuleRoot) ARESCore.create(bizFolder); } }