/** * Initialize the parser object values. * * @param type Type of conversion or import * @param rtfDoc The <code>RtfDocument</code> * @param readerIn The input stream * @param doc The iText <code>Document</code> */ private void Init(int type, RtfDocument rtfDoc, Stream readerIn, Document doc, IElement elem) { Init_stats(); // initialize reader to a PushbackReader this.pbReader = Init_Reader(readerIn); this.conversionType = type; this.rtfDoc = rtfDoc; this.document = doc; this.elem = elem; this.currentState = new RtfParserState(); this.stackState = new Stack(); this.SetParserState(PARSER_STARTSTOP); this.importMgr = new RtfImportMgr(this.rtfDoc, this.document); // get destination Mgr this.destinationMgr = RtfDestinationMgr.GetInstance(this); // set the parser RtfDestinationMgr.SetParser(this); // DEBUG INFO for timing and memory usage of RtfCtrlWordMgr object // create multiple new RtfCtrlWordMgr objects to check timing and memory usage // System.Gc(); // long endTime = 0; // Date endDate = null; // long endFree = 0; // DecimalFormat df = new DecimalFormat("#,##0"); // Date startDate = new Date(); // long startTime = System.CurrentTimeMillis(); // long startFree = Runtime.GetRuntime().FreeMemory(); // System.out.Println("1:"); this.rtfKeywordMgr = new RtfCtrlWordMgr(this, this.pbReader);/////////DO NOT COMMENT OUT THIS LINE /////////// foreach (object listener in listeners) { if (listener is IRtfCtrlWordListener) { this.rtfKeywordMgr.AddRtfCtrlWordListener((IRtfCtrlWordListener)listener); } } // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); // // System.Gc(); // System.out.Println("2:"); // startDate = new Date(); // startTime = System.CurrentTimeMillis(); // startFree = Runtime.GetRuntime().FreeMemory(); // RtfCtrlWordMgr rtfKeywordMgr2 = new RtfCtrlWordMgr(this, this.pbReader); // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); // // System.Gc(); // System.out.Println("3:"); // startDate = new Date(); // startTime = System.CurrentTimeMillis(); // startFree = Runtime.GetRuntime().FreeMemory(); // RtfCtrlWordMgr rtfKeywordMgr3 = new RtfCtrlWordMgr(this, this.pbReader); // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); // // System.Gc(); // System.out.Println("4:"); // startDate = new Date(); // startTime = System.CurrentTimeMillis(); // startFree = Runtime.GetRuntime().FreeMemory(); // RtfCtrlWordMgr rtfKeywordMgr4 = new RtfCtrlWordMgr(this, this.pbReader); // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); // // System.Gc(); // System.out.Println("5:"); // startDate = new Date(); // startTime = System.CurrentTimeMillis(); // startFree = Runtime.GetRuntime().FreeMemory(); // RtfCtrlWordMgr rtfKeywordMgr5 = new RtfCtrlWordMgr(this, this.pbReader); // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); // System.Gc(); // System.out.Println("At ed:"); // startDate = new Date(); // startTime = System.CurrentTimeMillis(); // startFree = Runtime.GetRuntime().FreeMemory(); // //RtfCtrlWordMgr rtfKeywordMgr6 = new RtfCtrlWordMgr(this, this.pbReader); // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // System.out.Println("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // System.out.Println("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // System.out.Println(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // System.out.Println("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // System.out.Println("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // System.out.Println("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); }
// // TIMING DEBUG INFO // private long endTime = 0; // private Date endDate = null; // private long endFree = 0; // private DecimalFormat df = new DecimalFormat("#,##0"); // private Date startDate = new Date(); // private long startTime = System.CurrentTimeMillis(); // private long startFree = Runtime.GetRuntime().FreeMemory(); /** * Constructor * @param rtfParser The parser object this manager works with. * @param reader the PushbackReader from the tokeniser. */ public RtfCtrlWordMgr(RtfParser rtfParser, PushbackStream reader) { this.rtfParser = rtfParser; // set the parser this.reader = reader; // set the reader value ctrlWordMap = new RtfCtrlWordMap(rtfParser); // // TIMING DEBUG INFO // endFree = Runtime.GetRuntime().FreeMemory(); // endTime = System.CurrentTimeMillis(); // endDate = new Date(); // Console.Out.WriteLine("RtfCtrlWordMgr start date: " + startDate.ToLocaleString()); // Console.Out.WriteLine("RtfCtrlWordMgr end date : " + endDate.ToLocaleString()); // Console.Out.WriteLine(" Elapsed time : " + Long.ToString(endTime - startTime) + " milliseconds."); // Console.Out.WriteLine("Begin Constructor RtfCtrlWordMgr , free mem is " + df.Format(startFree / 1024) + "k"); // Console.Out.WriteLine("End Constructor RtfCtrlWordMgr , free mem is " + df.Format(endFree / 1024) + "k"); // Console.Out.WriteLine("RtfCtrlWordMgr used approximately " + df.Format((startFree - endFree) / 1024) + "k"); }
/** * Parses a keyword and it's parameter if one exists * @param reader * This is a pushback reader for file input. * @return * Returns an error code or errOK if no error. * @throws IOException * Catch any file read problem. */ private int ParseCtrlWord(PushbackStream reader) { int nextChar = 0; int result = errOK; if((nextChar = reader.ReadByte()) == -1) { return errEndOfFile; } this.byteCount++; StringBuilder parsedCtrlWord = new StringBuilder(); StringBuilder parsedParam= new StringBuilder(); RtfCtrlWordData ctrlWordParam = new RtfCtrlWordData(); if (!Char.IsLetterOrDigit((char)nextChar)) { parsedCtrlWord.Append((char)nextChar); ctrlWordParam.ctrlWord = parsedCtrlWord.ToString(); result = this.HandleCtrlWord(ctrlWordParam); lastCtrlWordParam = ctrlWordParam; return result; } // for ( ; Character.IsLetter(nextChar[0]); reader.Read(nextChar) ) { // parsedCtrlWord.Append(nextChar[0]); // } do { parsedCtrlWord.Append((char)nextChar); //TODO: catch EOF nextChar = reader.ReadByte(); this.byteCount++; } while (Char.IsLetter((char)nextChar)); ctrlWordParam.ctrlWord = parsedCtrlWord.ToString(); if ((char)nextChar == '-') { ctrlWordParam.isNeg = true; if((nextChar = reader.ReadByte()) == -1) { return errEndOfFile; } this.byteCount++; } if (Char.IsDigit((char)nextChar)) { ctrlWordParam.hasParam = true; // for ( ; Character.IsDigit(nextChar[0]); reader.Read(nextChar) ) { // parsedParam.Append(nextChar[0]); // } do { parsedParam.Append((char)nextChar); //TODO: catch EOF nextChar = reader.ReadByte(); this.byteCount++; } while (Char.IsDigit((char)nextChar)); ctrlWordParam.param = parsedParam.ToString(); } // push this character back into the stream if ((char)nextChar != ' ') { // || this.IsImport() ) { reader.Unread(nextChar); } if (debugParser) { // // debug: insrsid6254399 // if (ctrlWordParam.ctrlWord.Equals("proptype") && ctrlWordParam.param.Equals("30")) { // System.out.Print("Debug value found\n"); // } // if (ctrlWordParam.ctrlWord.Equals("panose") ) { // System.out.Print("Debug value found\n"); // } } result = this.HandleCtrlWord(ctrlWordParam); lastCtrlWordParam = ctrlWordParam; return result; }