Advertisement
Guest User

ActiveEntityBaseClass

a guest
Mar 29th, 2012
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. component accessors=true extends="coldbox_3_5.system.orm.hibernate.ActiveEntity"{
  2.    
  3.     // dependency properties
  4.    
  5.     property name="utilities" inject="coldbox:plugin:utilities" persistent=false;
  6.    
  7.     property name="ORMService" inject="entityService" persistent=false;
  8.    
  9.     // constructor
  10.    
  11.     public any function init(){
  12.         super.init(argumentcollection=arguments);
  13.    
  14.         return this;
  15.     }
  16.    
  17.     // override functions
  18.    
  19.     public any function save(){
  20.         super.save(argumentCollection=arguments);
  21.        
  22.         return this;
  23.     }
  24.    
  25.     public boolean function exists(){
  26.         var metaData = getMetaData(this);
  27.    
  28.         var ID = evaluate("get#this.getKey()#()");
  29.    
  30.         if(isNull(ID)){
  31.             return false;
  32.         }
  33.    
  34.         return super.exists(ID);
  35.     }
  36.    
  37.     // public functions
  38.    
  39.     public void function deleteCollection(required string entityCollectionName,boolean soft=true){
  40.         var collection = evaluate("get#arguments.entityCollectionName#()");
  41.        
  42.         for(var x=1;x<=arrayLen(collection);x++){
  43.             collection[x].delete(soft=arguments.soft);
  44.         }
  45.     }
  46.    
  47.     public void function removeCollection(required string entityCollectionName){
  48.         var collection = evaluate("get#arguments.entityCollectionName#()");
  49.        
  50.         var metadata = "";
  51.        
  52.         var entity = "";
  53.        
  54.         for(var x=1;x<=arrayLen(collection);x++){
  55.             entity = collection[x];
  56.            
  57.             metadata = getMetaData(entity);
  58.            
  59.             evaluate("remove#listLast(metadata.name,".")#(entity)");
  60.         }
  61.     }
  62.    
  63.     public any function getPropertyMemento(string type="struct",boolean recursive=true){
  64.         var result = getEntityMememto(entity=this,recursive=arguments.recursive);
  65.        
  66.         if(arguments.type == "struct"){
  67.             return result;
  68.         }else{
  69.             return getUtilities().marshallData(type=arguments.type,data=result);
  70.         }
  71.     }
  72.    
  73.     public any function getPropertyLength(required string propertyName){
  74.         var metaData = getMetaData(this);
  75.        
  76.         var propertyLength = "";
  77.        
  78.         for(var x=1; x<=arrayLen(metaData.properties); x++){
  79.             if(metaData.properties[x].name == arguments.propertyName && structKeyExists(metaData.properties[x],"SQLType")){
  80.                 propertyLength = REReplace(metaData.properties[x].SQLType,"\D+","","ALL");
  81.                
  82.                 if(len(propertyLength)){
  83.                     return propertyLength;
  84.                 }
  85.             }
  86.         }
  87.        
  88.         return "";
  89.     }
  90.    
  91.     public any function null(){
  92.         return getUtilities().null();
  93.     }
  94.    
  95.     // private functions
  96.    
  97.     private any function getEntityMememto(required any entity,any Parent,boolean recursive=true){
  98.         var objectMetaData = "";
  99.    
  100.         var entityName = "";
  101.    
  102.         var metaData = getMetaData(arguments.entity);
  103.        
  104.         var propertyName = "";
  105.        
  106.         var propertyValue = "";
  107.        
  108.         var entityID = "";
  109.        
  110.         var result = structNew();
  111.        
  112.         if(structKeyExists(metaData,"entityName")){
  113.             result.entityName = metaData.entityName;
  114.         }
  115.        
  116.         if(structKeyExists(metaData,"properties")){
  117.             for(var x=1;x<=arrayLen(metaData.properties);x++){
  118.                 propertyName = uCase(metaData.properties[x].name);
  119.            
  120.                 propertyValue = evaluate("arguments.entity.get#propertyName#()");
  121.                
  122.                 if(!isNull(propertyValue)){
  123.                     if(!isObject(propertyValue)){
  124.                         if(isArray(propertyValue)){
  125.                             result[propertyName] = getArrayMemento(propertyValue);
  126.                         }else{
  127.                             result[propertyName] = propertyValue;
  128.                         }
  129.                     }else if(isObject(propertyValue) && arguments.recursive){
  130.                         objectMetaData = getMetaData(propertyValue);
  131.                        
  132.                         if(structKeyExists(objectMetaData,"entityName")){
  133.                             entityIDName = uCase(getORMService().getKey(objectMetaData.entityName));
  134.                            
  135.                             result[propertyName & entityIDName] = evaluate("propertyValue.get#entityIDName#()");
  136.                            
  137.                             if(!isNull(arguments.parent) && structKeyExists(arguments.parent,"entityName") && arguments.parent["entityName"] == objectMetaData.entityName){
  138.                                 result[propertyName] = "[parent]";
  139.                             }else{
  140.                                 result[propertyName] = getEntityMememto(entity=propertyValue,parent=result);
  141.                             }  
  142.                         }
  143.                     }
  144.                 }else{
  145.                     result[propertyName] = "";
  146.                 }
  147.             }
  148.         }
  149.        
  150.         if(structKeyExists(arguments.entity,"flatten")){
  151.             structAppend(result,arguments.entity.flatten(),true);
  152.         }
  153.        
  154.         return result;
  155.     }
  156.    
  157.     private array function getArrayMemento(required array values){
  158.         var result = arrayNew(1);
  159.        
  160.         for(var x=1;x<=arrayLen(arguments.values);x++){
  161.             if(!isObject(arguments.values[x])){
  162.                 arrayAppend(result,arguments.values[x]);
  163.             }else{
  164.                 arrayAppend(result,getEntityMememto(entity=arguments.values[x],recursive=false));
  165.             }
  166.         }
  167.        
  168.         return result;
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement