View Javadoc

1   package uk.ac.ebi.intenz.tools.export;
2   
3   import java.io.IOException;
4   import java.io.OutputStream;
5   import java.io.OutputStreamWriter;
6   import java.util.Collection;
7   import java.util.Collections;
8   import java.util.Properties;
9   
10  import org.apache.log4j.Logger;
11  import org.apache.velocity.Template;
12  import org.apache.velocity.VelocityContext;
13  import org.apache.velocity.app.Velocity;
14  import org.apache.velocity.exception.ParseErrorException;
15  import org.apache.velocity.exception.ResourceNotFoundException;
16  import uk.ac.ebi.intenz.domain.constants.View;
17  import uk.ac.ebi.intenz.domain.enzyme.EnzymeEntry;
18  import uk.ac.ebi.xchars.SpecialCharacters;
19  import uk.ac.ebi.xchars.domain.EncodingType;
20  
21  public class KeggExporter implements IntenzExporter {
22  
23  	private static final Logger LOGGER = Logger.getLogger(KeggExporter.class);
24  
25  	public KeggExporter() throws Exception {
26  		Properties velocityProps = new Properties();
27  		velocityProps.load(KeggExporter.class.getClassLoader()
28  				.getResourceAsStream("velocity.properties"));
29          Velocity.init(velocityProps);
30  	}
31  	
32  	public void export(Collection<EnzymeEntry> enzymes, OutputStream os)
33  	throws IOException{
34          VelocityContext context = new VelocityContext();
35          context.put("nl", "\n");
36          context.put("enzymes", enzymes);
37          context.put("specialCharacters", SpecialCharacters.getInstance(null));
38          context.put("spEncoding", EncodingType.SWISSPROT_CODE);
39          context.put("intenzView", View.INTENZ);
40          
41          Template template = null;
42          try {
43  			template = Velocity.getTemplate("templates/keggEnzyme.vm");
44  		} catch (ResourceNotFoundException e) {
45  			LOGGER.error("Template not found", e);
46  		} catch (ParseErrorException e) {
47  			LOGGER.error("Error parsing the template", e);
48  		} catch (Exception e) {
49  			LOGGER.error("Error getting velocity template", e);
50  		}
51  		if (template == null) return;
52          OutputStreamWriter osw = null;
53          try {
54              osw = new OutputStreamWriter(os);
55              template.merge(context, osw);
56              osw.flush();
57          } catch (IOException ex) {
58              LOGGER.error("Unable to write keggEnzyme", ex);
59          } finally {
60              if (osw != null) osw.close();
61          }
62  	}
63  
64      public void export(EnzymeEntry enzyme, OutputStream os) throws IOException {
65          export(Collections.singleton(enzyme), os);
66      }
67  }