942 lines
28 KiB
Java
942 lines
28 KiB
Java
package org.thdl.lex;
|
|
import java.sql.*;
|
|
import java.util.*;
|
|
|
|
import net.sf.hibernate.*;
|
|
import org.apache.log4j.*;
|
|
|
|
import org.thdl.lex.component.*;
|
|
|
|
|
|
|
|
/**
|
|
* Description of the Class
|
|
*
|
|
* @author travis
|
|
* @created October 1, 2003
|
|
*/
|
|
public class LexComponentRepository
|
|
{
|
|
|
|
/**
|
|
* Description of the Field
|
|
*/
|
|
public final static String EXACT = "exact";
|
|
/**
|
|
* Description of the Field
|
|
*/
|
|
public final static String STARTS_WITH = "startsWith";
|
|
/**
|
|
* Description of the Field
|
|
*/
|
|
public final static String ANYWHERE = "anywhere";
|
|
private static long start;
|
|
|
|
private static long lastUpdate = now();
|
|
|
|
|
|
/**
|
|
* Sets the lastUpdate attribute of the LexComponentRepository class
|
|
*
|
|
* @param last The new lastUpdate value
|
|
*/
|
|
public static void setLastUpdate( long last )
|
|
{
|
|
lastUpdate = last;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the lastUpdate attribute of the LexComponentRepository class
|
|
*
|
|
* @return The lastUpdate value
|
|
*/
|
|
public static long getLastUpdate()
|
|
{
|
|
return lastUpdate;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Sets the start attribute of the LexComponentRepository object
|
|
*
|
|
* @param startTime The new start value
|
|
* @since
|
|
*/
|
|
private static void setStart( long startTime )
|
|
{
|
|
Logger logger = Logger.getLogger( "org.thdl.lex" );
|
|
logger.debug( "Query start time: " + new java.util.Date( startTime ) );
|
|
start = startTime;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Gets the start attribute of the LexComponentRepository object
|
|
*
|
|
* @return The start value
|
|
* @since
|
|
*/
|
|
private static long getStart()
|
|
{
|
|
return start;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the duration attribute of the LexComponentRepository class
|
|
*
|
|
* @return The duration value
|
|
*/
|
|
private static long getDuration()
|
|
{
|
|
long duration = now() - getStart();
|
|
|
|
Logger logger = Logger.getLogger( "org.thdl.lex" );
|
|
logger.debug( "Query finish: " + new java.util.Date( now() ) );
|
|
logger.debug( "Query duration in ms: " + duration );
|
|
logger.info( "Query duration: " + duration / 1000 + " seconds." );
|
|
return duration;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the session attribute of the LexComponentRepository class
|
|
*
|
|
* @return The session value
|
|
* @exception HibernateException Description of Exception
|
|
* @since
|
|
*/
|
|
protected static Session getSession() throws HibernateException
|
|
{
|
|
Session session = HibernateSession.currentSession();
|
|
if ( !session.isConnected() )
|
|
{
|
|
//session.reconnect();
|
|
}
|
|
return session;
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
protected static void beginTransaction() throws LexRepositoryException
|
|
{
|
|
try
|
|
{
|
|
HibernateTransaction.beginTransaction();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param commit Description of Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
* @since
|
|
*/
|
|
protected static void endTransaction( boolean commit ) throws LexRepositoryException
|
|
{
|
|
try
|
|
{
|
|
HibernateTransaction.endTransaction( commit );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @return Description of the Returned Value
|
|
* @since
|
|
*/
|
|
private static long now()
|
|
{
|
|
return System.currentTimeMillis();
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param comp Description of Parameter
|
|
* @return Description of the Returned Value
|
|
* @exception LexRepositoryException Description of Exception
|
|
* @since
|
|
*/
|
|
private static ITerm assertTerm( ILexComponent comp ) throws LexRepositoryException
|
|
{
|
|
ITerm term = null;
|
|
try
|
|
{
|
|
term = (ITerm) comp;
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
throw new LexRepositoryException( "Query Component was not a term." );
|
|
}
|
|
return term;
|
|
}
|
|
|
|
|
|
/**
|
|
* Queries the database for Terms that start with the string in the term
|
|
* property of the queryComponent. Sets entry property the first hit returned.
|
|
*
|
|
* @param lexQuery Description of Parameter
|
|
* @exception LexRepositoryException Description of Exception
|
|
* @since
|
|
*/
|
|
public static void findTermsByTerm( LexQuery lexQuery ) throws LexRepositoryException
|
|
{
|
|
setStart( now() );
|
|
beginTransaction();
|
|
ITerm term = assertTerm( lexQuery.getQueryComponent() );
|
|
if ( null == term.getTerm() )
|
|
{
|
|
throw new LexRepositoryException( "Query Component term was null." );
|
|
}
|
|
|
|
Query query = null;
|
|
Iterator it = null;
|
|
|
|
String termForQuery = LexUtilities.hqlEscape( term.getTerm() );
|
|
LexLogger.debug( "Escaped term string: " + termForQuery );
|
|
|
|
if ( lexQuery.getFindMode().equals( LexComponentRepository.STARTS_WITH ) )
|
|
{
|
|
termForQuery = termForQuery + "%";
|
|
}
|
|
else if ( lexQuery.getFindMode().equals( LexComponentRepository.ANYWHERE ) )
|
|
{
|
|
termForQuery = "%" + termForQuery + "%";
|
|
}
|
|
|
|
String queryString = " FROM org.thdl.lex.component.ITerm as term WHERE term.term like :term AND term.deleted=0 ORDER BY term";
|
|
try
|
|
{
|
|
query = getSession().createQuery( queryString );
|
|
query.setString( "term", termForQuery );
|
|
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
|
|
try
|
|
{
|
|
it = query.iterate();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
|
|
if ( it.hasNext() )
|
|
{
|
|
term = (ITerm) it.next();
|
|
lexQuery.setEntry( term );
|
|
lexQuery.getResults().clear();
|
|
lexQuery.getResults().put( term.getMetaId(), term.getTerm() );
|
|
}
|
|
else
|
|
{
|
|
lexQuery.setEntry( null );
|
|
lexQuery.getResults().clear();
|
|
}
|
|
while ( it.hasNext() )
|
|
{
|
|
term = (ITerm) it.next();
|
|
lexQuery.getResults().put( term.getMetaId(), term.getTerm() );
|
|
}
|
|
endTransaction( false );
|
|
lexQuery.setDuration( getDuration() );
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param pk Description of the Parameter
|
|
* @return Description of the Return Value
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static ITerm findTermByPk( Integer pk ) throws LexRepositoryException
|
|
{
|
|
ITerm term = null;
|
|
|
|
beginTransaction();
|
|
String queryString = " FROM org.thdl.lex.component.ITerm as term WHERE term.metaId = " + pk.toString();
|
|
try
|
|
{
|
|
Query query = getSession().createQuery( queryString );
|
|
term = (ITerm) query.uniqueResult();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
endTransaction( false );
|
|
return term;
|
|
}
|
|
public static List getAllTerms( ) throws LexRepositoryException
|
|
{
|
|
List terms = null;
|
|
|
|
beginTransaction();
|
|
String queryString = " FROM org.thdl.lex.component.ITerm";
|
|
try
|
|
{
|
|
Query query = getSession().createQuery( queryString );
|
|
terms = query.list();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
endTransaction( false );
|
|
return terms;
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param lexQuery Description of the Parameter
|
|
* @return Description of the Return Value
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static Map findTermsByMeta( LexQuery lexQuery ) throws LexRepositoryException
|
|
{
|
|
Logger logger = Logger.getLogger( "org.thdl.lex" );
|
|
ITerm term = assertTerm( lexQuery.getQueryComponent() );
|
|
Map terms = new HashMap();
|
|
ILexComponent comp = null;
|
|
ITerm aTerm;
|
|
Query query = null;
|
|
Iterator it = null;
|
|
|
|
setStart( now() );
|
|
beginTransaction();
|
|
if ( null == term.getMeta() )
|
|
{
|
|
throw new LexRepositoryException( "Query Component term.meta was null." );
|
|
}
|
|
|
|
if ( logger.isDebugEnabled() )
|
|
{
|
|
logger.debug( "Tibetan Dictionary begin query!" );
|
|
}
|
|
String queryString = "select term from org.thdl.lex.component.Term as term "
|
|
//join term collections
|
|
+ " join term.pronunciations as pron "
|
|
+ " join term.etymologies as ety "
|
|
+ " join term.spellings as sp "
|
|
+ " join term.functions as func "
|
|
+ " join term.encyclopediaArticles as ency "
|
|
+ " join term.transitionalData as transData "
|
|
+ " join term.definitions as def "
|
|
+ " join term.glosses as glo "
|
|
+ " join term.keywords as key "
|
|
+ " join term.translationEquivalents as trans "
|
|
+ " join term.relatedTerms as rel "
|
|
+ " join term.passages as pass "
|
|
+ " join term.registers as reg "
|
|
//join def collections
|
|
+ " join def.subdefinitions as sub "
|
|
+ " join def.glosses as gloDef "
|
|
+ " join def.keywords as keyDef "
|
|
+ " join def.modelSentences as modDef "
|
|
+ " join def.translationEquivalents as transDef "
|
|
+ " join def.relatedTerms as relDef "
|
|
+ " join def.passages as passDef "
|
|
+ " join def.registers as regDef "
|
|
//join subdef collections
|
|
+ " join sub.glosses as gloSub "
|
|
+ " join sub.keywords as keySub "
|
|
+ " join sub.modelSentences as modSub "
|
|
+ " join sub.translationEquivalents as transSub "
|
|
+ " join sub.relatedTerms as relSub "
|
|
+ " join sub.passages as passSub "
|
|
+ " join sub.registers as regSub "
|
|
// join translation collections
|
|
/* + " join ety.translations as etyTrans "
|
|
+ " join term.definitions.translations as defTrans "
|
|
+ " join term.modelSentences.translations as modTrans "
|
|
+ " join term.passages.translations as passTrans "
|
|
+ " join def.subdefinition.translations as subTrans "
|
|
+ " join def.modelSentences.translations as modDefTrans "
|
|
+ " join def.passages.translations as passDefTrans "
|
|
+ " join sub.modelSentences.translations as modSubTrans "
|
|
+ " join sub.passages.translations as passSubTrans " */
|
|
//restrict by projectSubject in createdByProjSub
|
|
+ " where term.meta.createdByProjSub = :projSub"
|
|
+ " or pron.meta.createdByProjSub = :projSub"
|
|
+ " or ety.meta.createdByProjSub = :projSub"
|
|
+ " or sp.meta.createdByProjSub = :projSub"
|
|
+ " or func.meta.createdByProjSub = :projSub"
|
|
+ " or ency.meta.createdByProjSub = :projSub"
|
|
+ " or transData.meta.createdByProjSub = :projSub"
|
|
+ " or def.meta.createdByProjSub = :projSub"
|
|
+ " or glo.meta.createdByProjSub = :projSub"
|
|
+ " or key.meta.createdByProjSub = :projSub"
|
|
+ " or trans.meta.createdByProjSub = :projSub"
|
|
+ " or rel.meta.createdByProjSub = :projSub"
|
|
+ " or pass.meta.createdByProjSub = :projSub"
|
|
+ " or reg.meta.createdByProjSub = :projSub"
|
|
+ " or sub.meta.createdByProjSub = :projSub"
|
|
+ " or gloDef.meta.createdByProjSub = :projSub"
|
|
+ " or keyDef.meta.createdByProjSub = :projSub"
|
|
+ " or modDef.meta.createdByProjSub = :projSub"
|
|
+ " or transDef.meta.createdByProjSub = :projSub"
|
|
+ " or relDef.meta.createdByProjSub = :projSub"
|
|
+ " or passDef.meta.createdByProjSub = :projSub"
|
|
+ " or regDef.meta.createdByProjSub = :projSub"
|
|
+ " or gloSub.meta.createdByProjSub = :projSub"
|
|
+ " or keySub.meta.createdByProjSub = :projSub"
|
|
+ " or modSub.meta.createdByProjSub = :projSub"
|
|
+ " or transSub.meta.createdByProjSub = :projSub"
|
|
+ " or relSub.meta.createdByProjSub = :projSub"
|
|
+ " or passSub.meta.createdByProjSub = :projSub"
|
|
+ " or regSub.meta.createdByProjSub = :projSub"
|
|
/* + " or etyTrans.meta.createdByProjSub = :projSub"
|
|
+ " or defTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passTrans.meta.createdByProjSub = :projSub"
|
|
+ " or subTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modDefTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passDefTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modSubTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passSubTrans.meta.createdByProjSub = :projSub" */
|
|
//restrict by projectSubject in modifiedByProjSub
|
|
+ " or term.meta.modifiedByProjSub = :projSub"
|
|
+ " or pron.meta.modifiedByProjSub = :projSub"
|
|
+ " or ety.meta.modifiedByProjSub = :projSub"
|
|
+ " or sp.meta.modifiedByProjSub = :projSub"
|
|
+ " or func.meta.modifiedByProjSub = :projSub"
|
|
+ " or ency.meta.modifiedByProjSub = :projSub"
|
|
+ " or transData.meta.modifiedByProjSub = :projSub"
|
|
+ " or def.meta.modifiedByProjSub = :projSub"
|
|
+ " or glo.meta.modifiedByProjSub = :projSub"
|
|
+ " or key.meta.modifiedByProjSub = :projSub"
|
|
+ " or trans.meta.modifiedByProjSub = :projSub"
|
|
+ " or rel.meta.modifiedByProjSub = :projSub"
|
|
+ " or pass.meta.modifiedByProjSub = :projSub"
|
|
+ " or reg.meta.modifiedByProjSub = :projSub"
|
|
+ " or sub.meta.modifiedByProjSub = :projSub"
|
|
+ " or gloDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or keyDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or modDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or transDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or relDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or passDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or regDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or gloSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or keySub.meta.modifiedByProjSub = :projSub"
|
|
+ " or modSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or transSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or relSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or passSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or regSub.meta.modifiedByProjSub = :projSub"
|
|
/* + " or etyTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or defTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or subTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modDefTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passDefTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modSubTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passSubTrans.meta.modifiedByProjSub = :projSub";*/
|
|
|
|
+"";
|
|
try
|
|
{
|
|
query = getSession().createQuery( queryString );
|
|
query.setMaxResults( 100 );
|
|
query.setInteger( "projSub", lexQuery.getQueryComponent().getMeta().getCreatedByProjSub().intValue() );
|
|
logger.debug( "About to list query" );
|
|
List list = query.list();
|
|
logger.debug( "results size: " + list.size() );
|
|
it = list.iterator();
|
|
logger.debug( "Starting to add terms to map" );
|
|
while ( it.hasNext() )
|
|
{
|
|
aTerm = (ITerm) comp;
|
|
logger.debug( "successfully cast comp to an ITerm" );
|
|
|
|
Integer id = aTerm.getMetaId();
|
|
String tm = aTerm.getTerm();
|
|
terms.put( id, tm );
|
|
}
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
endTransaction( false );
|
|
lexQuery.setDuration( getDuration() );
|
|
return terms;
|
|
}
|
|
public static Map findTermsByMetaViaLc( LexQuery lexQuery ) throws LexRepositoryException
|
|
{
|
|
Logger logger = Logger.getLogger( "org.thdl.lex" );
|
|
ITerm term = assertTerm( lexQuery.getQueryComponent() );
|
|
Map terms = new HashMap();
|
|
ILexComponent comp = null;
|
|
ITerm aTerm;
|
|
Query query = null;
|
|
Iterator it = null;
|
|
|
|
setStart( now() );
|
|
beginTransaction();
|
|
if ( null == term.getMeta() )
|
|
{
|
|
throw new LexRepositoryException( "Query Component term.meta was null." );
|
|
}
|
|
|
|
if ( logger.isDebugEnabled() )
|
|
{
|
|
logger.debug( "Tibetan Dictionary begin query!" );
|
|
}
|
|
String queryString = "from org.thdl.lex.component.LexComponent as comp where comp.meta.createdByProjSub=:projSub";
|
|
|
|
try
|
|
{
|
|
query = getSession().createQuery( queryString );
|
|
//query.setMaxResults( 100 );
|
|
query.setInteger( "projSub", lexQuery.getQueryComponent().getMeta().getCreatedByProjSub().intValue() );
|
|
logger.debug( "About to list query" );
|
|
List list = query.list();
|
|
logger.debug( "results size: " + list.size() );
|
|
it = list.iterator();
|
|
while ( it.hasNext() )
|
|
{
|
|
logger.debug( "Starting quest for a term parent" );
|
|
|
|
comp = (ILexComponent) it.next();
|
|
int safetyFirst = 0;
|
|
parentSearch:while ( !( comp instanceof ITerm ) && comp != null )
|
|
{
|
|
logger.debug( "comp class: " + comp.getClass().getName() );
|
|
comp = comp.getParent();
|
|
if ( comp instanceof ITerm )
|
|
{
|
|
try
|
|
{
|
|
aTerm = (ITerm) comp;
|
|
terms.put( aTerm.getMetaId(), aTerm.getTerm() );
|
|
logger.debug( "successfully cast comp to an ITerm" );
|
|
}
|
|
catch ( ClassCastException cce )
|
|
{
|
|
logger.debug( "LCR caught ClassCastException Failed cast of " +comp.toString() + " to ITerm" );
|
|
throw cce;
|
|
}
|
|
}
|
|
|
|
safetyFirst++;
|
|
if ( safetyFirst > 10 )
|
|
{
|
|
logger.debug( "could not find an ITerm parent for component: " + comp );
|
|
break parentSearch;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
endTransaction( false );
|
|
lexQuery.setDuration( getDuration() );
|
|
return terms;
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param term Description of the Parameter
|
|
* @exception LexRepositoryException Description of Exception
|
|
* @since
|
|
*/
|
|
public static void loadTerm( ITerm term ) throws LexRepositoryException
|
|
{
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().load( term, term.getMetaId() );
|
|
endTransaction( false );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param lexQuery Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void loadTermByPk( LexQuery lexQuery ) throws LexRepositoryException
|
|
{
|
|
beginTransaction();
|
|
ITerm term = assertTerm( lexQuery.getQueryComponent() );
|
|
loadTerm( term );
|
|
lexQuery.setEntry( term );
|
|
if ( !lexQuery.getResults().containsKey( term.getMetaId() ) )
|
|
{
|
|
lexQuery.getResults().put( term.getMetaId(), term.getTerm() );
|
|
}
|
|
endTransaction( false );
|
|
}
|
|
|
|
public static ITerm loadTermByTerm( String term ) throws LexRepositoryException
|
|
{
|
|
ITerm returnTerm = null;
|
|
beginTransaction();
|
|
String queryString = " FROM org.thdl.lex.component.ITerm as theTerm where theTerm.term = :term";
|
|
try
|
|
{
|
|
Query query = getSession().createQuery( queryString );
|
|
query.setString( "term", term );
|
|
returnTerm = (ITerm) query.uniqueResult();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
|
|
endTransaction( false );
|
|
return returnTerm;
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void loadByPk( ILexComponent component ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().load( component, component.getMetaId() );
|
|
endTransaction( false );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @param pk Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void loadByPk( ILexComponent component, Integer pk ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().load( component, pk );
|
|
endTransaction( false );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the recentTerms attribute of the LexComponentRepository class
|
|
*
|
|
* @param limit Description of the Parameter
|
|
* @return The recentTerms value
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static List getRecentTerms( int limit ) throws LexRepositoryException
|
|
{
|
|
Query query = null;
|
|
List results = null;
|
|
String queryString = " FROM org.thdl.lex.component.ITerm ORDER BY modifiedOn DESC LIMIT " + limit;
|
|
try
|
|
{
|
|
beginTransaction();
|
|
query = getSession().createQuery( queryString );
|
|
results = query.list();
|
|
endTransaction( false );
|
|
getSession().clear();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void save( ILexComponent component ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().saveOrUpdate( component );
|
|
endTransaction( true );
|
|
setLastUpdate( now() );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void update( ILexComponent component ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().update( component );
|
|
endTransaction( true );
|
|
setLastUpdate( now() );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void remove( ILexComponent component ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().delete( component );
|
|
endTransaction( true );
|
|
setLastUpdate( now() );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param component Description of the Parameter
|
|
* @exception LexRepositoryException Description of the Exception
|
|
*/
|
|
public static void refresh( ILexComponent component ) throws LexRepositoryException
|
|
{
|
|
|
|
try
|
|
{
|
|
beginTransaction();
|
|
getSession().refresh( component );
|
|
endTransaction( true );
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @exception LexRepositoryException Description of Exception
|
|
* @since
|
|
*/
|
|
public static void cleanup() throws LexRepositoryException
|
|
{
|
|
try
|
|
{
|
|
endTransaction( false );
|
|
HibernateSession.closeSession();
|
|
}
|
|
catch ( HibernateException he )
|
|
{
|
|
throw new LexRepositoryException( he );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/join term collections
|
|
+ " join term.pronunciations as pron "
|
|
+ " join term.etymologies as ety "
|
|
+ " join term.spellings as sp "
|
|
+ " join term.functions as func "
|
|
+ " join term.encyclopediaArticles as ency "
|
|
+ " join term.transitionalData as trans "
|
|
+ " join term.definitions as def "
|
|
+ " join term.glosses as glo "
|
|
+ " join term.keywords as key "
|
|
+ " join term.translationEquivalents as trans "
|
|
+ " join term.relatedTerms as rel "
|
|
+ " join term.passages as pass "
|
|
+ " join term.registers as reg "
|
|
join def collections
|
|
+ " join def.subdefinitions as sub "
|
|
+ " join def.glosses as gloDef "
|
|
+ " join def.keywords as keyDef "
|
|
+ " join def.modelSentences as modDef "
|
|
+ " join def.translationEquivalents as transDef "
|
|
+ " join def.relatedTerms as relDef "
|
|
+ " join def.passages as passDef "
|
|
+ " join def.registers as regDef "
|
|
join subdef collections
|
|
+ " join sub.glosses as gloSub "
|
|
+ " join sub.keywords as keySub "
|
|
+ " join sub.modelSentences as modSub "
|
|
+ " join sub.translationEquivalents as transSub "
|
|
+ " join sub.relatedTerms as relSub "
|
|
+ " join sub.passages as passSub "
|
|
+ " join sub.registers as regSub "
|
|
join translation collections
|
|
+ " join ety.translations as etyTrans "
|
|
+ " join term.definitions.translations as defTrans "
|
|
+ " join term.modelSentences.translations as modTrans "
|
|
+ " join term.passages.translations as passTrans "
|
|
+ " join def.subdefinition.translations as subTrans "
|
|
+ " join def.modelSentences.translations as modDefTrans "
|
|
+ " join def.passages.translations as passDefTrans "
|
|
+ " join sub.modelSentences.translations as modSubTrans "
|
|
+ " join sub.passages.translations as passSubTrans "
|
|
/restrict by projectSubject in createdByProjSub
|
|
+ " where term.meta.createdByProjSub = :projSub"
|
|
+ " or pron.meta.createdByProjSub = :projSub"
|
|
+ " or ety.meta.createdByProjSub = :projSub"
|
|
+ " or sp.meta.createdByProjSub = :projSub"
|
|
+ " or func.meta.createdByProjSub = :projSub"
|
|
+ " or ency.meta.createdByProjSub = :projSub"
|
|
+ " or trans.meta.createdByProjSub = :projSub"
|
|
+ " or def.meta.createdByProjSub = :projSub"
|
|
+ " or glo.meta.createdByProjSub = :projSub"
|
|
+ " or key.meta.createdByProjSub = :projSub"
|
|
+ " or trans.meta.createdByProjSub = :projSub"
|
|
+ " or rel.meta.createdByProjSub = :projSub"
|
|
+ " or pass.meta.createdByProjSub = :projSub"
|
|
+ " or reg.meta.createdByProjSub = :projSub"
|
|
+ " or subDef.meta.createdByProjSub = :projSub"
|
|
+ " or gloDef.meta.createdByProjSub = :projSub"
|
|
+ " or keyDef.meta.createdByProjSub = :projSub"
|
|
+ " or modDef.meta.createdByProjSub = :projSub"
|
|
+ " or transDef.meta.createdByProjSub = :projSub"
|
|
+ " or relDef.meta.createdByProjSub = :projSub"
|
|
+ " or passDef.meta.createdByProjSub = :projSub"
|
|
+ " or regDef.meta.createdByProjSub = :projSub"
|
|
+ " or gloSub.meta.createdByProjSub = :projSub"
|
|
+ " or keySub.meta.createdByProjSub = :projSub"
|
|
+ " or modSub.meta.createdByProjSub = :projSub"
|
|
+ " or transSub.meta.createdByProjSub = :projSub"
|
|
+ " or relSub.meta.createdByProjSub = :projSub"
|
|
+ " or passSub.meta.createdByProjSub = :projSub"
|
|
+ " or regSub.meta.createdByProjSub = :projSub"
|
|
+ " or etyTrans.meta.createdByProjSub = :projSub"
|
|
+ " or defTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passTrans.meta.createdByProjSub = :projSub"
|
|
+ " or subTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modDefTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passDefTrans.meta.createdByProjSub = :projSub"
|
|
+ " or modSubTrans.meta.createdByProjSub = :projSub"
|
|
+ " or passSubTrans.meta.createdByProjSub = :projSub"
|
|
/restrict by projectSubject in modifiedByProjSub
|
|
+ " or term.meta.modifiedByProjSub = :projSub"
|
|
+ " or pron.meta.modifiedByProjSub = :projSub"
|
|
+ " or ety.meta.modifiedByProjSub = :projSub"
|
|
+ " or sp.meta.modifiedByProjSub = :projSub"
|
|
+ " or func.meta.modifiedByProjSub = :projSub"
|
|
+ " or ency.meta.modifiedByProjSub = :projSub"
|
|
+ " or trans.meta.modifiedByProjSub = :projSub"
|
|
+ " or def.meta.modifiedByProjSub = :projSub"
|
|
+ " or glo.meta.modifiedByProjSub = :projSub"
|
|
+ " or key.meta.modifiedByProjSub = :projSub"
|
|
+ " or trans.meta.modifiedByProjSub = :projSub"
|
|
+ " or rel.meta.modifiedByProjSub = :projSub"
|
|
+ " or pass.meta.modifiedByProjSub = :projSub"
|
|
+ " or reg.meta.modifiedByProjSub = :projSub"
|
|
+ " or subDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or gloDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or keyDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or modDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or transDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or relDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or passDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or regDef.meta.modifiedByProjSub = :projSub"
|
|
+ " or gloSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or keySub.meta.modifiedByProjSub = :projSub"
|
|
+ " or modSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or transSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or relSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or passSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or regSub.meta.modifiedByProjSub = :projSub"
|
|
+ " or etyTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or defTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or subTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modDefTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passDefTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or modSubTrans.meta.modifiedByProjSub = :projSub"
|
|
+ " or passSubTrans.meta.modifiedByProjSub = :projSub";
|
|
*/
|
|
|