ControllerPersistence.java
01 /*
02  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
03  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
04  *
05  *  This file is part of GATE (see http://gate.ac.uk/), and is free
06  *  software, licenced under the GNU Library General Public License,
07  *  Version 2, June 1991 (in the distribution as file licence.html,
08  *  and also available at http://gate.ac.uk/gate/licence.html).
09  *
10  *  Valentin Tablan 26/10/2001
11  *
12  *  $Id: ControllerPersistence.java 18176 2014-07-11 15:45:13Z johann_p $
13  *
14  */
15 package gate.util.persistence;
16 
17 import gate.Controller;
18 import gate.ProcessingResource;
19 import gate.creole.ResourceInstantiationException;
20 import gate.persist.PersistenceException;
21 
22 import java.util.ArrayList;
23 import java.util.Collection;
24 
25 public class ControllerPersistence extends ResourcePersistence {
26   /**
27    * Populates this Persistence with the data that needs to be stored from the
28    * original source object.
29    */
30   @Override
31   public void extractDataFromSource(Object source)throws PersistenceException{
32     if((source instanceof Controller)){
33       throw new UnsupportedOperationException(
34                 getClass().getName() " can only be used for " +
35                 Controller.class.getName() +
36                 " objects!\n" + source.getClass().getName() +
37                 " is not a " + Controller.class.getName());
38     }
39     Controller controller = (Controller)source;
40 
41     super.extractDataFromSource(source);
42     /*prList = new ArrayList(controller.getPRs().size());
43     Iterator prIter = controller.getPRs().iterator();
44 
45     while(prIter.hasNext()){
46       ((List)prList).add(prIter.next());
47     }*/
48     
49     prList = new ArrayList<ProcessingResource>(controller.getPRs());
50     
51     prList = PersistenceManager.getPersistentRepresentation(prList);
52   }
53 
54   /**
55    * Creates a new object from the data contained. This new object is supposed
56    * to be a copy for the original object used as source for data extraction.
57    */
58   @SuppressWarnings("unchecked")
59   @Override
60   public Object createObject()throws PersistenceException,
61                                      ResourceInstantiationException{
62     Controller controller = (Controller)super.createObject();
63     if(controller.getPRs().isEmpty()){
64       prList = PersistenceManager.getTransientRepresentation(
65               prList,resourceName,initParamOverrides);
66       controller.setPRs((Collection<ProcessingResource>)prList);
67     }
68     return controller;
69   }
70 
71   protected Object prList;
72   static final long serialVersionUID = 727852357092819439L;
73 }