1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package zeus.rete.action;
24 import zeus.rete.*;
25 import zeus.concepts.fn.*;
26 import zeus.concepts.*;
27 import zeus.util.*;
28 import java.util.*;
29 import java.io.*;
30 /***
31
32 @author Simon Thompson
33 @since 1.1
34 */
35 public class OpenAction extends ReteAction{
36
37 /***
38
39 */
40 public void executeAction (Action a, Info info) {
41 ValueFunction var = ((ValueFunction)a.head).resolve(info.getBindings());
42 if ( var == null || var.getID() != ValueFunction.ID ) {
43 Core.USER_ERROR("Cannot resolve '" + a.head + "' in action " + a);
44 return;
45 }
46 ValueFunction value = ((ValueFunction)a.sub_head).resolve(info.getBindings());
47 if ( value == null || value.getID() != ValueFunction.ID ) {
48 Core.USER_ERROR("Cannot resolve '" + a.sub_head + "' in action " + a);
49 return;
50 }
51 ValueFunction value1 = ((ValueFunction)a.sub_sub_head).resolve(info.getBindings());
52 if ( value == null || value.getID() != ValueFunction.ID ) {
53 Core.USER_ERROR("Cannot resolve '" + a.sub_sub_head + "' in action " + a);
54 return;
55 }
56
57 String logicalName = ((IdFn)var).getValue();
58 String filename = ((IdFn)value).getValue();
59 String mode = ((IdFn)value1).getValue();
60
61 if ( mode.equalsIgnoreCase("r") )
62 conflictHandler.createReader(logicalName,filename);
63 else if ( mode.equalsIgnoreCase("w") )
64 conflictHandler.createWriter(logicalName,filename,false);
65 else if ( mode.equalsIgnoreCase("wa") || mode.equalsIgnoreCase("a") )
66 conflictHandler.createWriter(logicalName,filename,true);
67 else
68 Core.USER_ERROR("Unknown mode '" + mode + "' in action " + a);
69 }
70
71
72 }