1 package gate.util.persistence;
2
3 import java.util.*;
4
5 import gate.creole.ConditionalController;
6 import gate.creole.ResourceInstantiationException;
7 import gate.persist.PersistenceException;
8
11
12 public class ConditionalControllerPersistence extends ControllerPersistence {
13
17 public void extractDataFromSource(Object source)throws PersistenceException{
18 if(! (source instanceof ConditionalController)){
19 throw new UnsupportedOperationException(
20 getClass().getName() + " can only be used for " +
21 ConditionalController.class.getName() +
22 " objects!\n" + source.getClass().getName() +
23 " is not a " + ConditionalController.class.getName());
24 }
25 super.extractDataFromSource(source);
26
27 ConditionalController controller = (ConditionalController)source;
28
29 strategiesList = new ArrayList(controller.getRunningStrategies().size());
30
31 Iterator stratIter = controller.getRunningStrategies().iterator();
32 while(stratIter.hasNext()) ((List)strategiesList).add(stratIter.next());
33
34 strategiesList = PersistenceManager.
35 getPersistentRepresentation(strategiesList);
36 }
37
38
42 public Object createObject()throws PersistenceException,
43 ResourceInstantiationException{
44 ConditionalController controller =
45 (ConditionalController)super.createObject();
46 controller.setRunningStrategies(
48 (Collection)PersistenceManager.
49 getTransientRepresentation(strategiesList));
50 return controller;
52 }
53 protected Object strategiesList;
54
55
58 static final long serialVersionUID = -746291109981304574L;
59 }