AbstractLanguageResource.java
001 /*
002  *  AbstractLanguageResource.java
003  *
004  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
005  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
006  *
007  *  This file is part of GATE (see http://gate.ac.uk/), and is free
008  *  software, licenced under the GNU Library General Public License,
009  *  Version 2, June 1991 (in the distribution as file licence.html,
010  *  and also available at http://gate.ac.uk/gate/licence.html).
011  *
012  *  Hamish Cunningham, 24/Oct/2000
013  *
014  *  $Id: AbstractLanguageResource.java 17662 2014-03-14 16:19:05Z markagreenwood $
015  */
016 
017 package gate.creole;
018 
019 import gate.DataStore;
020 import gate.LanguageResource;
021 import gate.persist.PersistenceException;
022 
023 /** A convenience implementation of LanguageResource with some default code.
024   */
025 abstract public class AbstractLanguageResource
026 extends AbstractResource implements LanguageResource
027 {
028   static final long serialVersionUID = 3320133313194786685L;
029 
030   /** Get the data store that this LR lives in. Null for transient LRs. */
031   @Override
032   public DataStore getDataStore() { return dataStore; }
033 
034   /** Set the data store that this LR lives in. */
035   @Override
036   public void setDataStore(DataStore dataStorethrows PersistenceException {
037     this.dataStore = dataStore;
038   // setDataStore(DS)
039 
040   /** Returns the persistence id of this LR, if it has been stored in
041    *  a datastore. Null otherwise.
042    */
043   @Override
044   public Object getLRPersistenceId(){
045     return lrPersistentId;
046   }
047 
048   /** Sets the persistence id of this LR. To be used only in the
049    *  Factory and DataStore code.
050    */
051   @Override
052   public void setLRPersistenceId(Object lrID){
053     this.lrPersistentId = lrID;
054   }
055 
056 
057   /** The data store this LR lives in. */
058   transient protected DataStore dataStore;
059 
060   /** The persistence ID of this LR. Only set, when dataStore is.*/
061   transient protected Object lrPersistentId = null;
062 
063 
064   /** Save: synchonise the in-memory image of the LR with the persistent
065     * image.
066     */
067   @Override
068   public void sync()
069     throws PersistenceException,SecurityException {
070     if(dataStore == null)
071       throw new PersistenceException("LR has no DataStore");
072 
073     dataStore.sync(this);
074   // sync()
075 
076   /** Clear the internal state of the resource
077     */
078   @Override
079   public void cleanup() {
080   //clear()
081 
082   /**
083    * Returns true of an LR has been modified since the last sync.
084    * Always returns false for transient LRs.
085    */
086   @Override
087   public boolean isModified() {return false;}
088 
089   /**
090    * Returns the parent LR of this LR.
091    * Only relevant for LRs that support shadowing. Most do not by default.
092    */
093   @Override
094   public LanguageResource getParent()
095     throws PersistenceException,SecurityException {
096     if(dataStore == null)
097       throw new PersistenceException("LR has no DataStore");
098     throw new UnsupportedOperationException("getParent method not " +
099                                             "supported by this LR");
100   }//getParent
101 
102   /**
103    * Sets the parent LR of this LR.
104    * Only relevant for LRs that support shadowing. Most do not by default.
105    */
106   @Override
107   public void setParent(LanguageResource parentLR)
108     throws PersistenceException,SecurityException {
109     if(dataStore == null)
110       throw new PersistenceException("LR has no DataStore");
111     throw new UnsupportedOperationException("setParent method not " +
112                                             "supported by this LR");
113   }//setParent
114 
115 
116 
117 // class AbstractLanguageResource