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;} }
}
|