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, "---test--->");
}
}
);
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);
}
};
//---
}
|