ConditionalControllerPersistence.java
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 }