1   
14  package gate.util.persistence;
15  
16  import java.io.Serializable;
17  import java.util.Map;
18  
19  import gate.DataStore;
20  import gate.LanguageResource;
21  import gate.creole.ResourceInstantiationException;
22  import gate.persist.PersistenceException;
23  
24  public class LRPersistence extends ResourcePersistence {
25  
26    
30    public void extractDataFromSource(Object source)throws PersistenceException{
31          if(! (source instanceof LanguageResource)){
33        throw new UnsupportedOperationException(
34                  getClass().getName() + " can only be used for " +
35                  LanguageResource.class.getName() +
36                  " objects!\n" + source.getClass().getName() +
37                  " is not a " + LanguageResource.class.getName());
38      }
39  
40      super.extractDataFromSource(source);
41              features = null;
44  
45      LanguageResource lr = (LanguageResource)source;
46      if(lr.getDataStore() == null){
47        dsData = null;
48      }else{
49        dsData = PersistenceManager.
50                 getPersistentRepresentation(lr.getDataStore());
51        persistenceID = lr.getLRPersistenceId();
52      }
53    }
54  
55    
59    public Object createObject()throws PersistenceException,
60                                       ResourceInstantiationException{
61      if(dsData == null) return super.createObject();
62      else{
63              initParams = PersistenceManager.getTransientRepresentation(initParams);
65  
66        DataStore ds = (DataStore)PersistenceManager.
67                       getTransientRepresentation(dsData);
68        ((Map)initParams).put(DataStore.DATASTORE_FEATURE_NAME, ds);
69        ((Map)initParams).put(DataStore.LR_ID_FEATURE_NAME, persistenceID);
70        return super.createObject();
71      }
72    }
73  
74    protected Serializable dsData;
75    protected Object persistenceID;
76    static final long serialVersionUID = 3541034274225534363L;
77  }