001    /*
002     * Created on Apr 14, 2005
003     * HL7FileMsgCorrector.java
004     * 
005     */
006    package ca.uhn.hl7v2.app;
007    
008    import java.io.BufferedReader;
009    import java.io.BufferedWriter;
010    import java.io.FileWriter;
011    import java.io.IOException;
012    import java.io.InputStream;
013    import java.io.InputStreamReader;
014    
015    import org.slf4j.Logger;
016    import org.slf4j.LoggerFactory;
017    
018    
019    /**
020     * This is an application that will perform specific translations on the
021     * hl7 messages stored within a flat file.  It will output the new messages to 
022     * "./correctedMessageFile.txt"  
023     * 
024     * @author <a href="mailto:neal.acharya@uhn.on.ca">Neal Acharya</a>
025     * @version $Revision: 1.1 $ updated on $Date: 2007-02-19 02:24:37 $ by $Author: jamesagnew $
026     * @deprecated
027     */
028    public class HL7FileMsgCorrector {
029        
030        private static final Logger ourLog =  LoggerFactory.getLogger(HL7FileMsgCorrector.class);
031    
032        /**
033         * 
034         */
035        public HL7FileMsgCorrector() {
036            super();
037            // TODO Auto-generated constructor stub
038        }
039    
040    
041        public static void main(String[] args) {
042            
043            //NOTE, depending on the size of the flat file you may need to increase the stack
044            //and heap size of the JVM when running this class.
045            //If so then use the following VM args -Xmx512m -Xms512m -Xss2m
046            
047            String fileName = "./QueuedRoutStatOrders.dat";
048            InputStream inputStream = HL7FileMsgCorrector.class.getClassLoader().getResourceAsStream(fileName);
049                  
050            try {
051                BufferedReader reader = new BufferedReader( new InputStreamReader( inputStream  ) );  
052                BufferedWriter writer = new BufferedWriter(new FileWriter("./correctedMessageFile.txt"));
053                
054                String lineRead = null;
055                StringBuffer buf = new StringBuffer();
056                while ((lineRead = reader.readLine()) != null) {                
057                    buf.append(lineRead);
058                    buf.append("\r");
059                }
060                String fileString = buf.toString().trim();
061                
062                //Perform a translation
063                String newFileString = addPreMshCarriageReturns(fileString);
064                
065                //write the string to a file
066                writer.write(newFileString);            
067                writer.close();
068                ourLog.info("file conversion completed");
069            }
070            catch (IOException e) {
071                // TODO Auto-generated catch block
072                e.printStackTrace();
073            }       
074            
075        }
076    
077    
078        /**
079         * @param theFileString ..
080         * @return ...
081         * Adds two carriage returns before each MSH segment
082         * we expect the file to be used by the HL7ServerTestHelper         
083         */
084        private static String addPreMshCarriageReturns(String theFileString) {
085            theFileString = theFileString.replaceAll(".MSH\\|", "\rMSH|");
086            theFileString = theFileString.replaceAll("MSH\\|", "\rMSH|");
087            theFileString = theFileString.replaceAll("//", "");
088            return theFileString;
089        }
090    }