/** * ***************************************************************************** * This file is part of OpenNMS(R). * * Copyright (C) 2007-2011 The OpenNMS Group, Inc. OpenNMS(R) is Copyright (C) * 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * OpenNMS(R) is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * OpenNMS(R). If not, see: http://www.gnu.org/licenses/ * * For more information contact: OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ http://www.opennms.com/ * ***************************************************************************** */ package org.opennms.tools.jmxconfiggenerator.helper; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author Markus Neumann <markus@opennms.com> */ public class NameTools { private final static Logger logger = LoggerFactory.getLogger(NameTools.class); private static Map<String, String> dictionary = new HashMap<String, String>(); public static String trimByCamelCase(String name, Integer maxLength) { String result = ""; String[] nameParts = StringUtils.splitByCharacterTypeCamelCase(name); Integer charsOver = name.length() - maxLength; for (int i = 0; i < charsOver; i++) { Integer largest = 0; Integer index = 0; for (int j = 0; j < nameParts.length; j++) { if (nameParts[j].length() > largest) { largest = nameParts[j].length(); index = j; } } nameParts[index] = StringUtils.chop(nameParts[index]); } for (String namePart : nameParts) { result = result + namePart; } return result; } public static String trimByDictionary(String name) { String result = ""; String[] nameParts = StringUtils.splitByCharacterTypeCamelCase(name); for (int i = 0; i < nameParts.length; i++) { String namePart = nameParts[i]; for (String word : dictionary.keySet()) { if (namePart.equalsIgnoreCase(word)) { logger.debug("dictionary Hit at '{}' result '{}'", name, name.replaceAll(word, dictionary.get(word))); nameParts[i] = dictionary.get(word); } } } for (String namePart : nameParts) { result = result + namePart; } return result; } public static void loadExtermalDictionary(String dictionaryFile) { Properties properties = new Properties(); try { BufferedInputStream stream = new BufferedInputStream(new FileInputStream(dictionaryFile)); properties.load(stream); stream.close(); } catch (FileNotFoundException ex) { logger.error("'{}'", ex.getMessage()); } catch (IOException ex) { logger.error("'{}'", ex.getMessage()); } logger.info("Loaded '{}' external dictionary entiers from '{}'", properties.size(), dictionaryFile); for (Object key : properties.keySet()) { dictionary.put(key.toString(), properties.get(key).toString()); } logger.info("Dictionary entries loaded: '{}'", dictionary.size()); } public static void loadInternalDictionary() { Properties properties = new Properties(); try { BufferedInputStream stream = new BufferedInputStream(NameTools.class.getClassLoader().getResourceAsStream("dictionary.properties")); properties.load(stream); stream.close(); } catch (IOException ex) { logger.error("Load dictionary entires from internal properties files error: '{}'", ex.getMessage()); } logger.info("Loaded '{}' internal dictionary entiers", properties.size()); for (Object key : properties.keySet()) { dictionary.put(key.toString(), properties.get(key).toString()); } logger.info("Dictionary entries loaded: '{}'", dictionary.size()); } }