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 }