blob: 1cedaeea126609be7419fb0ea04cb87aee920fb8 [file] [log] [blame]
/*
*
* 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 org.apache.qpid.gentools;
import org.w3c.dom.Attr;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Utils
{
public final static String FILE_SEPARATOR = System.getProperty("file.separator");
public final static String LINE_SEPARATOR = System.getProperty("line.separator");
public final static String ATTRIBUTE_NAME = "name";
public final static String ATTRIBUTE_MAJOR = "major";
public final static String ATTRIBUTE_MINOR = "minor";
public final static String ATTRIBUTE_INDEX = "index";
public final static String ATTRIBUTE_LABEL = "label";
public final static String ATTRIBUTE_SYNCHRONOUS = "synchronous";
public final static String ATTRIBUTE_CONTENT = "content";
public final static String ATTRIBUTE_HANDLER = "handler";
public final static String ATTRIBUTE_DOMAIN = "domain";
public final static String ATTRIBUTE_VALUE = "value";
public final static String ATTRIBUTE_TYPE = "type"; // For compatibility with AMQP 8.0
public final static String ELEMENT_AMQP = "amqp";
public final static String ELEMENT_CHASSIS = "chassis";
public final static String ELEMENT_CLASS = "class";
public final static String ELEMENT_CODEGEN = "codegen";
public final static String ELEMENT_CONSTANT = "constant";
public final static String ELEMENT_DOMAIN = "domain";
public final static String ELEMENT_METHOD = "method";
public final static String ELEMENT_FIELD = "field";
public final static String ELEMENT_VERSION = "version";
// Attribute functions
public static String getNamedAttribute(Node n, String attrName) throws AmqpParseException
{
NamedNodeMap nnm = n.getAttributes();
if (nnm == null)
{
throw new AmqpParseException("Node \"" + n.getNodeName() + "\" has no attributes.");
}
Attr a = (Attr) nnm.getNamedItem(attrName);
if (a == null)
{
throw new AmqpParseException("Node \"" + n.getNodeName() + "\" has no attribute \"" + attrName + "\".");
}
return a.getNodeValue();
}
public static int getNamedIntegerAttribute(Node n, String attrName) throws AmqpParseException
{
return Integer.parseInt(getNamedAttribute(n, attrName));
}
// Element functions
public static Node findChild(Node n, String eltName) throws AmqpParseException
{
NodeList nl = n.getChildNodes();
for (int i = 0; i < nl.getLength(); i++)
{
Node cn = nl.item(i);
if (cn.getNodeName().compareTo(eltName) == 0)
{
return cn;
}
}
throw new AmqpParseException("Node \"" + n.getNodeName() +
"\" does not contain child element \"" + eltName + "\".");
}
// String functions
public static String firstUpper(String str)
{
if (!Character.isLetter(str.charAt(0)) || !Character.isLowerCase(str.charAt(0)))
{
return str;
}
StringBuffer sb = new StringBuffer(str);
sb.setCharAt(0, Character.toUpperCase(str.charAt(0)));
return sb.toString();
}
public static String firstLower(String str)
{
if (!Character.isUpperCase(str.charAt(0)))
{
return str;
}
StringBuffer sb = new StringBuffer(str);
sb.setCharAt(0, Character.toLowerCase(str.charAt(0)));
return sb.toString();
}
public static String createSpaces(int cnt)
{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < cnt; i++)
{
sb.append(' ');
}
return sb.toString();
}
public static boolean containsOnlyDigits(String str)
{
boolean foundNonDigit = false;
for (int i = 0; i < str.length() && !foundNonDigit; i++)
{
if (!Character.isDigit(str.charAt(i)))
{
foundNonDigit = true;
}
}
return !foundNonDigit;
}
public static boolean containsOnlyDigitsAndDecimal(String str)
{
boolean foundNonDigit = false;
int decimalCntr = 0;
for (int i = 0; i < str.length() && !foundNonDigit && decimalCntr < 2; i++)
{
char ch = str.charAt(i);
if (!(Character.isDigit(ch) || ch == '.'))
{
foundNonDigit = true;
}
else if (ch == '.')
{
decimalCntr++;
}
}
return !foundNonDigit && decimalCntr < 2;
}
}