001    package railo.runtime.functions.orm;
002    
003    import railo.runtime.PageContext;
004    import railo.runtime.exp.PageException;
005    import railo.runtime.op.Caster;
006    import railo.runtime.op.Decision;
007    import railo.runtime.orm.ORMSession;
008    import railo.runtime.orm.ORMUtil;
009    import railo.runtime.type.Struct;
010    import railo.runtime.type.StructImpl;
011    
012    public class EntityLoad {
013            
014            public static Object call(PageContext pc, String name) throws PageException {
015                    
016                    ORMSession session=ORMUtil.getSession(pc);
017                    //ORMEngine engine= ORMUtil.getEngine(pc);
018                    return session.loadAsArray(pc,name,new StructImpl());
019            }
020            
021            public static Object call(PageContext pc, String name,Object idOrFilter) throws PageException {
022                    return call(pc, name, idOrFilter, Boolean.FALSE);
023            }
024            public static Object call(PageContext pc, String name,Object idOrFilter, Object uniqueOrOptions) throws PageException {
025                    ORMSession session=ORMUtil.getSession(pc);
026                    
027                    // id
028                    if(Decision.isSimpleValue(idOrFilter)){
029                            // id,unique
030                            if(Decision.isCastableToBoolean(uniqueOrOptions)){
031                                    // id,unique=true
032                                    if(Caster.toBooleanValue(uniqueOrOptions))
033                                            return session.load(pc,name, Caster.toString(idOrFilter));
034                                    // id,unique=false
035                                    return session.loadAsArray(pc,name, Caster.toString(idOrFilter));
036                            }
037                            else if(Decision.isString(uniqueOrOptions)){
038                                    return session.loadAsArray(pc,name,Caster.toString(idOrFilter),Caster.toString(uniqueOrOptions));
039                            }
040                            
041                            // id,options
042                            return session.loadAsArray(pc,name,Caster.toString(idOrFilter));
043                    }
044                    
045                    // filter,[unique|sortorder]
046                    if(Decision.isSimpleValue(uniqueOrOptions)){
047                            // filter,unique
048                            if(Decision.isBoolean(uniqueOrOptions)){
049                                    if(Caster.toBooleanValue(uniqueOrOptions))
050                                            return session.load(pc,name,Caster.toStruct(idOrFilter));
051                                    return session.loadAsArray(pc,name,Caster.toStruct(idOrFilter));
052                            }
053                            // filter,sortorder
054                            return session.loadAsArray(pc,name,Caster.toStruct(idOrFilter),(Struct)null,Caster.toString(uniqueOrOptions));
055                    }
056                    // filter,options
057                    return session.loadAsArray(pc,name,Caster.toStruct(idOrFilter),Caster.toStruct(uniqueOrOptions));
058            }
059            
060            
061            
062            public static Object call(PageContext pc, String name,Object filter, Object order, Object options) throws PageException {
063                    ORMSession session=ORMUtil.getSession(pc);
064                    //ORMEngine engine= ORMUtil.getEngine(pc);
065                    return session.loadAsArray(pc,name,Caster.toStruct(filter),Caster.toStruct(options),Caster.toString(order));
066            }
067    }