1
2
3
4
5
6
7
8 package net.kwfgrid.gwes.prorater;
9
10 import net.kwfgrid.gwes.GenericWorkflowHandler;
11 import net.kwfgrid.gwes.Constants;
12 import net.kwfgrid.gwes.exception.OperationMapperException;
13 import net.kwfgrid.gwes.operationmapper.OperationMapper;
14 import net.kwfgrid.gworkflowdl.structure.Transition;
15 import org.apache.log4j.Logger;
16
17 import java.io.IOException;
18 import java.io.InputStream;
19 import java.util.ArrayList;
20 import java.util.Properties;
21
22
23
24
25
26
27
28
29
30
31
32 public abstract class AbstractProrater extends OperationMapper {
33
34
35
36
37 final static Logger logger = Logger.getLogger(SimpleProrater.class);
38
39
40
41
42 static float MIN_QUALITY;
43
44
45
46
47 static int WAIT_AFTER_LAST_ASSIGNMENT;
48
49 AbstractProrater() {
50 Properties prop = new Properties();
51 InputStream is = SimpleProrater.class.getResourceAsStream("/gwes.properties");
52 if (is != null) try {
53 prop.load(is);
54
55 }
56 catch (IOException e) {
57 logger.error(e, e);
58 }
59
60 String s = prop.getProperty(Constants.PROP_SYSTEM_RESOURCE_PRORATER_MIN_QUALITY, "0.1");
61 MIN_QUALITY = Float.parseFloat(s);
62 s = prop.getProperty(Constants.PROP_SYSTEM_RESOURCE_PRORATER_WAIT, "12000");
63 WAIT_AFTER_LAST_ASSIGNMENT = Integer.parseInt(s);
64 }
65
66 public boolean processTransition(GenericWorkflowHandler handler, Transition transition) throws OperationMapperException {
67 try {
68 ArrayList<Transition> transitions = new ArrayList<Transition>();
69 transitions.add(transition);
70 init(transitions);
71 } catch (IOException e) {
72 throw new OperationMapperException("Exception during processTransitions(): "+e, e);
73 }
74
75 return decide();
76 }
77
78 public boolean processTransitions(GenericWorkflowHandler handler, ArrayList<Transition> transitions) throws OperationMapperException {
79 try {
80 init(transitions);
81 } catch (IOException e) {
82 throw new OperationMapperException("Exception during processTransitions(): "+e, e);
83 }
84 return decide();
85 }
86
87 abstract void init(ArrayList<Transition> transitions) throws IOException;
88
89 abstract boolean decide();
90 }