1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir package convwatch; 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir import java.io.File; 31*cdf0e10cSrcweir import java.io.FileWriter; 32*cdf0e10cSrcweir import java.io.RandomAccessFile; 33*cdf0e10cSrcweir import java.lang.Double; 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir 36*cdf0e10cSrcweir public class PerformanceContainer /* extends *//* implements */ { 37*cdf0e10cSrcweir private long m_nStartTime; 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir /* 40*cdf0e10cSrcweir simple helper functions to start/stop a timer, to know how long a process need in milliseconds 41*cdf0e10cSrcweir */ 42*cdf0e10cSrcweir public long getStartTime() 43*cdf0e10cSrcweir { 44*cdf0e10cSrcweir return System.currentTimeMillis(); 45*cdf0e10cSrcweir } 46*cdf0e10cSrcweir public void setStartTime(long _nStartTime) 47*cdf0e10cSrcweir { 48*cdf0e10cSrcweir m_nStartTime = _nStartTime; 49*cdf0e10cSrcweir } 50*cdf0e10cSrcweir 51*cdf0e10cSrcweir /* 52*cdf0e10cSrcweir return the time, which is done until last startTime() 53*cdf0e10cSrcweir */ 54*cdf0e10cSrcweir private long meanTime(long _nCurrentTimer) 55*cdf0e10cSrcweir { 56*cdf0e10cSrcweir if (_nCurrentTimer == 0) 57*cdf0e10cSrcweir { 58*cdf0e10cSrcweir GlobalLogWriter.get().println("Forgotten to initialise a start timer."); 59*cdf0e10cSrcweir return 0; 60*cdf0e10cSrcweir } 61*cdf0e10cSrcweir long nMeanTime = System.currentTimeMillis(); 62*cdf0e10cSrcweir return nMeanTime - _nCurrentTimer; 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir /* 66*cdf0e10cSrcweir public long stopTimer() 67*cdf0e10cSrcweir { 68*cdf0e10cSrcweir if (m_nStartTime == 0) 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir System.out.println("Forgotten to initialise start timer."); 71*cdf0e10cSrcweir return 0; 72*cdf0e10cSrcweir } 73*cdf0e10cSrcweir long nStopTime = System.currentTimeMillis(); 74*cdf0e10cSrcweir return nStopTime - m_nStartTime; 75*cdf0e10cSrcweir } 76*cdf0e10cSrcweir */ 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir final static int Load = 0; 79*cdf0e10cSrcweir final static int Store = 1; 80*cdf0e10cSrcweir final static int Print = 2; 81*cdf0e10cSrcweir final static int OfficeStart = 3; 82*cdf0e10cSrcweir final static int StoreAsPDF = 4; 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir private long m_nTime[]; 85*cdf0e10cSrcweir private String m_sMSOfficeVersion; 86*cdf0e10cSrcweir 87*cdf0e10cSrcweir public PerformanceContainer() 88*cdf0e10cSrcweir { 89*cdf0e10cSrcweir m_nTime = new long[5]; 90*cdf0e10cSrcweir // @todo: is this need? 91*cdf0e10cSrcweir for (int i=0;i<5;i++) 92*cdf0e10cSrcweir { 93*cdf0e10cSrcweir m_nTime[i] = 0; 94*cdf0e10cSrcweir } 95*cdf0e10cSrcweir } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir public void setTime(int _nIndex, long _nValue) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir m_nTime[_nIndex] = _nValue; 100*cdf0e10cSrcweir } 101*cdf0e10cSrcweir public long getTime(int _nIndex) 102*cdf0e10cSrcweir { 103*cdf0e10cSrcweir return m_nTime[_nIndex]; 104*cdf0e10cSrcweir } 105*cdf0e10cSrcweir 106*cdf0e10cSrcweir public void startTime(int _nIndex) 107*cdf0e10cSrcweir { 108*cdf0e10cSrcweir m_nTime[_nIndex] = getStartTime(); 109*cdf0e10cSrcweir } 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir public void stopTime(int _nIndex) 112*cdf0e10cSrcweir { 113*cdf0e10cSrcweir m_nTime[_nIndex] = meanTime(m_nTime[_nIndex]); 114*cdf0e10cSrcweir } 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir public String getMSOfficeVersion() 117*cdf0e10cSrcweir { 118*cdf0e10cSrcweir return m_sMSOfficeVersion; 119*cdf0e10cSrcweir } 120*cdf0e10cSrcweir public void print(FileWriter out) throws java.io.IOException 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir String ls = System.getProperty("line.separator"); 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir out.write("loadtime=" + String.valueOf(m_nTime[ Load ]) + ls); 125*cdf0e10cSrcweir out.write("storetime=" + String.valueOf(m_nTime[ Store ]) + ls); 126*cdf0e10cSrcweir out.write("printtime=" + String.valueOf(m_nTime[ Print ]) + ls); 127*cdf0e10cSrcweir out.write("officestarttime=" + String.valueOf(m_nTime[ OfficeStart ]) + ls); 128*cdf0e10cSrcweir out.write("storeaspdftime=" + String.valueOf(m_nTime[ StoreAsPDF ]) + ls); 129*cdf0e10cSrcweir } 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir public static double stringToDouble(String _sStr) 132*cdf0e10cSrcweir { 133*cdf0e10cSrcweir double nValue = 0; 134*cdf0e10cSrcweir try 135*cdf0e10cSrcweir { 136*cdf0e10cSrcweir nValue = Double.parseDouble( _sStr ); 137*cdf0e10cSrcweir } 138*cdf0e10cSrcweir catch (NumberFormatException e) 139*cdf0e10cSrcweir { 140*cdf0e10cSrcweir GlobalLogWriter.get().println("Can't convert string to double " + _sStr); 141*cdf0e10cSrcweir } 142*cdf0e10cSrcweir return nValue; 143*cdf0e10cSrcweir } 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir public static long secondsToMilliSeconds(double _nSeconds) 146*cdf0e10cSrcweir { 147*cdf0e10cSrcweir return (long)(_nSeconds * 1000.0); 148*cdf0e10cSrcweir } 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir /* 151*cdf0e10cSrcweir Helper function, which read some values from a given file 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir sample of wordinfofile 154*cdf0e10cSrcweir name=c:\doc-pool\wntmsci\samples\msoffice\word\LineSpacing.doc 155*cdf0e10cSrcweir WordVersion=11.0 156*cdf0e10cSrcweir WordStartTime=0.340490102767944 157*cdf0e10cSrcweir WordLoadTime=0.650935888290405 158*cdf0e10cSrcweir WordPrintTime=0.580835103988647 159*cdf0e10cSrcweir */ 160*cdf0e10cSrcweir public void readWordValuesFromFile(String sFilename) 161*cdf0e10cSrcweir { 162*cdf0e10cSrcweir File aFile = new File(sFilename); 163*cdf0e10cSrcweir if (! aFile.exists()) 164*cdf0e10cSrcweir { 165*cdf0e10cSrcweir GlobalLogWriter.get().println("couldn't find file " + sFilename); 166*cdf0e10cSrcweir return; 167*cdf0e10cSrcweir } 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir RandomAccessFile aRandomAccessFile = null; 170*cdf0e10cSrcweir try 171*cdf0e10cSrcweir { 172*cdf0e10cSrcweir aRandomAccessFile = new RandomAccessFile(aFile,"r"); 173*cdf0e10cSrcweir String sLine = ""; 174*cdf0e10cSrcweir while (sLine != null) 175*cdf0e10cSrcweir { 176*cdf0e10cSrcweir sLine = aRandomAccessFile.readLine(); 177*cdf0e10cSrcweir if ( (sLine != null) && 178*cdf0e10cSrcweir (! (sLine.length() < 2) ) && 179*cdf0e10cSrcweir (! sLine.startsWith("#"))) 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir if (sLine.startsWith("WordStartTime=")) 182*cdf0e10cSrcweir { 183*cdf0e10cSrcweir String sTime = sLine.substring(14); 184*cdf0e10cSrcweir m_nTime[OfficeStart] = secondsToMilliSeconds(stringToDouble(sTime)); 185*cdf0e10cSrcweir } 186*cdf0e10cSrcweir else if (sLine.startsWith("WordLoadTime=")) 187*cdf0e10cSrcweir { 188*cdf0e10cSrcweir String sTime = sLine.substring(13); 189*cdf0e10cSrcweir m_nTime[Load] = secondsToMilliSeconds(stringToDouble(sTime)); 190*cdf0e10cSrcweir } 191*cdf0e10cSrcweir else if (sLine.startsWith("WordPrintTime=")) 192*cdf0e10cSrcweir { 193*cdf0e10cSrcweir String sTime = sLine.substring(14); 194*cdf0e10cSrcweir m_nTime[Print] = secondsToMilliSeconds(stringToDouble(sTime)); 195*cdf0e10cSrcweir } 196*cdf0e10cSrcweir else if (sLine.startsWith("WordVersion=")) 197*cdf0e10cSrcweir { 198*cdf0e10cSrcweir String sMSOfficeVersion = sLine.substring(12); 199*cdf0e10cSrcweir m_sMSOfficeVersion = "Word:" + sMSOfficeVersion; 200*cdf0e10cSrcweir } 201*cdf0e10cSrcweir else if (sLine.startsWith("ExcelVersion=")) 202*cdf0e10cSrcweir { 203*cdf0e10cSrcweir String sMSOfficeVersion = sLine.substring(13); 204*cdf0e10cSrcweir m_sMSOfficeVersion = "Excel:" + sMSOfficeVersion; 205*cdf0e10cSrcweir } 206*cdf0e10cSrcweir else if (sLine.startsWith("PowerPointVersion=")) 207*cdf0e10cSrcweir { 208*cdf0e10cSrcweir String sMSOfficeVersion = sLine.substring(18); 209*cdf0e10cSrcweir m_sMSOfficeVersion = "PowerPoint:" + sMSOfficeVersion; 210*cdf0e10cSrcweir } 211*cdf0e10cSrcweir } 212*cdf0e10cSrcweir } 213*cdf0e10cSrcweir } 214*cdf0e10cSrcweir catch (java.io.FileNotFoundException fne) 215*cdf0e10cSrcweir { 216*cdf0e10cSrcweir GlobalLogWriter.get().println("couldn't open file " + sFilename); 217*cdf0e10cSrcweir GlobalLogWriter.get().println("Message: " + fne.getMessage()); 218*cdf0e10cSrcweir } 219*cdf0e10cSrcweir catch (java.io.IOException ie) 220*cdf0e10cSrcweir { 221*cdf0e10cSrcweir GlobalLogWriter.get().println("Exception while reading file " + sFilename); 222*cdf0e10cSrcweir GlobalLogWriter.get().println("Message: " + ie.getMessage()); 223*cdf0e10cSrcweir } 224*cdf0e10cSrcweir try 225*cdf0e10cSrcweir { 226*cdf0e10cSrcweir aRandomAccessFile.close(); 227*cdf0e10cSrcweir } 228*cdf0e10cSrcweir catch (java.io.IOException ie) 229*cdf0e10cSrcweir { 230*cdf0e10cSrcweir GlobalLogWriter.get().println("Couldn't close file " + sFilename); 231*cdf0e10cSrcweir GlobalLogWriter.get().println("Message: " + ie.getMessage()); 232*cdf0e10cSrcweir } 233*cdf0e10cSrcweir } 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir // public static void main(String[] args) { 236*cdf0e10cSrcweir // 237*cdf0e10cSrcweir ///* 238*cdf0e10cSrcweir // BorderRemover a = new BorderRemover(); 239*cdf0e10cSrcweir // try 240*cdf0e10cSrcweir // { 241*cdf0e10cSrcweir // a.createNewImageWithoutBorder(args[0], args[1]); 242*cdf0e10cSrcweir // } 243*cdf0e10cSrcweir // catch(java.io.IOException e) 244*cdf0e10cSrcweir // { 245*cdf0e10cSrcweir // System.out.println("Exception caught."); 246*cdf0e10cSrcweir // } 247*cdf0e10cSrcweir // */ 248*cdf0e10cSrcweir // } 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir } 251