/*
* 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: 1147 $ by $Author: glycoslave $ on $Date:: 2009-06-04 #$
*/
package test.eurocarbdb.util;
import java.util.List;
import java.io.Writer;
import java.io.StringWriter;
import org.testng.Assert;
import org.testng.annotations.*;
import test.eurocarbdb.dataaccess.CoreApplicationTest;
import org.eurocarbdb.util.XmlSerialiser;
import org.eurocarbdb.dataaccess.Eurocarb;
import org.eurocarbdb.dataaccess.Contributed;
import org.eurocarbdb.dataaccess.EurocarbObject;
import org.eurocarbdb.dataaccess.core.Contributor;
import org.eurocarbdb.dataaccess.core.GlycanSequence;
import org.eurocarbdb.dataaccess.core.Evidence;
import org.eurocarbdb.dataaccess.core.Reference;
import org.eurocarbdb.dataaccess.core.JournalReference;
import org.eurocarbdb.dataaccess.core.ref.CarbbankReference;
import org.eurocarbdb.dataaccess.core.BiologicalContext;
import org.eurocarbdb.dataaccess.core.Taxonomy;
import org.eurocarbdb.dataaccess.core.TissueTaxonomy;
import org.eurocarbdb.dataaccess.core.Disease;
import org.eurocarbdb.dataaccess.core.Perturbation;
import org.eurocarbdb.dataaccess.ms.Acquisition;
import static java.lang.System.out;
import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager;
public class XmlSerialiserTest extends CoreApplicationTest
{
@BeforeMethod
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
void atStart() { super.setup(); }
@AfterMethod
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
void atEnd() { super.teardown(); }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~ TESTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/** Test for GlycanSequence XML #2 */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseGlycanSequence2() throws Exception
{
testSerialise( GlycanSequence.class, 55 );
}
/** Test for Contributor XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseContributor() throws Exception
{
testSerialise( Contributor.class );
}
/** Test for GlycanSequence XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseGlycanSequence() throws Exception
{
testSerialise( GlycanSequence.class );
}
/** Test for BiologicalContext XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseBiologicalContext() throws Exception
{
testSerialise( BiologicalContext.class );
}
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseTaxonomy() throws Exception
{
testSerialise( Taxonomy.class );
}
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseTissueTaxonomy() throws Exception
{
testSerialise( TissueTaxonomy.class );
}
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseDisease() throws Exception
{
testSerialise( Disease.class );
}
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialisePerturbation() throws Exception
{
testSerialise( Perturbation.class );
}
/** Test for Acquisition XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseAcquisition() throws Exception
{
testSerialise( Acquisition.class );
}
/** Test for Evidence XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseEvidence() throws Exception
{
testSerialise( Evidence.class );
}
/** Test for Reference XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseReference() throws Exception
{
testSerialise( Reference.class );
}
/** Test for JournalReference XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseJournalReference() throws Exception
{
testSerialise( JournalReference.class );
}
/** Test for CarbbankReference XML */
@Test
(
groups={"ecdb.xmlio"},
dependsOnGroups={"ecdb.db.populated"}
)
public void xmlSerialiseCarbbankReference() throws Exception
{
testSerialise( CarbbankReference.class );
}
/*~~~~~~~~~~~~~~~~~ helper methods ~~~~~~~~~~~~~~~~*/
protected <T extends EurocarbObject> void testSerialise( Class<T> c ) throws Exception
{
List<T> objects = Eurocarb.getRecentlyContributed( c, 5 );
for ( T object : objects )
{
XmlSerialiser xml_io = getXmlSerialiser();
xml_io.serialise( object );
reportXml( object, xml_io );
}
}
protected <T extends EurocarbObject> void testSerialise( Class<T> c, int id ) throws Exception
{
T object = getEntityManager().lookup( c, id );
XmlSerialiser xml_io = getXmlSerialiser();
xml_io.serialise( object );
reportXml( object, xml_io );
}
public static XmlSerialiser getXmlSerialiser()
{
XmlSerialiser xml_io = new XmlSerialiser();
Writer out = new java.io.StringWriter();
xml_io.setWriter( out );
return xml_io;
}
static int count = 0;
protected static void reportXml( Object x, XmlSerialiser xml_io )
{
count++;
out.println();
out.println(
"--------------------- xml "
+ count
+ " - "
+ x.getClass().getSimpleName()
+ " ---------------------"
);
out.println( xml_io.getWriter().toString() );
out.println(
"--------------------- end xml "
+ count
+ "---------------------"
);
out.println();
}
protected static <T> T getInstanceOf( Class<T> the_class, int the_id )
{
T object = getEntityManager().lookup( the_class, the_id );
assert object != null
: "Retrieved object "
+ the_class.getSimpleName()
+ "="
+ the_id
+ " was null";
return object;
}
}