/* * EuroCarbDB, a framework for carbohydrate bioinformatics * * Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * A copy of this license accompanies this distribution in the file LICENSE.txt. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * Last commit: $Rev: 1549 $ by $Author: glycoslave $ on $Date:: 2009-07-19 #$ */ package org.eurocarbdb.action.hplc; import java.io.*; import java.util.*; import java.lang.*; import org.apache.log4j.Logger; import org.apache.commons.io.FileUtils; import org.eurocarbdb.action.*; import org.eurocarbdb.dataaccess.*; import org.eurocarbdb.dataaccess.hplc.*; import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager; import static org.eurocarbdb.dataaccess.Eurocarb.*; import org.eurocarbdb.dataaccess.EntityManager; import org.hibernate.*; import org.hibernate.cfg.*; import com.opensymphony.xwork.Action; import com.opensymphony.xwork.Preparable; public class refine extends EurocarbAction { private DigestProfile digestprofile; private HplcPeaksAnnotated annotated; private HplcPeaksAnnotated refineannotation; private HplcPeaksAnnotated preliminaryRefine; private HplcPeaksAnnotated tempdisappear; private Autogu productRefine; //private Disappeared disappear; private Disappeared disappearLocation; private Disappeared disappearLocationFirst; private Disappeared disappeartest; private DisRefine disappearRef; private Profile parent = null; private Autogu tempgulist; private Autogu tempgurefine; private DigestSingle tempds; private List<Autogu> gulist; private List<HplcPeaksAnnotated> disappear; private int digest_id; private int profile_id; private int digest_idtmp; private int refined_id = 1; private int digest_id_test = 1000001; private String enzyme; private String required = "required"; private int testnew = 1; private int digestloopid = 0; protected static final Logger logger = Logger.getLogger ( refine.class.getName()); private int sqltestid = 0; public String execute() throws Exception { logger.info("check the profile id" + profile_id); //check that profile id exists in database //remember evidenceId used in DigestProfile Profile parent = Profile.lookupById(profile_id); logger.info("check parent" + parent); List enzymelist = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DigestProfile.GET_ENZYMES") .setParameter("parent", parent) .list(); //get all enzymes used for this parent //number of digests ran int sizeOfDigest = enzymelist.size(); logger.info("number of digests" + enzymelist.size() + "confirm variable" + sizeOfDigest); Iterator iter = enzymelist.iterator(); //identify those undigested assigned glycan structures which disappeared after first digest List goneFirst = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.HplcPeaksAnnotated.GONE_AT_THE_FIRST") .setParameter("parent", profile_id) .list(); //needs to be replaced String firstEnzyme = "ABS"; //store and assign glycan strcutures lost after first digestion Iterator iterAtFirst = goneFirst.iterator(); while (iterAtFirst.hasNext()) { HplcPeaksAnnotated tempFirst = (HplcPeaksAnnotated) iterAtFirst.next(); disappearLocationFirst = new Disappeared(); disappearLocationFirst.setProfileId(tempFirst.getProfileId()); disappearLocationFirst.setDigestId(digestloopid); disappearLocationFirst.setGu(tempFirst.getGu()); disappearLocationFirst.setDbGu(tempFirst.getDbGu()); disappearLocationFirst.setNameAbbreviation(tempFirst.getNameAbbreviation()); disappearLocationFirst.setGlycanId(tempFirst.getGlycanId()); //String theenzyme = (String) en; //disappearLocation.setEnzyme(theenzyme); disappearLocationFirst.setEnzyme(firstEnzyme); getEntityManager().store(disappearLocationFirst); } //for each enzyme uploaded for parent profile assignment for (Object en : enzymelist) { ++digestloopid; //some development info logger.info("value of digestloopid is:" + digestloopid + "and the enzyme is:" + en); //for each glycan assigned for digest =0 //lets find where the glycan is last reported List disappearaa = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.HplcPeaksAnnotated.wheretwo") .setParameter("parent", profile_id) .setParameter("digest", digestloopid) .list(); //Retrieve the corresponding enzyme //where glycan was last assigned to x digestion List disappearEnz = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DigestProfile.GET_ENZYME_DISAPPEAR") .setParameter("parent", parent) .setParameter("digest", digestloopid) .list(); StringBuffer strBuffer = new StringBuffer(); //to get the enzyme use //--digestloopid; if ( digestloopid < sizeOfDigest) { strBuffer.append(String.valueOf(enzymelist.get(digestloopid))); logger.info("magic of '" + strBuffer.toString() + "'"); //String std; String lastReportedEnz = strBuffer.toString(); //std = "last"; Iterator itera = disappearaa.iterator(); while (itera.hasNext()) { logger.info("this trouble loop with enzyme" + en + "the digestid is:" + digestloopid); // Disappeared tempdisappear = (Disappeared) itera.next(); HplcPeaksAnnotated temp = (HplcPeaksAnnotated) itera.next(); // DigestProfile tempDigestProfile = (DigestProfile) itera.next(); disappearLocation = new Disappeared(); // refineannotation = new HplcPeaksAnnotated(); //refineannotation.setProfileId(temp.getProfileId()); //disappearLocation.setProfileId(temp.get(testnew)); disappearLocation.setProfileId(temp.getProfileId()); disappearLocation.setDigestId(digestloopid); disappearLocation.setGu(temp.getGu()); disappearLocation.setDbGu(temp.getDbGu()); disappearLocation.setNameAbbreviation(temp.getNameAbbreviation()); disappearLocation.setGlycanId(temp.getGlycanId()); //String theenzyme = (String) en; //disappearLocation.setEnzyme(theenzyme); disappearLocation.setEnzyme(lastReportedEnz); getEntityManager().store(disappearLocation); } } else{ String lastReportedEnz = "last"; logger.info("magic of '" + lastReportedEnz + "'"); Iterator iterlast = disappearaa.iterator(); while (iterlast.hasNext()) { logger.info("this trouble loop with enzyme" + en + "the digestid is:" + digestloopid); // Disappeared tempdisappear = (Disappeared) itera.next(); HplcPeaksAnnotated temp = (HplcPeaksAnnotated) iterlast.next(); // DigestProfile tempDigestProfile = (DigestProfile) itera.next(); disappearLocation = new Disappeared(); // refineannotation = new HplcPeaksAnnotated(); //refineannotation.setProfileId(temp.getProfileId()); //disappearLocation.setProfileId(temp.get(testnew)); disappearLocation.setProfileId(temp.getProfileId()); disappearLocation.setDigestId(digestloopid); disappearLocation.setGu(temp.getGu()); disappearLocation.setDbGu(temp.getDbGu()); disappearLocation.setNameAbbreviation(temp.getNameAbbreviation()); disappearLocation.setGlycanId(temp.getGlycanId()); //String theenzyme = (String) en; //disappearLocation.setEnzyme(theenzyme); disappearLocation.setEnzyme(lastReportedEnz); getEntityManager().store(disappearLocation); } } //++digestloopid; //change reflects above mode logger.info("and the name is" + en); } //new code here //max selection /* String sql = "select max(digestId), glycanId, profileId from Disappeared where profileId = " + profile_id + "group by glycanId, profileId"; Query query = session.createQuery(sql); List sqlref = query.list(); Iterator sqliter = sqlref.iterator(); */ List<Disappeared> maxDigestList = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.Disappeared.MAX_DIGEST") .setParameter("parent", profile_id) .list(); Iterator maxDigestIter = maxDigestList.iterator(); while (maxDigestIter.hasNext()) { DisRefine disrefine = new DisRefine(); Object [] maxDigestUseage = (Object []) maxDigestIter.next(); Integer max = (Integer) maxDigestUseage[0]; Integer queriedGlycanId = (Integer) maxDigestUseage[1]; Integer queriedProfileId = (Integer) maxDigestUseage[2]; logger.info("max int:" + max); logger.info("theglycanid:" + queriedGlycanId); logger.info("theprofileid:" + queriedProfileId); //disrefine.setDisRefineId(theprofileId); disrefine.setProfileId(queriedProfileId); disrefine.setDigestId(max); disrefine.setGlycanId(queriedGlycanId); disrefine.setEnzyme(required); getEntityManager().store(disrefine); logger.info("problem after store call"); } List refineNoEnz= getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DisRefine.DIS_REFINE_GLYCANS") .setParameter("parent", profile_id) .list(); int sizeFind = refineNoEnz.size(); logger.info("the size of the refineNoEnz:" + sizeFind); //this is problem area but why is the question for (Object enzymeReported : refineNoEnz) { logger.info("check the report enz:" + enzymeReported); //List refineEnz = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.Disappeared.FIND_ENZYME") List refineEnz = getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DisRefine.FIND_ENZYME_DISAPPEARED") .setParameter("parent", profile_id) .setParameter("glycan", enzymeReported) .setMaxResults(1) .list(); //List refineEnz = refineEnzobject.list(); //List ttttt = refineEnzobject.uniqueResult(); Iterator refineWithEnz = refineEnz.iterator(); while (refineWithEnz.hasNext()) { DisRefine disRefineEnz = new DisRefine(); Object [] disRefinewithEnz = (Object []) refineWithEnz.next(); Integer profileIdEnz = (Integer) disRefinewithEnz[0]; Integer digestIdEnz = (Integer) disRefinewithEnz[1]; Integer glycanIdEnz = (Integer) disRefinewithEnz[2]; String maxenz = (String) disRefinewithEnz[3]; disRefineEnz.setProfileId(profileIdEnz); disRefineEnz.setDigestId(digestIdEnz); disRefineEnz.setGlycanId(glycanIdEnz); disRefineEnz.setEnzyme(maxenz); getEntityManager().store(disRefineEnz); } } //previous section tells me where glycan ids occur in digests //we then need to find last known occurence. return INPUT; } //getter and setters public Profile getProfile() { return parent; } public void setProfile (Profile parent) { this.parent = parent; } public void setProfileId(int id) { this.profile_id = id; } public int getProfileId() { return this.profile_id; } public void setDigestId(int id) { this.digest_id = id; } public int getDigestId() { return this.digest_id; } public void setRefined(int id) { this.refined_id = id; } public int getRefined() { return this.refined_id; } }