1ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5ef39d40dSAndrew Rist * distributed with this work for additional information 6ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10ef39d40dSAndrew Rist * 11ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12ef39d40dSAndrew Rist * 13ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17ef39d40dSAndrew Rist * specific language governing permissions and limitations 18ef39d40dSAndrew Rist * under the License. 19ef39d40dSAndrew Rist * 20ef39d40dSAndrew Rist *************************************************************/ 21ef39d40dSAndrew Rist 22ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package graphical; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import java.io.File; 27cdf0e10cSrcweir import helper.OSHelper; 28cdf0e10cSrcweir 29cdf0e10cSrcweir public class BuildID 30cdf0e10cSrcweir { getOfficePath(String _sApp)31cdf0e10cSrcweir private static String getOfficePath(String _sApp) 32cdf0e10cSrcweir { 33cdf0e10cSrcweir String sOfficePath = ""; 34cdf0e10cSrcweir // TODO: StringHelper.removeQuote? 35cdf0e10cSrcweir if (_sApp.startsWith("\"")) 36cdf0e10cSrcweir { 37cdf0e10cSrcweir int nIdx = _sApp.indexOf("\"", 1); 38cdf0e10cSrcweir if (nIdx != -1) 39cdf0e10cSrcweir { 40cdf0e10cSrcweir // leave double qoute out. 41cdf0e10cSrcweir sOfficePath = _sApp.substring(1, nIdx); 42cdf0e10cSrcweir } 43cdf0e10cSrcweir } 44cdf0e10cSrcweir else 45cdf0e10cSrcweir { 46cdf0e10cSrcweir // check if _sApp ends with the office executable, if not 47cdf0e10cSrcweir if (! (_sApp.endsWith("soffice.exe") || _sApp.endsWith("soffice"))) 48cdf0e10cSrcweir { 49cdf0e10cSrcweir // check if a space exist, so we get all until space 50cdf0e10cSrcweir int nIdx = _sApp.indexOf(" ", 1); 51cdf0e10cSrcweir if (nIdx == -1) 52cdf0e10cSrcweir { 53cdf0e10cSrcweir sOfficePath = _sApp; 54cdf0e10cSrcweir } 55cdf0e10cSrcweir else 56cdf0e10cSrcweir { 57cdf0e10cSrcweir sOfficePath = _sApp.substring(0, nIdx); 58cdf0e10cSrcweir } 59cdf0e10cSrcweir } 60cdf0e10cSrcweir else 61cdf0e10cSrcweir { 62cdf0e10cSrcweir sOfficePath = _sApp; 63cdf0e10cSrcweir } 64cdf0e10cSrcweir } 65cdf0e10cSrcweir // GlobalLogWriter.get().println("Office path: " + sOfficePath); 66cdf0e10cSrcweir return sOfficePath; 67cdf0e10cSrcweir } 68cdf0e10cSrcweir getBuildID(String _sApp)69cdf0e10cSrcweir public static String getBuildID(String _sApp) 70cdf0e10cSrcweir { 71cdf0e10cSrcweir final String sOfficePath = getOfficePath(_sApp); 72cdf0e10cSrcweir final String sBuildID = getBuildID(sOfficePath, "buildid"); 73cdf0e10cSrcweir return sBuildID; 74cdf0e10cSrcweir } 75cdf0e10cSrcweir getBuildID(String _sOfficePath, String _sIniSection)76cdf0e10cSrcweir private static String getBuildID(String _sOfficePath, String _sIniSection) 77cdf0e10cSrcweir { 78cdf0e10cSrcweir File aSOfficeFile = new File(_sOfficePath); 79cdf0e10cSrcweir String sBuildID = ""; 80cdf0e10cSrcweir if (aSOfficeFile.exists()) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir String sOfficePath = FileHelper.getPath(_sOfficePath); 83cdf0e10cSrcweir // ok. System.out.println("directory: " + sOfficePath); 84cdf0e10cSrcweir sBuildID = getBuildIDFromBootstrap(sOfficePath, _sIniSection); 85cdf0e10cSrcweir if (sBuildID.length() == 0) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir sBuildID = getBuildIDFromVersion(sOfficePath, _sIniSection); 88cdf0e10cSrcweir } 89cdf0e10cSrcweir } 90cdf0e10cSrcweir else 91cdf0e10cSrcweir { 92cdf0e10cSrcweir GlobalLogWriter.println("soffice executable not found."); 93cdf0e10cSrcweir } 94cdf0e10cSrcweir 95cdf0e10cSrcweir // int dummy = 0; 96cdf0e10cSrcweir return sBuildID; 97cdf0e10cSrcweir } 98cdf0e10cSrcweir getBuildIDFromBootstrap(String _sOfficePath, String _sIniSection)99cdf0e10cSrcweir private static String getBuildIDFromBootstrap(String _sOfficePath, String _sIniSection) 100cdf0e10cSrcweir { 101cdf0e10cSrcweir String sBuildID = ""; 102cdf0e10cSrcweir String sOfficePath; 103cdf0e10cSrcweir if (OSHelper.isWindows()) 104cdf0e10cSrcweir { 105cdf0e10cSrcweir sOfficePath = FileHelper.appendPath(_sOfficePath, "bootstrap.ini"); 106cdf0e10cSrcweir } 107cdf0e10cSrcweir else 108cdf0e10cSrcweir { 109cdf0e10cSrcweir sOfficePath = FileHelper.appendPath(_sOfficePath, "bootstraprc"); 110cdf0e10cSrcweir } 111cdf0e10cSrcweir IniFile aIniFile = new IniFile(sOfficePath); 112cdf0e10cSrcweir if (aIniFile.is()) 113cdf0e10cSrcweir { 114cdf0e10cSrcweir sBuildID = aIniFile.getValue("Bootstrap", /*"buildid"*/ _sIniSection); 115cdf0e10cSrcweir } 116cdf0e10cSrcweir else 117cdf0e10cSrcweir { 118cdf0e10cSrcweir GlobalLogWriter.println("Property Build, can't open file '" + sOfficePath + "', please check."); 119cdf0e10cSrcweir } 120cdf0e10cSrcweir return sBuildID; 121cdf0e10cSrcweir } 122cdf0e10cSrcweir getBuildIDFromVersion(String _sOfficePath, String _sIniSection)123cdf0e10cSrcweir private static String getBuildIDFromVersion(String _sOfficePath, String _sIniSection) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir // String fs = System.getProperty("file.separator"); 126cdf0e10cSrcweir String sBuildID = ""; 127cdf0e10cSrcweir String sOfficePath; 128cdf0e10cSrcweir if (OSHelper.isWindows()) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir sOfficePath = FileHelper.appendPath(_sOfficePath, "version.ini"); 131cdf0e10cSrcweir } 132cdf0e10cSrcweir else 133cdf0e10cSrcweir { 134cdf0e10cSrcweir sOfficePath = FileHelper.appendPath(_sOfficePath, "versionrc"); 135cdf0e10cSrcweir } 136cdf0e10cSrcweir IniFile aIniFile = new IniFile(sOfficePath); 137cdf0e10cSrcweir if (aIniFile.is()) 138cdf0e10cSrcweir { 139cdf0e10cSrcweir sBuildID = aIniFile.getValue("Version", /*"buildid"*/ _sIniSection); 140cdf0e10cSrcweir } 141cdf0e10cSrcweir else 142cdf0e10cSrcweir { 143cdf0e10cSrcweir GlobalLogWriter.println("Property Build, can't open file '" + sOfficePath + "', please check."); 144cdf0e10cSrcweir } 145cdf0e10cSrcweir return sBuildID; 146cdf0e10cSrcweir } 147cdf0e10cSrcweir 148cdf0e10cSrcweir // public static void main(String[] args) 149cdf0e10cSrcweir // { 150cdf0e10cSrcweir // String sApp; 151cdf0e10cSrcweir // sApp = "/opt/staroffice8_m116/program/soffice -headless -accept=socket,host=localhost,port=8100;urp;"; 152cdf0e10cSrcweir // String sBuildID; 153cdf0e10cSrcweir // sBuildID = getBuildID(sApp); 154cdf0e10cSrcweir // System.out.println("BuildID is: " + sBuildID); 155cdf0e10cSrcweir // 156cdf0e10cSrcweir // Date aDate = new Date(); 157cdf0e10cSrcweir // long nStart = aDate.getTime(); 158cdf0e10cSrcweir // System.out.println("Time:" + nStart); 159cdf0e10cSrcweir // // LLA: Just some more tests for getBuildID 160cdf0e10cSrcweir // // sApp = "/opt/staroffice8_net/program/soffice"; 161cdf0e10cSrcweir // // sBuildID = getBuildID(sApp); 162cdf0e10cSrcweir // // System.out.println("BuildID is: " + sBuildID); 163cdf0e10cSrcweir // // 164cdf0e10cSrcweir // // sApp = "\"/opt/staroffice8_net/program/soffice\" test blah"; 165cdf0e10cSrcweir // // sBuildID = getBuildID(sApp); 166cdf0e10cSrcweir // // 167cdf0e10cSrcweir // // System.out.println("BuildID is: " + sBuildID); 168cdf0e10cSrcweir // System.exit(1); 169cdf0e10cSrcweir // } 170cdf0e10cSrcweir getMaster(String _sOfficePath)171cdf0e10cSrcweir public static String getMaster(String _sOfficePath) 172cdf0e10cSrcweir { 173cdf0e10cSrcweir final String sOfficePath = getOfficePath(_sOfficePath); 174cdf0e10cSrcweir final String sMaster = getBuildID(sOfficePath, "ProductSource"); 175cdf0e10cSrcweir return sMaster; 176cdf0e10cSrcweir } 177cdf0e10cSrcweir getMinor(String _sOfficePath)178cdf0e10cSrcweir public static String getMinor(String _sOfficePath) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir final String sOfficePath = getOfficePath(_sOfficePath); 181cdf0e10cSrcweir final String sMinor = "m" + getBuildID(sOfficePath, "ProductMinor"); 182cdf0e10cSrcweir return sMinor; 183cdf0e10cSrcweir } 184cdf0e10cSrcweir getCWSName(String _sOfficePath)185cdf0e10cSrcweir public static String getCWSName(String _sOfficePath) 186cdf0e10cSrcweir { 187cdf0e10cSrcweir final String sOfficePath = getOfficePath(_sOfficePath); 188cdf0e10cSrcweir final String sBuildID = getBuildID(sOfficePath, "buildid"); 189cdf0e10cSrcweir String sCWSName = "MWS"; 190cdf0e10cSrcweir int nIdx = sBuildID.indexOf("[CWS:"); 191cdf0e10cSrcweir if (nIdx > 0) 192cdf0e10cSrcweir { 193cdf0e10cSrcweir int nIdx2 = sBuildID.indexOf("]", nIdx); 194cdf0e10cSrcweir sCWSName = sBuildID.substring(nIdx + 5, nIdx2); 195cdf0e10cSrcweir } 196cdf0e10cSrcweir return sCWSName; 197cdf0e10cSrcweir } 198cdf0e10cSrcweir 199cdf0e10cSrcweir // public static void main(String[] args) 200cdf0e10cSrcweir // { 201cdf0e10cSrcweir // String sApp; 202cdf0e10cSrcweir // sApp = "D:/staroffice9_m63/Sun/StarOffice 9/program/soffice.exe"; 203cdf0e10cSrcweir // String sBuildID; 204cdf0e10cSrcweir // sBuildID = getBuildID(sApp); 205cdf0e10cSrcweir // System.out.println("BuildID is: " + sBuildID); 206cdf0e10cSrcweir // 207cdf0e10cSrcweir // String sMaster; 208cdf0e10cSrcweir // sMaster = getMaster(sApp); 209cdf0e10cSrcweir // System.out.println("Master is: " + sMaster); 210cdf0e10cSrcweir // 211cdf0e10cSrcweir // String sMinor; 212cdf0e10cSrcweir // sMinor = getMinor(sApp); 213cdf0e10cSrcweir // System.out.println("Minor is: " + sMinor); 214cdf0e10cSrcweir // 215cdf0e10cSrcweir // String sCWSName; 216cdf0e10cSrcweir // sCWSName = getCWSName(sApp); 217cdf0e10cSrcweir // System.out.println("CWSName is: " + sCWSName); 218cdf0e10cSrcweir // 219cdf0e10cSrcweir // System.exit(1); 220cdf0e10cSrcweir // } 221cdf0e10cSrcweir 222cdf0e10cSrcweir } 223