package gr.ntua.ivml.athena.db; import gr.ntua.ivml.athena.persistent.DataUpload; import gr.ntua.ivml.athena.persistent.Transformation; import gr.ntua.ivml.athena.persistent.XmlObject; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Session; import org.hibernate.Transaction; public class TransformationDAO extends DAO<Transformation, Long> { public static final Logger log = Logger.getLogger(TransformationDAO.class); static { Session ss = DB.getSession(); ss.beginTransaction(); try { List<Transformation> l = ss.createQuery( "from Transformation where statusCode != :ok and statusCode != :err") .setInteger("ok", Transformation.OK) .setInteger("err", Transformation.ERROR) .list(); int count = 0; for( Transformation t: l ) { t.setStatusCode(t.ERROR); t.setStatusMessage("Failed due to server restart!"); count+=1; DB.commit(); } log.info( "Failed " + count + " Transformations due to restart."); } catch( Exception e ) { log.error( "Exception in Transformation failing", e ); } finally { DB.closeSession(); } } public List<Transformation> findByUpload( DataUpload du ) { return getSession().createQuery("from Transformation where dataUpload=:du") .setEntity("du", du) .list(); } public Transformation findByXmlObject(XmlObject xo) { return (Transformation) getSession().createQuery( "from Transformation where parsedOutput = :xo ") .setEntity("xo", xo) .uniqueResult(); } }