Rambler's Top100
package com.bexp;

import java.util.Collection;

import org.JWrapper.*;

import com.bexp.ejb.*;

public abstract class EntityWrpSrc
{
    protected SDApp sd_app;
    private JHomeDynamicCompositeWrapper current_wrapper;
    
    public EntityWrpSrc(SDApp _sd_app) throws Throwable
        {
        if(!(ObjSession.getSession().getHome(this.getEntityClass()))
                .isViewAllowed()) { throw new Exception("Access denied."); }
        sd_app = _sd_app;
        }
    
    public boolean visible()
        { return true; }
    
    public JDiscreteWrapper
        createChooserWrapper()
            throws Exception
        {
        SDDiscreteWrapper
            DW = create_chooser_wrapper(); 
        
        DW.addChoice(0,"All",
        new function0()
            {
            public JHomeDynamicCompositeWrapper Op() throws Exception
                { return createDefaultWrapper(getDefaultObjSrc()); }
            }
                                    );
        DW.addChoice(1,"Trash",
                new function0()
                    {
                    public JHomeDynamicCompositeWrapper Op() throws Exception
                        { return createDefaultWrapper(defaultTrashSrc); }
                    }
                                            );
        /*
        DW.addChoice(2,"All with descr. not null",
        new function0()
            {
            public JHomeDynamicCompositeWrapper Op() throws Exception
                { return createDefaultWrapper(descrNotNullSrc); }
            }
                                    );
                                    */
        
        DW.addChoice("All(homogeneous tree)",
                new function0()
                    {
                    public JHomeDynamicCompositeWrapper Op() throws Exception
                        {
                        return createDefaultWrapper(getDefaultObjSrc(),new DefaultInfo_tree(sd_app)); 
                        }
                    }
                                            );        
        return DW;
        }
    
    public abstract SDDiscreteWrapper
        create_chooser_wrapper()
            throws Exception;
    
    public /*abstract*/ ObjInfo getDefaultInfo() throws Exception
            { return ObjInfo.getDefaultObjInfo(sd_app); }

    public /*abstract*/ ObjSrc getDefaultObjSrc() throws Exception
        { return defaultObjSrc; }
    
    public JHomeDynamicCompositeWrapper
        createDefaultWrapper(ObjSrc osrc,ObjInfo info)
            throws Exception
        {
        JHomeDynamicCompositeWrapper result = new JHomeDynamicCompositeWrapper
            (getEntityName(), getEntityClass(), osrc, info);
        result.putCollectiveUserFunction(
                new NamedFunction>>
                ("count","Count",result,
                    new function1>()
                    {
                    public Void Op(Collection col)
                    {
                    ASSERT.alert("Number of elements selected is"+(new Integer(col.size())));
                    return null;
                    } }
                ));
        if(ASSERT.isDebugEnabled())
        result.getUserFunctions().put("test",
                new UserFunction("Test",result)
                {
                public void act() throws Exception
                    {
                    ASSERT.debug(this, "<---test--->");
                    JHomeDynamicCompositeWrapper dcw = this.getWrapper();
                    final JHomeDynamicCompositeWrapper DCW = dcw;
                    JWrapper wrp = dcw.createChild();
                    final JWrapper WRP = wrp;
                    for(UserFunction uf : wrp.getUserFunctions().values())
                    {
                    Thread th = new Thread()
                        {
                        JHomeDynamicCompositeWrapper dcw = DCW;
                        JWrapper wrp = WRP;
                        public void run()
                            {
                            try
                                {
                                dcw.edit(wrp);
                                } catch(Exception ex) { ASSERT.alert(this, ex); }
                            }
                        };
                    th.start();
                    Thread.sleep(1000);
                    ASSERT.debug(this, "");
                    uf.act();
                    ASSERT.debug(this, "");
                    th.join();
                    }
                    ASSERT.debug(this, "");
                    }
                }
            );
        return result;
        }
    public final JHomeDynamicCompositeWrapper
        createDefaultWrapper(ObjSrc osrc)
            throws Exception
        {
        JHomeDynamicCompositeWrapper result = createDefaultWrapper(osrc,getDefaultInfo());
        return result;
        }
/*    
    public JSimpleCompositeWrapper
        getDefaultDetailedWrapper(Obj obj)
            throws Exception
            {
            JSimpleCompositeWrapper wObj =
                new JSimpleCompositeWrapper("Obj");
            return wObj;
            }
*/    
    public abstract Class getEntityClass();
    
    public abstract String getEntityName();
    
    public JWrapper getConfig()
        { return null; }
//------------- some common obj sources:
    public ObjSrc
    
    defaultObjSrc = 
    new ObjSrc()
    {
    public ObjHandle[] getObjHandles(IObjHome home) throws Exception
        { return home.getAllObj(); }
    public boolean match(ObjHomeEvent evt,IObjHome home) throws Exception
        {return true;}
    },

    defaultTrashSrc = 
    new ObjSrc()
    {
    public ObjHandle[] getObjHandles(IObjHome home) throws Exception
        { return home.getAllTrash(); }
    public boolean match(ObjHomeEvent evt,IObjHome home) throws Exception
        {return true;}//!!!!!!!!!!!!!!!!!!
    };//,
/*
    descrNotNullSrc = 
    new ObjSrc()
    {
    public IObj[] getObjs(IObjHome home) throws Exception
        {
        Obj[] allObjs = home.getAllObj();
        java.util.Vector filteredObjs
        = new java.util.Vector();
        for(IObj OBJ : allObjs)
        {
        String descr = OBJ.getDescription();
        if(descr!=null)
        if(!descr.equals("null"))
        { filteredObjs.add(OBJ); }
        }
        return filteredObjs.toArray(new IObj[0]);
        }
    public boolean match(ObjHomeEvent evt,IObjHome home) throws Exception
        {
        String description =  home.getObj(evt.getObjectPK()).getDescription();
        if(description==null)
        { return false; }
        if(description.equals("null") )
        { return false; }
        return true;
        }
    };
    */
//--------------
    public class SDDiscreteWrapper
        extends JDiscreteWrapper
    {
    public SDDiscreteWrapper(String _name)
        {
        super(_name,
             new JVarAccessAdapter(current_wrapper));
        }
    
    public void addChoice(String name,
            function0 fn)
        {
        choice_names.add(name);
        choices.add(fn);
        }
    
    public void addChoice(int i, String name,
            function0 fn)
        {
        choice_names.add(i,name);
        choices.add(i,fn);
        }

    protected
        java.util.Vector
            choice_names = new java.util.Vector();
        java.util.Vector >
            choices = new
            java.util.Vector >();
    protected JWrapper previous = null;
    
    public String[] getChoiceNames()
        {
        return choice_names.toArray(new String[0]);
        }
    
    public JHomeDynamicCompositeWrapper selectObject(int i) throws Exception
        {
        ASSERT.setWaitingState(true);
        try
            {
            JHomeDynamicCompositeWrapper wrp = choices.get(i).Op();
            if(previous!=null) { previous.finalize(); }
            previous = wrp;
            return wrp;
            }
        finally { ASSERT.setWaitingState(false); }
        }
    }
//---
    class DefaultInfo_tree extends ObjInfo
    {
        public DefaultInfo_tree(SDApp _sd_app)
            throws Exception
            { super(_sd_app); }
        public boolean isRegular()
            {return false;}
        public JSimpleCompositeWrapper getDefaultDetailedWrapper(Obj wo) throws Exception
            {
            return getDefaultInfo().getDefaultDetailedWrapper(wo);
            }
        public JSimpleCompositeWrapper getDefaultShortWrapper(Obj obj) throws Exception
            {
            return getDefaultInfo().getDefaultDetailedWrapper(obj);
            }
        public JSimpleCompositeWrapper getDefaultWrapper(Obj obj) throws Exception
            {
            return getDefaultInfo().getDefaultWrapper(obj);
            }
        
    };
//---    
}

Предприятие реального времени №1

На главную   Новости   Карта сайта
  Rambler's Top100