isight5 二次开发之 Application (1) 之优化过程结果显示

这两天折腾了一下 isight5.0 的 crack,总算能用上 optimization 模块了。


这段时间会做些二次开发方面的尝试,先占个位置,待这一两周内慢慢完善。


PS:github 也一直没怎么好好利用,就作为第一个 project 放上去吧。


建立简单模型的例子见:


isight5.0 二次开发之 Application (2)


============================分割线=================================================


2012年7月20日,折腾了半天,依然没有解决问题,甚至尝试了 ValueChangeListener 之类的方法。


很是无奈,之后发现了 RtUtils 可以写出各组件的结果信息,加入代码后确实可行。


但是这样只能输出到文件,如何得到变量值呢?最后祭出反编译大法,看行不行吧。


============================分割线=================================================

研究反编译的代码后,发现了关键所在:


1 需要建立变量的引用来获取最后的结果


ResultRequestMgrFactory.createInstanceWithVarRefs


2 Process 类型的组件需要用迭代的方式获取最新的结果集合


for (fiperresultset = resultrequestmgr.getResultSetSnapShot(); !resultrequestmgr.isComplete() && fiperresultset.next(); )


============================分割线=================================================


// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   RtUtils.java

package com.engineous.sdk.runtime;

import com.engineous.common.SDKUtils;
import com.engineous.common.i18n.IString;
import com.engineous.common.io.IOUtil;
import com.engineous.sdk.exception.SDKException;
import com.engineous.sdk.frapi.*;
import com.engineous.sdk.frapi.exception.EmptyResultException;
import com.engineous.sdk.frapi.exception.ResultException;
import com.engineous.sdk.gui.ProgressRange;
import com.engineous.sdk.log.Log;
import com.engineous.sdk.log.SysLog;
import com.engineous.sdk.model.*;
import com.engineous.sdk.model.exceptions.DtModelException;
import com.engineous.sdk.model.path.DtComponentPathDescriptor;
import com.engineous.sdk.pse.*;
import com.engineous.sdk.resmgr.ResMgr;
import com.engineous.sdk.vars.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

// Referenced classes of package com.engineous.sdk.runtime:
//            RunResultData, RtException, Context

public class RtUtils
{
    private static class JobLogValueComparator
        implements Comparator
    {

        public int compare(Object obj, Object obj1)
        {
            JobLogValue joblogvalue = (JobLogValue)obj;
            JobLogValue joblogvalue1 = (JobLogValue)obj1;
            return joblogvalue.getLoggingTime().compareTo(joblogvalue1.getLoggingTime());
        }

        JobLogValueComparator()
        {
        }
    }


    public RtUtils()
    {
    }

    public static void mapContext(Context context, Context context1)
        throws VariableException
    {
        mapContext(context, context1, ((List) (new ArrayList())));
    }

    public static void mapContext(Context context, Context context1, List list)
        throws VariableException
    {
        if(context1 == null || context == null)
            return;
        Iterator iterator = null;
        iterator = context1.getList().iterator();
        do
        {
            if(!iterator.hasNext())
                break;
            Variable variable = (Variable)iterator.next();
            if(list == null || !list.contains(variable.getName()))
            {
                int i = variable.getMode();
                String s = variable.getID();
                Variable variable1 = context.getVariableById(s);
                if(i == 3 || i == 2)
                {
                    if(variable.getStructure() == 2)
                        ((ArrayVariable)variable1).setDimSize(((ArrayVariable)variable).getDimSize());
                    context.getVariableById(s).mapFrom(variable);
                }
            }
        } while(true);
    }

    public static void mapContext(Context context, Context context1, VariableFilter variablefilter)
        throws VariableException
    {
        if(context1 == null || context == null)
            return;
        Iterator iterator = null;
        iterator = context1.getList().iterator();
        do
        {
            if(!iterator.hasNext())
                break;
            Variable variable = (Variable)iterator.next();
            int i = variable.getMode();
            String s = variable.getID();
            Variable variable1 = context.getVariableById(s);
            if((i == 3 || i == 2) && varia
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值