/**
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.procedure.ui.editor.page;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
import com.hundsun.ares.studio.core.ARESModelException;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.engin.logic.ResourceEngin;
import com.hundsun.ares.studio.procdure.provider.ProcedureUI;
import com.hundsun.ares.studio.procedure.compiler.oracle.constant.IProcedureEngineContextConstantOracle;
//import com.hundsun.ares.studio.procedure.compiler.mysql.constant.IProcedureEngineContextConstantMySQL;
import com.hundsun.ares.studio.ui.editor.text.TextEditorInput;
/**
* @author qinyuan
*
*/
public class ProcedurePreviewUpdater implements IPageChangedListener {
private List<String> skeletonList = new ArrayList<String>();
private String database = "oralce";
public ProcedurePreviewUpdater(String skeleton,String database){
skeletonList.add(skeleton);
this.database = database;
}
public ProcedurePreviewUpdater(String[] skeletons) {
skeletonList.addAll(Arrays.asList(skeletons));
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IPageChangedListener#pageChanged(org.eclipse.jface.dialogs.PageChangedEvent)
*/
@Override
public void pageChanged(PageChangedEvent event) {
if (event.getSelectedPage() instanceof ProcedurePreViewPage) {
ProcedurePreViewPage page = (ProcedurePreViewPage) event.getSelectedPage();
ResourceEngin engin = new ResourceEngin();
Map<Object, Object> context = new HashMap<Object, Object>();
IARESResource resource = page.getEditor().getARESResource();
context.put(IProcedureEngineContextConstantOracle.ResourceModel, page.getEditor().getInfo());
if(database.equalsIgnoreCase("mysql")){
context.put(IProcedureEngineContextConstantOracle.gen_related_info,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_GEN_RELATED_INFO));
}
else{//��Щ������ֻ��Oracle�²�������
// context.put(IProcedureEngineContextConstant.has_stock_two_ex, ProcedurePageHelper.hasProcedureStock2ExtendPage());
context.put(IProcedureEngineContextConstantOracle.auto_define_input_param,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_AUTO_DEFINE_PROC_INPARAM));
context.put(IProcedureEngineContextConstantOracle.not_define_connect_type,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_NOT_DEFINE_CONNECT_TYPE));
context.put(IProcedureEngineContextConstantOracle.return_error_info,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_RETURN_ERROR_INFO));
context.put(IProcedureEngineContextConstantOracle.gen_related_info,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_GEN_RELATED_INFO));
if(ProcedureUI.isStock2Procedure()) {
context.put(IProcedureEngineContextConstantOracle.gen_begin_code,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_GEN_BEGIN_CODE));
context.put(IProcedureEngineContextConstantOracle.gen_end_code,
ProcedureUI.getPlugin().getPreferenceStore().getBoolean(ProcedureUI.PER_GEN_END_CODE));
}else {
context.put(IProcedureEngineContextConstantOracle.gen_begin_code, false);
context.put(IProcedureEngineContextConstantOracle.gen_end_code, false);
}
}
// IARESProject project = resource.getARESProject();
// context.put(IEngineContextConstant.Aresproject, project);
// IFunctionMacroTokenService funcService = DataServiceManager.getInstance().getService(project, IFunctionMacroTokenService.class);
// context.put(IEngineContextConstant.Function_Macro_Service, funcService);
// context.put(IEngineContextConstant.UserMacro_Service, DataServiceManager.getInstance().getService(project,IUserMacroTokenService.class));
String text = "�������ɴ���......";
page.setInput(new TextEditorInput(text));
ProcedureGenCodeThread procedureGenCodeThread = new ProcedureGenCodeThread(page,skeletonList,engin,resource,context);
procedureGenCodeThread.genCode();
}
}
}