/*
* 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: 1879 $ by $Author: matthew.campbell1980 $ on $Date:: 2010-03-09 #$
*/
/**
* $Id: ShowGlycan.java 1879 2010-03-08 15:34:54Z matthew.campbell1980 $
* Last changed $Author: matthew.campbell1980 $
* EUROCarbDB Project
*/
package org.eurocarbdb.action.hplc;
import java.lang.*;
import java.util.*;
import org.eurocarbdb.action.*;
import org.eurocarbdb.dataaccess.*;
import org.eurocarbdb.dataaccess.hplc.*;
import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager;
import org.eurocarbdb.dataaccess.EntityManager;
import org.apache.log4j.Logger;
import org.eurocarbdb.dataaccess.core.GlycanSequence;
//eurocarb party imports
import org.eurocarbdb.action.BrowseAction;
import org.eurocarbdb.dataaccess.indexes.Index;
import org.eurocarbdb.dataaccess.indexes.Indexable;
import org.eurocarbdb.dataaccess.indexes.IndexByMostEvidence;
import org.eurocarbdb.dataaccess.indexes.IndexByContributedDate;
import org.eurocarbdb.dataaccess.indexes.IndexByContributorName;
import org.eurocarbdb.dataaccess.core.Contributor;
import org.eurocarbdb.sugar.SequenceFormat;
import org.eurocarbdb.sugar.Sugar;
import org.eurocarbdb.sugar.Monosaccharide;
import org.eurocarbdb.sugar.SugarSequence;
// import org.eurocarbdb.sugar.Substituent;
import org.eurocarbdb.sugar.seq.*;
import org.eurocarbdb.dataaccess.core.*;
import org.eurocarbdb.sugar.SugarSequence;
import org.eurocarbdb.sugar.SequenceFormat;
/**
* @author matthew
* @rev $Rev: 1879 $
*/
public class ShowGlycan extends BrowseAction<Glycan> {
protected static final Logger logger = Logger.getLogger( ShowGlycan.class.getName() );
private Glycan glycan= null;
private int searchGlycanId = 0;
private String imageStyle;
private int reportId;
private double reportValue;
private List<RefLink> stats;
private List<RefLink> displayStats;
private List<RefLink> refs;
private List<RefLink> displayRefs;
private List<DigestSingle> displayDigestSingle;
private List<DigestSingle> digestSingleMulti;
private List<DigestSingle> displayDigestSingleMulti;
private List<MultistructuresGlycoct> displayMultipleCt;
private List<MultistructuresGlycoct> multiDigests;
private List<MultistructuresGlycoct> displayMultiDigests;
private List<Multipleglycoct> multiDigestsProduct;
private List<Multipleglycoct> displayMultiDigestsProduct;
public Glycan getGlycan() {
return glycan;
}
GlycanSequence gwseq = null;
public GlycanSequence getGlycanSequence(){
return gwseq;
}
GlycanSequence displaygwseq;
public GlycanSequence getDisplaygwseq() { return displaygwseq;}
@Override
public int getTotalResults()
{
if ( totalResults <= 0 )
{
totalResults = getEntityManager().countAll( Glycan.class );
logger.debug("calculated totalResults = " + totalResults );
}
return totalResults;
}
public int getGlycanId() { return this.searchGlycanId; }
public void setGlycanId( int search_glycan_id) {this.searchGlycanId = search_glycan_id; }
public String getImageStyle() { return this.imageStyle;}
public void setImageStyle( String pic_image_style) {this.imageStyle = pic_image_style;}
public List getDisplayStats(){return displayStats;}
public List<RefLink> getQuery() {
return refs;
}
public List getDisplayRefs()
{
return displayRefs;
}
public List getDisplayDigestSingle()
{
return displayDigestSingle;
}
public List getDigestSingleMulti()
{
return digestSingleMulti;
}
public List getMultiDigests()
{
return multiDigests;
}
public List getDisplayMultiDigests()
{
return displayMultiDigests;
}
public List getMultiDigestsProduct()
{
return multiDigestsProduct;
}
public List getDisplayMultiDigestsProduct()
{
return displayMultiDigestsProduct;
}
public List getDisplayMultipleCt()
{
return displayMultipleCt;
}
public final Class<Glycan> getIndexableType()
{
return Glycan.class;
}
public List<GlycanSequence> displaySuperStructures;
public List getDisplaySuperStructures(){
return displaySuperStructures;
}
public List<GlycanSequence> displayLinkage;
public List getDisplayLinkage(){
return displayLinkage;
}
public List<GlycanSequence> displayStereo;
public List getDisplayStereo(){
return displayStereo;
}
public List<GlycanSequence> displayEquivalents;
public List getDisplayEquivalents(){
return displayEquivalents;
}
public String execute() {
EntityManager em = getEntityManager();
Contributor currentContributor = Eurocarb.getCurrentContributor();
if( searchGlycanId == 0 ) {
this.addActionError( "Invalid");
return INPUT;
}
logger.info("show stats");
//get average and td values for glycanId
stats = Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.RefLink.STATS")
.setParameter("glycanId", searchGlycanId)
.list();
displayStats = stats;
glycan = Eurocarb.getEntityManager().lookup( Glycan.class, searchGlycanId );
int searchGlycanIdCore = glycan.getOgbitranslation();
GlycanSequence gwseq = Eurocarb.getEntityManager().lookup( GlycanSequence.class, searchGlycanIdCore );
//temp start
logger.debug("saving new glycan_sequence");
SugarSequence sseq = gwseq.getSugarSequence();
GlycanSequence glycanSequence = GlycanSequence.lookupOrCreateNew( sseq );
String sseqtest = glycanSequence.getSequenceIupac();
logger.info("here it is: " + sseqtest);
//temp end
displaygwseq = gwseq;
refs = Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.RefLink.PUBS")
.setParameter("glycan_id", searchGlycanId)
.list();
displayRefs = refs;
List<DigestSingle> digestSingle = (List<DigestSingle>)
Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DigestSingle.GLYCAN_ENTRY_DIGESTS")
.setParameter("glycan_id", searchGlycanId)
.setParameter("glycan_id", searchGlycanId)
.list();
displayDigestSingle = digestSingle;
List digestSingleMulti =Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.DigestSingle.GLYCAN_ENTRY_DIGESTS_MULTIPLE")
// .setParameter("glycan_id", searchGlycanId)
.setParameter("glycan_id", searchGlycanId)
.setParameter("glycan_id", searchGlycanId)
.list();
displayDigestSingleMulti = digestSingleMulti;
List<MultistructuresGlycoct> multipleCt = (List<MultistructuresGlycoct>) Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.MultistructuresGlycoct.SELECT_ALL_MULTICT")
.setParameter("glycan_id", searchGlycanId)
.list();
displayMultipleCt = multipleCt;
//List multiDigests = Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.Multipleglycoct.SELECT_ALL_MULTICT_DIGESTS")
List<MultistructuresGlycoct> multiDigests = (List<MultistructuresGlycoct>) Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.MultistructuresGlycoct.SELECT_ALL_MULTICT_DIGESTS")
.setParameter("glycan_id", searchGlycanId)
.list();
int metest = multiDigests.size();
logger.info("listsizetest" + metest);
if ( metest > 0) {
displayMultiDigests = multiDigests;
}
if (metest <= 0) {
//List multiDigestsProduct = Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.Multipleglycoct.SELECT_ALL_MULTICT_DIGESTS_PRODUCT")
List<MultistructuresGlycoct> multiDigestsProduct = (List<MultistructuresGlycoct>) Eurocarb.getEntityManager().getQuery("org.eurocarbdb.dataaccess.hplc.MultistructuresGlycoct.SELECT_ALL_MULTICT_DIGESTS_PRODUCT")
.setParameter("glycan_id", searchGlycanId)
.list();
displayMultiDigests = multiDigestsProduct;
}
return SUCCESS;
}
}