/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ package com.sun.star.filter.config.tools.utils; //_______________________________________________ // imports import java.lang.*; import java.util.*; import java.io.*; //_______________________________________________ // definition /** can be used to analyze command line parameters * and merge it together with might existing config * files. That provides the possibility to overwrite * config values via command line parameter. * * */ public class ConfigHelper extends java.util.Properties { //___________________________________________ // member /** indicates an empty command line. */ private boolean m_bEmpty = true; //___________________________________________ // ctor //------------------------------------------- /** initialize a new helper with the list of * command line parameters and bind this new instance * to a property file on disk. * * @param sPropFile * name of the property file. * If its set to null or an empty value * it will be ignored. * * @param lCommandLineArgs * the list of original command line arguments. * * @throws [Exception] * in case the command line contains an unknown * schema for specifiying parameters or the * specified property file does not exists * or seem to be corrupted. */ public ConfigHelper(java.lang.String sPropFile , java.lang.String[] lCommandLineArgs) throws java.lang.Exception { // first load prop file, so its values can be overwritten // by command line args later // Do it only, if a valid file name was given. // But in case this file name is wrong, throw an exception. // So the outside code can react! if ( (sPropFile != null) && (sPropFile.length() > 0 ) ) { java.lang.ClassLoader aLoader = getClass().getClassLoader(); java.io.InputStream aStream = aLoader.getResourceAsStream(sPropFile); if (aStream == null) aStream = new java.io.FileInputStream(sPropFile); load(aStream); } int count = 0; if (lCommandLineArgs != null) count = lCommandLineArgs.length; m_bEmpty = (count < 1); for (int arg=0; arg" and converted to ! * * @return The string list value of the requested property. * * @throw [NoSuchElementException] * if the requested property does not exists. */ public synchronized java.util.Vector getStringList(java.lang.String sProp , java.lang.String sDelimiter, boolean bTrim , boolean bDecode ) throws java.util.NoSuchElementException { java.lang.String sValue = getProperty(sProp); if (sValue == null) throw new java.util.NoSuchElementException("The requested config value \""+sProp+"\" does not exists!"); java.util.Vector lValue = new java.util.Vector(); try { java.util.StringTokenizer lTokens = new java.util.StringTokenizer(sValue, sDelimiter); while(lTokens.hasMoreTokens()) { java.lang.String sToken = lTokens.nextToken(); // remove trailing/leading whitespaces if (bTrim) sToken = sToken.trim(); // remove "" if ( (bDecode ) && (sToken.indexOf("\"") == 0 ) && (sToken.lastIndexOf("\"") == sToken.length()-1) ) { sToken = sToken.substring(1, sToken.length()-1); } lValue.add(sToken); } } catch(java.lang.Throwable ex) { lValue.clear(); } return lValue; } }