01 package gate.util.persistence;
02
03 import java.util.*;
04
05 import gate.creole.ConditionalController;
06 import gate.creole.ResourceInstantiationException;
07 import gate.persist.PersistenceException;
08 /**
09 * Persistence handler for {@link gate.creole.ConditionalController}s
10 */
11
12 public class ConditionalControllerPersistence extends ControllerPersistence {
13 /**
14 * Populates this Persistence with the data that needs to be stored from the
15 * original source object.
16 */
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 /**
39 * Creates a new object from the data contained. This new object is supposed
40 * to be a copy for the original object used as source for data extraction.
41 */
42 public Object createObject()throws PersistenceException,
43 ResourceInstantiationException{
44 ConditionalController controller =
45 (ConditionalController)super.createObject();
46 // if(controller.getRunningStrategies().isEmpty()){
47 controller.setRunningStrategies(
48 (Collection)PersistenceManager.
49 getTransientRepresentation(strategiesList));
50 // }
51 return controller;
52 }
53 protected Object strategiesList;
54
55 /**
56 * Serialisation ID
57 */
58 static final long serialVersionUID = -746291109981304574L;
59 }
|