⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctstruct.java

📁 UCS (Ultra Corba Simulator) is one more powerful corba client/servant simulator tool than other simi
💻 JAVA
字号:
package com.corba.mnq.tool.idl.type;

import com.corba.mnq.tool.CorbaFacility;
import com.corba.mnq.ui.MNQMutableTreeNode;

import java.util.Enumeration;
import java.util.List;
import java.util.Vector;

import org.omg.CORBA.Any;
import org.omg.CORBA.TypeCode;
import org.omg.CORBA.portable.OutputStream;

public class CTStruct extends TypeBase {

    public CTStruct() {
        super();
        // TODO Auto-generated constructor stub
        valType = "java.util.List";
    }

    public List mems = new Vector();

    public List memType = new Vector();

    public TypeBase cloneType() {
        CTStruct t = new CTStruct();
        t.disName = disName;
        t.dmtn = dmtn;
        t.dn = dn;
        t.id = id;
        t.rdn = rdn;
        t.val = val;
        t.mems = mems;
        t.memType = new Vector();
        for (int i = 0; i < memType.size(); i++) {
            t.memType.add(((TypeBase) memType.get(i)).cloneType());
        }
        return t;
    }

    public TypeCode type() {
        // TODO Auto-generated method stub
        TypeCode __typeCode;
        org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember[mems.size()];

        for (int i = 0; i < mems.size(); i++) {
            _members0[i] = new org.omg.CORBA.StructMember((String) mems.get(i), ((TypeBase) memType
                    .get(i)).type(), null);
        }

        __typeCode = orb.create_struct_tc(id, rdn, _members0);
        return __typeCode;

    }

    /**
     * Method: "read"
     * 
     * @param istream
     * @return
     */
    public Object read(org.omg.CORBA.portable.InputStream istream) {
        List val = new Vector();
        for (int i = 0; i < mems.size(); i++) {
            val.add(((TypeBase) memType.get(i)).read(istream));
        }
        return val;
    }

    public void write(OutputStream ostream, Object value) {
        // TODO Auto-generated method stub
        List val = (List) value;
        // if (val.size() != mems.size()) { throw new IdlExcept(
        // "Wrong Struct Size!!!"); }
        for (int i = 0; i < mems.size(); i++) {
            ((TypeBase) memType.get(i)).write(ostream, val.get(i));
        }
    }

    public boolean compare(TypeBase t) {
        if (!selected)
            return true;
        if (!type().equal(t.type()))
            return false;

        for (int i = 0; i < mems.size(); i++) {
            if (!((TypeBase) memType.get(i)).compare((TypeBase) ((CTStruct) t).memType.get(i))) { return false; }
        }

        return true;
    }

    public void getValueFromTree() {
        List tmp = new Vector();

        for (Enumeration e = dmtn.children(); e.hasMoreElements();) {
            TypeBase tn = (TypeBase) (((MNQMutableTreeNode) e.nextElement()).getUserObject());
            tn.getValueFromTree();
            tmp.add(tn.val);
        }

        val = tmp;
    }

    /**
     * @param args
     */
    public static void main_(String[] args) {
        // TODO Auto-generated method stub
        try {
            // TODO Auto-generated method stub

            CTBasic t0 = new CTBasic();
            t0.rdn = "double";

            CTDeclaration t1 = new CTDeclaration();
            t1.t_in = t0;
            t1.id = "IDL:3gppsa5.org/AlarmIRPConstDefs/One:1.0";
            t1.rdn = "One";

            CTDeclaration t2 = new CTDeclaration();
            t2.t_in = t1;
            t2.id = "IDL:3gppsa5.org/AlarmIRPConstDefs/Two:1.0";
            t2.rdn = "Two";

            CTSequence t3 = new CTSequence();
            t3.t_in = t2;
            t3.id = "IDL:3gppsa5.org/AlarmIRPConstDefs/Three:1.0";
            t3.rdn = "Three";

            CTDeclaration t4 = new CTDeclaration();
            t4.t_in = t3;
            t4.id = "IDL:3gppsa5.org/AlarmIRPConstDefs/Four:1.0";
            t4.rdn = "Four";

            CTStruct t5 = new CTStruct();
            t5.id = "IDL:3gppsa5.org/AlarmIRPConstDefs/Five:1.0";
            t5.rdn = "Five";
            t5.mems.add("old");
            t5.mems.add("new");
            t5.memType.add(t2);
            t5.memType.add(t3);

            Any a = t0.orb.create_any();
            Double[] val = new Double[2];
            val[0] = new Double(1.1);
            val[1] = new Double(2.2);

            List val1 = new Vector();
            val1.add(new Double(5.5));
            val1.add(val);

            t5.insert(a, val1);

            System.out.println(CorbaFacility.toString(a, true));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -