1 /*
2 * The contents of this file are subject to the BT "ZEUS" Open Source
3 * Licence (L77741), Version 1.0 (the "Licence"); you may not use this file
4 * except in compliance with the Licence. You may obtain a copy of the Licence
5 * from $ZEUS_INSTALL/licence.html or alternatively from
6 * http://www.labs.bt.com/projects/agents/zeus/licence.htm
7 *
8 * Except as stated in Clause 7 of the Licence, software distributed under the
9 * Licence is distributed WITHOUT WARRANTY OF ANY KIND, either express or
10 * implied. See the Licence for the specific language governing rights and
11 * limitations under the Licence.
12 *
13 * The Original Code is within the package zeus.*.
14 * The Initial Developer of the Original Code is British Telecommunications
15 * public limited company, whose registered office is at 81 Newgate Street,
16 * London, EC1A 7AJ, England. Portions created by British Telecommunications
17 * public limited company are Copyright 1996-9. All Rights Reserved.
18 *
19 * THIS NOTICE MUST BE INCLUDED ON ANY COPY OF THIS FILE
20 */
21
22
23
24 package zeus.actors.graphs;
25
26 import java.util.*;
27 import zeus.util.*;
28 import zeus.concepts.*;
29 import zeus.actors.*;
30 import zeus.actors.rtn.*;
31 import zeus.actors.rtn.util.*;
32
33 public class Sw extends Node {
34 public Sw() {
35 super("Sw");
36 }
37 protected int exec() {
38 Engine engine = context.Engine();
39 Planner table = context.Planner();
40
41 GraphStruct gs = (GraphStruct)input;
42 Goal g, g1;
43 boolean found = false;
44 DelegationStruct ds;
45 SuppliedDb db;
46 ReservationEntry[] reservations;
47 AuditTable audit = engine.getAuditTable();
48 boolean isRoot = ((Integer)gs.any).intValue() == AuditTable.ROOT;
49
50 for(int i = 0; i < gs.goal.size(); i++ ) {
51 g = (Goal)gs.goal.elementAt(i);
52 found = false;
53 for(int j = 0; !found && j < gs.selection.size(); j++ ) {
54 ds = (DelegationStruct)gs.selection.elementAt(i);
55 g1 = (Goal)ds.goals.elementAt(0);
56 if ( g1.getId().equals(g.getId()) ) {
57 audit.add(g,ds.key,g1.getCost(),false,false,ds.agent,
58 context.whoami(),g.getEndTime());
59 engine.continue_dialogue(ds.key,ds.agent,"accept-proposal",ds.goals);
60 found = true;
61 /*
62 if ( (db = g.getSuppliedDb()) != null ) {
63 reservations = db.getReservations(context.whoami(),
64 ds.agent);
65 audit.add(context.whoami(),reservations);
66 }
67 */
68 }
69 }
70 Assert.notFalse(found);
71 }
72
73 if ( !isRoot )
74 table.reconfirmParentOf(gs.goal);
75
76 output = gs;
77 return OK;
78 }
79 protected void reset() {
80 // reset any state changed by exec()
81 }
82 }