From 4de67483ef3c15d1fa5792d7deb0c88a2ea13270 Mon Sep 17 00:00:00 2001
From: Olivier Langella <olivier.langella@moulon.inra.fr>
Date: Fri, 1 Nov 2013 23:46:13 +0100
Subject: [PATCH] XPIP file writer moved in output package with a writer

---
 .../xtandempipeline/class_msms/XpipFile.java  |  23 +-
 .../sax_parse/save_project.java               | 215 ------------------
 2 files changed, 19 insertions(+), 219 deletions(-)
 delete mode 100644 src/fr/inra/pappso/xtandempipeline/sax_parse/save_project.java

diff --git a/src/fr/inra/pappso/xtandempipeline/class_msms/XpipFile.java b/src/fr/inra/pappso/xtandempipeline/class_msms/XpipFile.java
index d92dfdcaa..959249baa 100644
--- a/src/fr/inra/pappso/xtandempipeline/class_msms/XpipFile.java
+++ b/src/fr/inra/pappso/xtandempipeline/class_msms/XpipFile.java
@@ -23,8 +23,10 @@ package fr.inra.pappso.xtandempipeline.class_msms;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URL;
 import java.net.URLConnection;
 
@@ -32,9 +34,9 @@ import org.apache.log4j.Logger;
 
 import fr.inra.pappso.xtandempipeline.XtandemPipelineSession;
 import fr.inra.pappso.xtandempipeline.MsException.MSMSException;
+import fr.inra.pappso.xtandempipeline.output.XpipOutput;
 import fr.inra.pappso.xtandempipeline.sax_parse.load_project;
 import fr.inra.pappso.xtandempipeline.sax_parse.parse_file;
-import fr.inra.pappso.xtandempipeline.sax_parse.save_project;
 import fr.inra.pappso.xtandempipeline.thread.process;
 
 public class XpipFile {
@@ -88,8 +90,6 @@ public class XpipFile {
 
 	public void write(process save_result_and_filtering,
 			XtandemPipelineSession session) throws Exception {
-		save_project save = new save_project(session.getIdentificationList(),
-				session.getDataTypeBase(), save_result_and_filtering);
 		if (xpipFile == null) {
 			String message = "Unable to write XPIP data to an URL ("
 					+ urlOfXpipData.toString()
@@ -97,7 +97,22 @@ public class XpipFile {
 			logger.debug(message);
 			throw new MSMSException(message);
 		}
-		save.write_data_to(xpipFile);
+		XpipOutput xpipOutput = new XpipOutput();
+		OutputStream outputStream = new FileOutputStream(this.xpipFile);
+		xpipOutput.open(outputStream);
+
+		xpipOutput.write(session.getIdentificationList(),
+				session.getDataTypeBase(), save_result_and_filtering);
+
+		xpipOutput.close();
+		/*
+		 * save_project save = new save_project(session.getIdentificationList(),
+		 * session.getDataTypeBase(), save_result_and_filtering); if (xpipFile
+		 * == null) { String message = "Unable to write XPIP data to an URL (" +
+		 * urlOfXpipData.toString() + "). Try \"Save project as\" instead.";
+		 * logger.debug(message); throw new MSMSException(message); }
+		 * save.write_data_to(xpipFile);
+		 */
 		this.modified = false;
 	}
 
diff --git a/src/fr/inra/pappso/xtandempipeline/sax_parse/save_project.java b/src/fr/inra/pappso/xtandempipeline/sax_parse/save_project.java
deleted file mode 100644
index c65e96e2f..000000000
--- a/src/fr/inra/pappso/xtandempipeline/sax_parse/save_project.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package fr.inra.pappso.xtandempipeline.sax_parse;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-
-import javax.xml.stream.XMLOutputFactory;
-
-//import com.sun.xml.internal.txw2.output.IndentingXMLStreamWriter;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.log4j.Logger;
-
-import fr.inra.moulon.proticport.model.Controller;
-import fr.inra.pappso.xtandempipeline.XtandemPipelineMain;
-import fr.inra.pappso.xtandempipeline.XtandemPipelineSession;
-import fr.inra.pappso.xtandempipeline.class_msms.Identification;
-import fr.inra.pappso.xtandempipeline.class_msms.Match;
-import fr.inra.pappso.xtandempipeline.class_msms.Modifs;
-import fr.inra.pappso.xtandempipeline.class_msms.MsRun;
-import fr.inra.pappso.xtandempipeline.class_msms.MapDb.Peptide;
-import fr.inra.pappso.xtandempipeline.thread.DataType_Base;
-import fr.inra.pappso.xtandempipeline.thread.process;
-
-public class save_project {
-	private static final Logger logger = Logger.getLogger(save_project.class);
-
-	private ArrayList<Identification> idents;
-
-	private DataType_Base datatype;
-
-	private XMLStreamWriter writer;
-
-	final private String endline = System.getProperty("line.separator");
-
-	private process pro;
-
-	public save_project(ArrayList<Identification> identifications,
-			DataType_Base datatype, process p) {
-		this.idents = identifications;
-		this.datatype = datatype;
-		this.pro = p;
-	}
-
-	public void write_data_to(File save) throws Exception {
-		logger.info("Save project ...");
-
-		XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
-		// FileWriter output = new FileWriter(save);
-		OutputStreamWriter output = new OutputStreamWriter(
-				new FileOutputStream(save), "UTF8");
-		writer = outputFactory.createXMLStreamWriter(output);
-		// this.writer = outputFactory.createXMLStreamWriter(output);
-		writer.writeStartDocument("UTF-8", "1.0");
-		writer.writeCharacters(endline);
-		writer.writeStartElement("xtandem_pipeline");
-		writer.writeAttribute("version", XtandemPipelineMain.version);
-
-		// <DataSource>
-		// <PROTICport
-		// url="http://uln.moulon.inra.fr/~langella/proticdev/web_view/proticport/"
-		// user="langella" />
-		// </DataSource>
-		if (XtandemPipelineSession.getInstance().isPROTICportDataSource()) {
-			writer.writeStartElement("DataSource");
-			writer.writeEmptyElement("PROTICport");
-			Controller ppc = XtandemPipelineSession.getInstance()
-					.getPROTICportController();
-			writer.writeAttribute("url", ppc.getProticPortUrl().toString());
-			writer.writeAttribute("user", ppc.getUser().getLogin());
-			writer.writeEndElement();
-		}
-		writer.writeEmptyElement("information");
-		writer.writeAttribute("Data_Type", datatype.getType());
-		int count = 0;
-		for (Identification ident : idents)
-			count += ident.get_protein_liste().size();
-		writer.writeAttribute("match_number", "" + count);
-
-		writer.writeEmptyElement("filter_params");
-		writer.writeAttribute("pep_evalue", ""
-				+ datatype.getConf().get_peptide_evalue());
-		writer.writeAttribute("prot_evalue", ""
-				+ datatype.getConf().get_protein_evalue());
-		writer.writeAttribute("pep_number", ""
-				+ datatype.getConf().get_peptide_number());
-		writer.writeAttribute("filter_to_all", ""
-				+ datatype.getConf().get_protein_filter_to_complete());
-		writer.writeAttribute("database_filter", datatype.getConf()
-				.get_database_filter().getPath());
-		writer.writeCharacters(endline);
-
-		writer.writeStartElement("identifications");
-		writer.writeCharacters(endline);
-		for (Identification ident : idents)
-			this.write_result_to(ident);
-		writer.writeEndElement();
-		// on ferme le root
-		writer.writeEndElement();
-		writer.writeEndDocument();
-		writer.flush();
-		writer.close();
-		output.close();
-
-		logger.info("Save project finish");
-	}
-
-	private void write_result_to(Identification ident) throws Exception {
-		writer.writeStartElement("identification");
-		writer.writeCharacters(endline);
-
-		writer.writeStartElement("modifs_list_mass");
-		for (Modifs mod : ident.get_modifs_liste().get_modifs_order()) {
-			writer.writeEmptyElement("modifs_mass");
-			writer.writeAttribute("modvalue", "" + mod.get_modvalue());
-			writer.writeCharacters(endline);
-		}
-		writer.writeEndElement();
-
-		writer.writeStartElement("samples");
-		for (MsRun samp : ident.getMsRunSet()) {
-			writer.writeEmptyElement("sample");
-			writer.writeAttribute("value", samp.getSampleName());
-			writer.writeCharacters(endline);
-		}
-
-		writer.writeEndElement();
-		writer.writeStartElement("match_list");
-		for (Match m : ident.get_protein_liste().getMatchOrder())
-			this.write_match_to(m, ident);
-		writer.writeEndElement();
-		// on ferme l'ident
-		writer.writeEndElement();
-		// writer.flush();
-	}
-
-	private void write_match_to(Match m, Identification ident) throws Exception {
-		writer.writeStartElement("match");
-
-		writer.writeAttribute("validate", "" + m.isIsvalidate());
-
-		writer.writeAttribute("PAI", "" + m.getPAI());
-		writer.writeAttribute("emPAI", "" + m.getEmPAI());
-
-		writer.writeStartElement("protein");
-		writer.writeAttribute("peptide_number", ""
-				+ m.get_protein_match().get_peptides_numbers());
-		writer.writeAttribute("evalue", "" + m.get_protein_match().get_evalue());
-		writer.writeAttribute("URL", m.get_protein_match().getDatabase()
-				.getDatabasePath());
-		writer.writeAttribute("description", m.get_protein_match()
-				.get_description());
-		// sample evalue
-		for (MsRun sample : m.get_protein_match().get_hash_sample_evalue()
-				.keySet()) {
-			writer.writeEmptyElement("protein_evalue");
-			writer.writeAttribute("evalue", ""
-					+ m.get_protein_match().get_hash_sample_evalue()
-							.get(sample));
-			writer.writeAttribute("sample", sample.getSampleName());
-			// writer.writeCharacters(endline);
-		}
-
-		writer.writeStartElement("sequence");
-		writer.writeCharacters(m.get_protein_match().get_sequence());
-		writer.writeEndElement();
-		writer.writeEndElement();
-
-		writer.writeStartElement("peptide_list");
-		for (Peptide pep : m.get_all_peptides())
-			this.write_peptide_to(pep);
-		writer.writeEndElement();
-		// on ferme le match
-		writer.writeEndElement();
-		// on compte les match
-		pro.add_current_progress();
-	}
-
-	private void write_peptide_to(Peptide pep) throws Exception {
-		writer.writeStartElement("peptide");
-		writer.writeAttribute("sample", pep.get_sample());
-		pep.getIdentificationDataSource().writeXpipPeptideSourceAttribute(
-				writer);
-		writer.writeAttribute("scan", "" + pep.get_scan());
-		writer.writeAttribute("scan_in_xtandem", "" + pep.get_scan());
-		writer.writeAttribute("RT", "" + pep.get_RT_in_sec());
-		writer.writeAttribute("mhplus_obser", "" + pep.get_mhplus_obser());
-		writer.writeAttribute("mhplus_theo", "" + pep.get_mhplus_theo());
-		writer.writeAttribute("deltamass", "" + pep.get_deltamass());
-		writer.writeAttribute("sequence", pep.getSequence());
-		writer.writeAttribute("pre", pep.get_pre());
-		writer.writeAttribute("post", pep.get_post());
-		writer.writeAttribute("start", "" + pep.get_start());
-		writer.writeAttribute("stop", "" + pep.get_stop());
-		writer.writeAttribute("charge", "" + pep.get_charge());
-		writer.writeAttribute("evalue", "" + pep.get_evalue());
-		writer.writeAttribute("hypercorr", "" + pep.get_hypercorr());
-		writer.writeAttribute("validate", "" + pep.isValidate());
-		writer.writeCharacters(endline);
-		writer.writeStartElement("modifs");
-		for (Modifs mod : pep.get_Modifs()) {
-			writer.writeEmptyElement("modif");
-			writer.writeAttribute("aa", "" + mod.get_AA());
-			writer.writeAttribute("modvalue", "" + mod.get_modvalue());
-			writer.writeAttribute("posi", "" + mod.get_posi());
-			writer.writeAttribute("posi_in_prot", "" + mod.getPosi_in_prot());
-			writer.writeCharacters(endline);
-		}
-		writer.writeEndElement();
-		// on ferme le peptide
-		writer.writeEndElement();
-	}
-
-}
-- 
GitLab