Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ECOBU

ECOBU.m

Go to the documentation of this file.
  1. ECOBU ;BP/CMF - Utility Object ;8/21/2015
  1. ;;2.0;EVENT CAPTURE;**100,129**;8 May 96;Build 7
  1. ;@author - Chris Flegel
  1. ;@date - 17 May 2009
  1. ;@version - 1.0
  1. ;;
  1. Q
  1. ;; private methods
  1. HANDLERS(RESULT,HANDLE,METHOD,PARAMS) ;;
  1. ; find & execute handlers
  1. N PROPERTY,HANDLES,FOUND,HANDLER,EXECUTER
  1. S RESULT="-1^Invalid method"
  1. I $E(METHOD,1,3)="Get" D
  1. .D PARSE("Get",METHOD)
  1. .S PARAMS=PROPERTY_"."_PARAMS
  1. .S METHOD="Get"
  1. .Q
  1. I $E(METHOD,1,3)="Set" D
  1. .D PARSE("Set",METHOD)
  1. .S PARAMS=PROPERTY_"."_PARAMS
  1. .S METHOD="Set"
  1. .Q
  1. I $E(METHOD,1,4)="Show" D
  1. .D PARSE("Show",METHOD)
  1. .S PARAMS=PROPERTY_"."_PARAMS
  1. .S METHOD="Show"
  1. .Q
  1. D METHOD(.HANDLER,HANDLE_".Methods.Find1."_METHOD)
  1. D METHOD^ECOBM(.EXECUTER,HANDLER_".GetHandler")
  1. I $G(EXECUTER)="" Q ;EC*129
  1. I ($P(EXECUTER,"^")=0)!($P(EXECUTER,"^")=-1) Q ;EC*129
  1. D @EXECUTER
  1. Q
  1. ;;
  1. OBM(RESULT,ARGUMENT) ;shortcut to method class
  1. D METHOD^ECOBM(.RESULT,ARGUMENT) Q
  1. ;;
  1. OBP(RESULT,ARGUMENT) ;shortcut to property class
  1. D METHOD^ECOBP(.RESULT,ARGUMENT) Q
  1. ;;
  1. OB2(RESULT,ARGUMENT) ;shortcut to utility class
  1. D METHOD^ECOB2(.RESULT,ARGUMENT) Q
  1. ;;
  1. ECOB30(RESULT,HANDLE,PARAMS) ;handler for collect object
  1. N CHILD
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Collect")
  1. D METHOD^ECOB30(.RESULT,CHILD_"."_PARAMS)
  1. Q
  1. ;;
  1. ECOBL(RESULT,HANDLE,METHOD,PARAMS) ;handler for simple list
  1. N CHILD
  1. D GET^ECOB(.CHILD,HANDLE,"Pu",METHOD)
  1. D METHOD^ECOBL(.RESULT,CHILD_"."_PARAMS)
  1. Q
  1. ;;
  1. ECOBMC(RESULT,HANDLE,PARAMS) ;handler for method collection
  1. N CHILD
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Methods")
  1. D METHOD^ECOBMC(.RESULT,CHILD_"."_PARAMS)
  1. Q
  1. ;;
  1. ECOBPC(RESULT,HANDLE,PARAMS) ;handler for property collection
  1. N CHILD
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Properties")
  1. D METHOD^ECOBPC(.RESULT,CHILD_"."_PARAMS)
  1. Q
  1. ;;
  1. ECOBM(RESULT,HANDLE,PARAMS) ;; pass-through
  1. D OBM(.RESULT,HANDLE_"."_PARAMS) Q
  1. ;;
  1. ECOB2(RESULT,HANDLE,PARAMS) ;; pass-through
  1. D OB2(.RESULT,HANDLE_"."_PARAMS) Q
  1. ;;
  1. ECOBP(RESULT,HANDLE,PARAMS) ; pass-through
  1. D OBP(.RESULT,HANDLE_"."_PARAMS) Q
  1. ;;
  1. DIAGHDR(VALUE,WIDTH) ;;
  1. N I,J
  1. S J=WIDTH-$L(VALUE)-1
  1. W !," "_VALUE_" "
  1. F J=1:1:J W "-"
  1. W "+"
  1. Q
  1. DIAGSGMT(VALUE,WIDTH) ;;
  1. N I,J,OUT,FILL
  1. S J=WIDTH-$L(VALUE)
  1. S OUT=" + "_VALUE_" "
  1. S FILL=""
  1. F J=1:1:J S FILL=FILL_"-"
  1. S OUT=$E(OUT_FILL,1,WIDTH)_" |"
  1. W !,OUT
  1. Q
  1. DIAGATTR(VALUE,WIDTH) ;;
  1. N I,J,OUT,FILL
  1. S J=WIDTH-$L(VALUE)
  1. S OUT=" | * "_VALUE
  1. D:$L(VALUE)<WIDTH
  1. .S FILL=""
  1. .F J=1:1:J S FILL=FILL_" "
  1. .S OUT=$E(OUT_FILL,1,WIDTH)_" |"
  1. .Q
  1. W !,OUT
  1. Q
  1. DIAGFTR(WIDTH) ;;
  1. N I,J,OUT,FILL
  1. S J=WIDTH
  1. S OUT=" + "
  1. S FILL=""
  1. F J=1:1:J S FILL=FILL_"-"
  1. S OUT=$E(OUT_FILL,1,J)_" +"
  1. W !,OUT
  1. Q
  1. ;;
  1. ;;protected methods
  1. CLASS(RESULT,HANDLE,PARAMS) ;handler for class info display
  1. N JUSTIFY,OFFSET,X,METH,PROP,ITEM
  1. D PARSE("Offset",PARAMS)
  1. D SHOW^ECOB(.X,HANDLE,"Pu","_class",JUSTIFY)
  1. ;;
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Methods",JUSTIFY)
  1. D METHOD(.X,HANDLE_".Methods.Info."_OFFSET)
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Methods",JUSTIFY_"/")
  1. ;;
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Properties",JUSTIFY)
  1. D METHOD(.X,HANDLE_".Properties.Info."_OFFSET)
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Properties",JUSTIFY_"/")
  1. ;;
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Root",JUSTIFY)
  1. D METHOD(.X,HANDLE_".Root.Info."_OFFSET)
  1. D SHOW^ECOB(.X,HANDLE,"Pu","Root",JUSTIFY_"/")
  1. ;;
  1. D SHOW^ECOB(.X,HANDLE,"Pu","_class",JUSTIFY_"/")
  1. S RESULT=1
  1. Q
  1. ;;
  1. CLEAR(RESULT,HANDLE,PARAMS) ; restore object to default state
  1. N PROPERTY,DEFAULT,X
  1. D METHOD(.PROPERTY,HANDLE_".Properties.First")
  1. F Q:PROPERTY="-1^End of list" D
  1. .D OBP(.DEFAULT,PROPERTY_".GetDefaultValue")
  1. .D OBP(.X,PROPERTY_".SetValue."_DEFAULT)
  1. .D METHOD(.PROPERTY,HANDLE_".Properties.Next")
  1. S RESULT=1
  1. Q
  1. ;
  1. DIAGRAM(RESULT,HANDLE,PARAMS) ; draw class diagram
  1. N CLASS,X,WIDTH,METHOD,PROPERTY,EXTEND,COLLECT,NAME
  1. D GET^ECOB(.CLASS,HANDLE,"Pu","_class")
  1. S X=$L(CLASS)+2
  1. S WIDTH=$S(X<20:20,X<40:40,X<60:60,1:70)
  1. D DIAGHDR(CLASS,WIDTH)
  1. ;;
  1. D DIAGSGMT("Methods",WIDTH)
  1. D METHOD(.METHOD,HANDLE_".Methods.First")
  1. F Q:METHOD="-1^End of list" D
  1. .D OBM(.NAME,METHOD_".GetName")
  1. .D DIAGATTR(NAME,WIDTH)
  1. .D METHOD(.METHOD,HANDLE_".Methods.Next")
  1. .Q
  1. ;;
  1. D DIAGSGMT("Properties",WIDTH)
  1. D METHOD(.PROPERTY,HANDLE_".Properties.First")
  1. F Q:PROPERTY="-1^End of list" D
  1. .D OBP(.NAME,PROPERTY_".GetName")
  1. .D DIAGATTR(NAME,WIDTH)
  1. .D METHOD(.PROPERTY,HANDLE_".Properties.Next")
  1. .Q
  1. ;;
  1. D DIAGSGMT("Extends",WIDTH)
  1. D METHOD(.EXTEND,HANDLE_".Root.First")
  1. F Q:EXTEND="-1^End of list" D
  1. .D:EXTEND'=CLASS DIAGATTR(EXTEND,WIDTH)
  1. .D METHOD(.EXTEND,HANDLE_".Root.Next")
  1. .Q
  1. D DIAGFTR(WIDTH)
  1. S RESULT=1
  1. Q
  1. ;
  1. GET(RESULT,HANDLE,METHOD,PARAMS) ;
  1. N PROPERTY,PROP
  1. S RESULT="-1^Invalid property"
  1. S PROPERTY=$P(PARAMS,".")
  1. D METHOD(.PROP,HANDLE_".Properties.Find1."_PROPERTY)
  1. D:PROP'="" OBP(.RESULT,PROP_".GetValue")
  1. Q
  1. ;;
  1. INFO(RESULT,HANDLE,PARAMS) ;handler for business info display
  1. N JUSTIFY,OFFSET,PROPERTY
  1. D PARSE("Offset",PARAMS)
  1. W !,$J("Name : ",JUSTIFY),"Value"
  1. W !,$J("-----|-",JUSTIFY),"-----"
  1. D METHOD(.PROPERTY,HANDLE_".Properties.First")
  1. F Q:PROPERTY="-1^End of list" D
  1. .D OBP(.NAME,PROPERTY_".GetName")
  1. .D METHOD(.RESULT,HANDLE_".Show"_NAME_"."_JUSTIFY)
  1. .D METHOD(.PROPERTY,HANDLE_".Properties.Next")
  1. .Q
  1. S RESULT=1
  1. ;;
  1. PARSE(PARSE,VALUE) ;
  1. I PARSE="Get" D Q
  1. .S PROPERTY=$P(VALUE,".",1)
  1. .S PROPERTY=$P(PROPERTY,"Get",2)
  1. .Q
  1. I PARSE="Handle" D Q
  1. .S HANDLE=$P(VALUE,".")
  1. .Q
  1. I PARSE="Handle1" D Q
  1. .S NAME=$P(VALUE,".",1)
  1. .S COUNT=$P(VALUE,".",2)
  1. .Q
  1. I PARSE="Justify" D Q
  1. .S JUSTIFY=$S(+VALUE:+VALUE,1:0)
  1. .Q
  1. I PARSE="Method" D Q
  1. .S METHOD=$P(VALUE,".",2)
  1. .Q
  1. I PARSE="Offset" D Q
  1. .S JUSTIFY=$S(+VALUE:+VALUE,1:0)
  1. .S OFFSET=JUSTIFY+5
  1. .Q
  1. I PARSE="Params" D Q
  1. .S PARAMS=$P(VALUE,".",3,99)
  1. .Q
  1. I PARSE="Set" D Q
  1. .S PROPERTY=$P(VALUE,".",1)
  1. .S PROPERTY=$P(PROPERTY,"Set",2)
  1. .S VALUE=$P(VALUE,".",2)
  1. .Q
  1. I PARSE="Show" D Q
  1. .S PROPERTY=$P(VALUE,".",1)
  1. .S PROPERTY=$P(PROPERTY,"Show",2)
  1. .Q
  1. Q
  1. ;
  1. SET(RESULT,HANDLE,METHOD,PARAMS) ;
  1. N PROPERTY,PROP
  1. S RESULT="-1^Invalid property"
  1. S PROPERTY=$P(PARAMS,".")
  1. S PARAMS=$P(PARAMS,".",2,99)
  1. D METHOD(.PROP,HANDLE_".Properties.Find1."_PROPERTY)
  1. D:PROP'="" OBP(.RESULT,PROP_".SetValue."_PARAMS)
  1. Q
  1. ;
  1. SHOW(RESULT,HANDLE,METHOD,PARAMS) ; show a property
  1. N JUSTIFY,PROPERTY
  1. S PROPERTY=$P(PARAMS,".")
  1. S PARAMS=$P(PARAMS,".",2,99)
  1. D METHOD(.RESULT,HANDLE_".Get"_PROPERTY)
  1. Q:RESULT="-1^Invalid property"
  1. S JUSTIFY=$S(+PARAMS:+PARAMS,1:0)
  1. W !,$J("<"_PROPERTY_"> : ",JUSTIFY),RESULT
  1. Q
  1. ;;
  1. ;; public methods
  1. CREATE(NAME) ;
  1. ; call parent first
  1. N HANDLE,CHILD,METHOD,PROPERTY,X
  1. S HANDLE=$$CREATE^ECOB(NAME)
  1. D SELF^ECOB(.RESULT,HANDLE,"EC OBU UTILITY","Utility","METHOD^ECOBU(.RESULT,ARGUMENT)","ECOB")
  1. ;;
  1. S CHILD=$$CREATE^ECOB30(NAME)
  1. D COLLECT^ECOB(HANDLE,CHILD,"Pu","Collect")
  1. D METHOD^ECOB30(.X,CHILD_".SetCollector."_HANDLE)
  1. ;;
  1. S CHILD=$$CREATE^ECOBMC(NAME)
  1. D COLLECT^ECOB(HANDLE,CHILD,"Pu","Methods")
  1. ;; default ClassDiagram method
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.ClassDiagram")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Displays diagram of the class.")
  1. D OBM(.X,METHOD_".SetHandler.DIAGRAM^ECOBU(.RESULT,HANDLE,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.")
  1. D OBM(.X,METHOD_".SetReturns.1")
  1. ;;
  1. ;; default ClassInfo method
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.ClassInfo")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Displays information about the class.")
  1. D OBM(.X,METHOD_".SetHandler.CLASS^ECOBU(.RESULT,HANDLE,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.[Justify]")
  1. D OBM(.X,METHOD_".SetReturns.1")
  1. ;; default Clear method
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.Clear")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Restores public attributes to default state.")
  1. D OBM(.X,METHOD_".SetHandler.CLEAR^ECOBU(.RESULT,HANDLE,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.")
  1. D OBM(.X,METHOD_".SetReturns.1")
  1. ;; default Get method
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.Get")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Gets a property value.")
  1. D OBM(.X,METHOD_".SetHandler.GET^ECOBU(.RESULT,HANDLE,METHOD,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.Get[propertyName]")
  1. D OBM(.X,METHOD_".SetReturns.Property.Value")
  1. ;; default Set method
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.Set")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Sets a property value.")
  1. D OBM(.X,METHOD_".SetHandler.SET^ECOBU(.RESULT,HANDLE,METHOD,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.Set[propertyName].[Value]")
  1. D OBM(.X,METHOD_".SetReturns.1 if successful, -1 otherwise")
  1. ;;
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.Show")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Displays a property value.")
  1. D OBM(.X,METHOD_".SetHandler.SHOW^ECOBU(.RESULT,HANDLE,METHOD,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.[Justify]")
  1. D OBM(.X,METHOD_".SetReturns.[Property.Name] : [Property.Value]")
  1. ;;
  1. D METHOD(.METHOD,HANDLE_".Methods.Add.Info")
  1. D OBM(.X,METHOD_".SetAddedByClass.Utility")
  1. D OBM(.X,METHOD_".SetDescription.Displays business information.")
  1. D OBM(.X,METHOD_".SetHandler.INFO^ECOBU(.RESULT,HANDLE,PARAMS)")
  1. D OBM(.X,METHOD_".SetParams.[Justify]")
  1. D OBM(.X,METHOD_".SetReturns.1")
  1. ;;
  1. S CHILD=$$CREATE^ECOBPC(NAME)
  1. D COLLECT^ECOB(HANDLE,CHILD,"Pu","Properties")
  1. ;;
  1. D METHOD(.PROPERTY,HANDLE_".Properties.Add._this")
  1. D OBP(.X,PROPERTY_".SetAddedByClass.Utility")
  1. D OBP(.X,PROPERTY_".SetValue."_HANDLE)
  1. D OBP(.X,PROPERTY_".SetDefaultValue."_HANDLE)
  1. ;;
  1. S CHILD=$$CREATE^ECOBL(NAME)
  1. D COLLECT^ECOB(HANDLE,CHILD,"Pu","Root")
  1. ;;
  1. D METHOD(.X,HANDLE_".Root.Add.EC BASE")
  1. D METHOD(.X,HANDLE_".Root.Add.EC OBU UTILITY")
  1. ; complex properties last
  1. Q HANDLE
  1. ;;
  1. DESTROY(HANDLE) ;
  1. ; call parent last
  1. N CHILD
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Collect")
  1. D DESTROY^ECOB30(CHILD)
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Methods")
  1. D DESTROY^ECOBMC(CHILD)
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Properties")
  1. D DESTROY^ECOBPC(CHILD)
  1. D GET^ECOB(.CHILD,HANDLE,"Pu","Root")
  1. D DESTROY^ECOBL(CHILD)
  1. Q $$DESTROY^ECOB(HANDLE)
  1. ;;
  1. FUNCTION(HANDLE,ARGUMENT) ;
  1. ; argument=method.(additional.params....)
  1. N RESULT
  1. D METHOD(.RESULT,HANDLE_"."_ARGUMENT)
  1. Q RESULT
  1. ;
  1. OUT(HANDLE,ARGUMENT) ;
  1. ; argument=method.(additional.params....)
  1. N RESULT
  1. D METHOD(.RESULT,HANDLE_"."_ARGUMENT)
  1. Q RESULT
  1. ;
  1. METHOD(RESULT,ARGUMENT) ;
  1. ; argument=handle.method.(additional.params...)
  1. N HANDLE,METHOD,PARAMS
  1. D PARSE("Handle",ARGUMENT)
  1. I $G(HANDLE)'="",'$D(@HANDLE) S RESULT="-1^No data at handle: "_HANDLE_"." Q ;EC*129 - JAM
  1. D PARSE("Method",ARGUMENT)
  1. D PARSE("Params",ARGUMENT)
  1. I METHOD="Collect" D ECOB30(.RESULT,HANDLE,PARAMS) Q
  1. I METHOD="Methods" D ECOBMC(.RESULT,HANDLE,PARAMS) Q
  1. I METHOD="Properties" D ECOBPC(.RESULT,HANDLE,PARAMS) Q
  1. I METHOD="Root" D ECOBL(.RESULT,HANDLE,METHOD,PARAMS) Q
  1. I METHOD="mf" D ECOBM(.RESULT,HANDLE,PARAMS) Q
  1. I METHOD="of" D ECOB2(.RESULT,HANDLE,PARAMS) Q
  1. I METHOD="pf" D ECOBP(.RESULT,HANDLE,PARAMS) Q
  1. D HANDLERS(.RESULT,HANDLE,METHOD,PARAMS) Q
  1. ;;