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   /**
9    * 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  }