Rambler's Top100
package com.bexp;

import java.util.*;

import org.JWrapper.*;
import org.JWrapper.util.JCollectionWrapper;

public /*abstract*/ class JObjHandleCollectionWrapper
    extends JCollectionWrapper >
{
    protected SDApp sd_app;
    
    protected ObjInfo obj_info;
    
    protected Class underlying_value_class;
    
    public JObjHandleCollectionWrapper(
            String _name,
            java.util.Collection> _handle_collection,
            Class _value_class,
            ObjInfo _obj_info//,
            //SDApp _sd_app
            ) throws Exception
        {
        super(_name, _handle_collection, com.bexp.ejb.ObjHandle.class);
        underlying_value_class = _value_class;
        obj_info = _obj_info;
        sd_app=obj_info.getSDApp();//_sd_app;
        }

    public JObjHandleCollectionWrapper(
            String _name,
            JAccessAdapter >> _collection_adapter,
            Class _value_class,
            ObjInfo _obj_info//,
            //SDApp _sd_app
            ) throws Exception
        {
        super(_name, _collection_adapter, com.bexp.ejb.ObjHandle.class);
        underlying_value_class = _value_class;
        obj_info = _obj_info;
        sd_app=obj_info.getSDApp();//_sd_app;
        }
    
    public boolean edit(JWrapper wrp) throws Exception
        {
        init();
        T obj = this.getValueByWrapper(wrp).getObj();
        if(obj.getIsInTrash())
            { throw new Exception("This object is in Trash !"); }
        boolean edit_result = sd_app.edit(this.getDetailedWrapper(wrp)); 
        if(edit_result)
            {
            obj = this.getValueByWrapper(wrp).getObj();//just if it's not in cache
            obj.save();
            wrp.refresh();
            } else
            { this.refresh(); }
        return true;
        }
    protected List> getValues() throws Exception
        {
        init();
        /*
        EntityWrpSrc e_src = sd_app.getEntitiesMap()
            .get(underlying_value_class.getPackage());
        JDiscreteWrapper
            chooser
            = e_src.createChooserWrapper();
        chooser.set_value(0);
        List wrps = sd_app.selectWrappers(chooser);
        */
        List wrps = sd_app.selectWrappersFromStock(this.underlying_value_class);
        List> result = new Vector();
        //JWrapper wrp = sd_app.selectWrapper(chooser);
        if(wrps!=null)
        for(JWrapper wrp : wrps)
            {
            ///if(wrp==null) {return null;}
            //return (T) chooser.getRawValue().getObjByWrapper(wrp);
            JWrapper parent_wrp = wrp.getParent();
            //everything should be refactored to throw/catch Throwable instead of Exception to use assertions
            //assert (parent_wrp!=null) : "You have selected something wrong :) ";
            if(parent_wrp==null) { throw new Exception("You have selected something wrong :) "); }
	            {
	            com.bexp.ejb.ObjHandle handle = (((JHomeDynamicCompositeWrapper) parent_wrp).getHandleByWrapper(wrp));
	            result.add(
	                    new com.bexp.ejb.ObjHandle(
	                    		handle.getPK(),handle.getIsInTrash(),
	                    		this.underlying_value_class)
	                    );
	            }
            }
        return result;
        }
//-----
    public JWrapper getDetailedWrapper(JWrapper wrp) throws Exception
        {
        init();
        com.bexp.ejb.ObjHandle handle = this.getValueByWrapper(wrp);
        return obj_info.getDefaultDetailedWrapper(handle.getObj());
        }
    public boolean isRegular()
        { return obj_info.isRegular(); }

    public void refresh() throws Exception
        {
        //init();
        obj_info.refresh();
        super.refresh();
        }
    
    protected JWrapper wrap(com.bexp.ejb.ObjHandle _handle) throws Exception
        {
        T obj = _handle.getObj();
        if(obj==null) { return obj_info.wrap((T)underlying_value_class.newInstance()); }
        return obj_info.wrap(obj);
        }
        
    protected boolean match(com.bexp.ejb.ObjHandle h)
		{ try{return ! h.getIsInTrash();} catch(Exception ex) {return false;} }
    
}

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

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