Advertisement
Guest User

Untitled

a guest
Oct 6th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. COLLECTION:
  2. USING PROGRESS.Lang.*.
  3. USING app.core.util.Node.
  4.  
  5. CLASS app.core.util.Collection:
  6.   DEF private property currentNode AS Node NO-UNDO GET. private SET.
  7.   DEF private property headNode AS Node NO-UNDO GET. private SET.
  8.   DEF private property lastNode AS Node NO-UNDO GET. private SET.
  9.   DEF public property OffEnd AS LOG NO-UNDO GET. private SET.
  10.  
  11.   CONSTRUCTOR Collection():
  12.     THIS-OBJECT:currentNode = ?.
  13.     THIS-OBJECT:headNode = ?.
  14.     THIS-OBJECT:OffEnd = yes.
  15.   END CONSTRUCTOR.
  16.  
  17.   METHOD public void AddObject(obj AS Object):
  18.     DEF VAR newNode AS Node NO-UNDO.
  19.  
  20.     newNode = NEW Node(obj).
  21.     IF THIS-OBJECT:headNode EQ ? THEN DO:
  22.       THIS-OBJECT:headNode = newNode.
  23.       THIS-OBJECT:currentNode = newNode.
  24.       THIS-OBJECT:lastNode = newNode.
  25.       THIS-OBJECT:OffEnd = no.
  26.     END.
  27.     ELSE DO:
  28.       THIS-OBJECT:lastNode:SetNext(newNode).
  29.       THIS-OBJECT:lastNode = newNode.
  30.     END.
  31.   END METHOD.
  32.  
  33.   METHOD public void NextNode():
  34.     IF THIS-OBJECT:currentNode:NextNode() NE ? THEN DO:
  35.       THIS-OBJECT:currentNode = THIS-OBJECT:currentNode:NextNode().
  36.     END.
  37.     ELSE DO:
  38.       THIS-OBJECT:OffEnd = yes.
  39.     END.
  40.   END METHOD.
  41.  
  42.   METHOD public PROGRESS.Lang.Object GetObject():
  43.     RETURN THIS-OBJECT:currentNode:GetObject().
  44.   END METHOD.
  45.  
  46.   METHOD public void NodeReset():
  47.     THIS-OBJECT:currentNode = THIS-OBJECT:headNode.
  48.   END METHOD.
  49. END CLASS.
  50.  
  51. NODE:
  52. USING PROGRESS.Lang.*.
  53.  
  54. CLASS app.core.util.Node:
  55.   DEF private property nextNode AS app.core.util.Node NO-UNDO GET. private SET.
  56.   DEF private property nodeObject AS PROGRESS.Lang.Object NO-UNDO GET. private SET.
  57.  
  58.   CONSTRUCTOR Node(nodeObject AS PROGRESS.Lang.Object):
  59.     THIS-OBJECT:nodeObject = nodeObject.
  60.     THIS-OBJECT:nextNode = ?.
  61.   END CONSTRUCTOR.
  62.  
  63.   METHOD public PROGRESS.Lang.Object GetObject():
  64.     RETURN THIS-OBJECT:nodeObject.
  65.   END METHOD.
  66.  
  67.   METHOD public app.core.util.Node NextNode():
  68.     RETURN THIS-OBJECT:nextNode.
  69.   END METHOD.
  70.  
  71.   METHOD public void SetNext(nextNode AS app.core.util.Node):
  72.     THIS-OBJECT:nextNode = nextNode.
  73.   END METHOD.
  74. END CLASS.
  75.  
  76. USAGE:
  77.    mycont = NEW Collection().
  78.    mycont:AddObject(NEW Object()).
  79.    mycont:AddObject(NEW Object()).
  80.    mycont:AddObject(NEW Object()).
  81.    myObj = mycont:GetObject().
  82.  
  83.    col-loop:
  84.    REPEAT:
  85.      IF mycont:OffEnd EQ yes THEN LEAVE col-loop.
  86.      myObj = mycont:GetObject().
  87.      mycont:NextNode().
  88.      temphtml = temphtml + "<p>Another</p>".
  89.    END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement