|
CorpusPersistence |
|
1 /* 2 * Copyright (c) 1998-2001, The University of Sheffield. 3 * 4 * This file is part of GATE (see http://gate.ac.uk/), and is free 5 * software, licenced under the GNU Library General Public License, 6 * Version 2, June 1991 (in the distribution as file licence.html, 7 * and also available at http://gate.ac.uk/gate/licence.html). 8 * 9 * Valentin Tablan 26/10/2001 10 * 11 * $Id: CorpusPersistence.java,v 1.2 2001/10/29 17:11:26 valyt Exp $ 12 * 13 */ 14 15 package gate.util.persistence; 16 17 18 import gate.*; 19 import gate.creole.*; 20 import gate.util.*; 21 import gate.persist.PersistenceException; 22 23 import java.util.*; 24 import java.io.*; 25 26 27 public class CorpusPersistence extends LRPersistence { 28 /** 29 * Populates this Persistence with the data that needs to be stored from the 30 * original source object. 31 */ 32 public void extractDataFromSource(Object source)throws PersistenceException{ 33 //check input 34 if(! (source instanceof Corpus)){ 35 throw new UnsupportedOperationException( 36 getClass().getName() + " can only be used for " + 37 Corpus.class.getName() + 38 " objects!\n" + source.getClass().getName() + 39 " is not a " + Corpus.class.getName()); 40 } 41 42 Corpus corpus = (Corpus)source; 43 super.extractDataFromSource(source); 44 if(dsData == null){ 45 //transient corpus; we still need to save the docs 46 docList = new ArrayList(); 47 Iterator docIter = corpus.iterator(); 48 while(docIter.hasNext()){ 49 docList.add(PersistenceManager. 50 getPersistentRepresentation(docIter.next())); 51 } 52 }else{ 53 //persistent corpus; it takes care of documents by itself 54 //nothing to do :) 55 docList = null; 56 } 57 } 58 59 60 /** 61 * Creates a new object from the data contained. This new object is supposed 62 * to be a copy for the original object used as source for data extraction. 63 */ 64 public Object createObject()throws PersistenceException, 65 ResourceInstantiationException{ 66 Corpus corpus = (Corpus)super.createObject(); 67 if(docList != null){ 68 //transient corpus; we need to recreate the docs 69 if(!docList.isEmpty() && corpus.isEmpty()){ 70 Iterator docIter = docList.iterator(); 71 while(docIter.hasNext()){ 72 corpus.add(PersistenceManager. 73 getTransientRepresentation(docIter.next())); 74 } 75 76 } 77 } 78 return corpus; 79 } 80 81 82 protected ArrayList docList; 83 static final long serialVersionUID = 6181534551802883626L; 84 }
|
CorpusPersistence |
|