/*
* 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: 1995 $ by $Author: khaleefah $ on $Date:: 2010-10-27 #$
*/
/**
* $Id: ShowAcquisition.java 1995 2010-10-26 20:06:16Z khaleefah $
* Last changed $Author: khaleefah $
* EUROCarbDB Project
*/
package org.eurocarbdb.action.ms;
import org.eurocarbdb.action.*;
import org.eurocarbdb.dataaccess.*;
import org.eurocarbdb.dataaccess.ms.*;
import org.eurocarbdb.dataaccess.core.*;
import org.eurocarbdb.util.XmlSerialiser;
import java.io.*;
import java.util.Date;
import java.util.Set;
import org.apache.log4j.Logger;
import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager;
/**
* Detail action for a mass-spec {@link Acquisition}, given
* either a acquisitionId or evidenceId param (acquisitionId
* parameter takes precedence if evidenceId is also given).
*
* @author aceroni, mjh
* @version $Rev: 1995 $
*/
public class ShowAcquisition extends AbstractMsAction
{
protected static final Logger log = Logger.getLogger( ShowAcquisition.class.getName() );
private Acquisition acquisition = null;
private int evidence_id = -1;
private int acquisition_id = -1;
private Boolean output_xml = false;
private Set<Scan> scans = null;
private Date dateEntered = null;
private String contributorName = null;
public Acquisition getAcquisition()
{
return acquisition;
}
public void setAcquisition(Acquisition a)
{
acquisition = a;
}
public void setEvidenceId(int id)
{
this.evidence_id = id;
}
public int getEvidenceId()
{
return this.evidence_id;
}
public void setAcquisitionId(int id)
{
this.acquisition_id = id;
}
public int getAcquisitionId()
{
return this.acquisition_id;
}
public void setOutputXml(Boolean f) {
output_xml = f;
}
public InputStream getStream()
{
try {
StringWriter writer = new StringWriter();
// create XML
XmlSerialiser xs = new XmlSerialiser();
xs.setWriter(writer);
xs.serialise(acquisition,true);
// return stream
return new ByteArrayInputStream(writer.toString().getBytes());
}
catch( Exception e) {
return new ByteArrayInputStream(new byte[0]);
}
}
public String execute()
{
//Scan s = new Scan();
if( acquisition!=null ) {
// retrieve acquisition
acquisition = Eurocarb.getEntityManager().lookup( Acquisition.class, acquisition.getAcquisitionId() );
if ( acquisition == null )
{
this.addActionError( "No acquisition associated with id " + acquisition.getAcquisitionId() );
return ERROR;
}
if( output_xml )
return "success_xml";
setScans(acquisition.getScans());
return SUCCESS;
}
if( acquisition_id>0 ) {
acquisition = Acquisition.lookupById(acquisition_id);
if( acquisition==null ) {
this.addFieldError("acquisitionId", "Invalid acquisitionId: " + acquisition_id);
return ERROR;
}
if( output_xml )
return "success_xml";
setScans(acquisition.getScans());
return SUCCESS;
}
if( evidence_id>0 ) {
Evidence e = getEntityManager().lookup( Evidence.class, evidence_id );
if( e==null ) {
this.addFieldError("evidenceId", "Invalid evidenceId: " + evidence_id);
return ERROR;
}
if( ! (e instanceof Acquisition) ) {
this.addActionError( "Experimental technique is not MS" );
return ERROR;
}
acquisition = (Acquisition) e;
if( output_xml )
return "success_xml";
setScans(acquisition.getScans());
return SUCCESS;
}
this.addActionError( "Nothing to show" );
return ERROR;
}
public void setScans(Set<Scan> scans) {
this.scans = scans;
}
public Set<Scan> getScans() {
return scans;
}
public void setDateEntered(Date dateEntered) {
this.dateEntered = dateEntered;
}
public Date getDateEntered() {
return dateEntered;
}
public void setContributorName(String contributorName) {
this.contributorName = contributorName;
}
public String getContributorName() {
return contributorName;
}
} // end class