* @return
* @throws PersistenceException
*/
@Override
public LanguageResource adopt(LanguageResource langres) throws PersistenceException {
LanguageResource lr = langres;
if(lr instanceof Document) {
Document doc = (Document)lr;
if(doc.getDataStore() == null || doc.getDataStore() != this) {
throw new PersistenceException("Cannot adopt document, already in a different datastore: "+lr.getName());
}
// otherwise, the document is already adopted by this datastore so we
// silently ignore this.
} else if(lr instanceof CorpusImpl) {
// only a transient, empty corpus can be adopted!!!
Corpus corpus = (Corpus)lr;
if(corpus.getDataStore() != null) {
throw new PersistenceException(
"Cannot adopt corpus "+corpus.getName()+
" which belongs to datastore "+corpus.getDataStore().getName());
}
if(corpus.size() != 0) {
throw new PersistenceException(
"Cannot adopt corpus "+corpus.getName()+
" which is non empty, number of documents contained: "+
corpus.size());
}
// since this is a valid corpus, we adopt it by returning new
// DocumentSubsetCorpus which has the original corpus as a parent
FeatureMap parms = Factory.newFeatureMap();
parms.put("jdbcCorpus", ourCorpus);
try {
Resource newCorpus = Factory.createResource(
"at.ofai.gate.virtualcorpus.JDBCSubsetCorpus", parms,
corpus.getFeatures(), corpus.getName());
lr = (LanguageResource)newCorpus;
} catch (ResourceInstantiationException ex) {
throw new PersistenceException(
"Could not adopt corpus "+corpus.getName(),ex);
}
} else {
throw new PersistenceException("Cannot adopt LR: "+lr.getName());
}
return lr;
}