/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.schema; /** * Provides utility methods for this package. * * @author Middleware Services */ public final class SchemaUtils { /** Default constructor. */ private SchemaUtils() {} /** * Parses the supplied descriptors string and returns it's contents as a string array. If the string contains a single * quote it is assumed to be a multivalue descriptor of the form "'value1' 'value2' 'value3'". Otherwise it is treated * as a single value descriptor. * * @param descrs string to parse * * @return array of descriptors */ public static String[] parseDescriptors(final String descrs) { if (descrs.contains("'")) { final String[] quotedDescr = descrs.split(" "); final String[] s = new String[quotedDescr.length]; for (int i = 0; i < s.length; i++) { s[i] = quotedDescr[i].substring(1, quotedDescr[i].length() - 1).trim(); } return s; } else { return new String[] {descrs}; } } /** * Parses the supplied OID string and returns it's contents as a string array. If the string contains a dollar sign it * is assumed to be a multivalue OID of the form "value1 $ value2 $ value3". Otherwise it is treated as a single value * OID. * * @param oids string to parse * * @return array of oids */ public static String[] parseOIDs(final String oids) { if (oids.contains("$")) { final String[] s = oids.split("\\$"); for (int i = 0; i < s.length; i++) { s[i] = s[i].trim(); } return s; } else { return new String[] {oids}; } } /** * Parses the supplied number string and returns it's contents as a string array. * * @param numbers string to parse * * @return array of numbers */ public static int[] parseNumbers(final String numbers) { final String[] s = numbers.split(" "); final int[] i = new int[s.length]; for (int j = 0; j < i.length; j++) { i[j] = Integer.parseInt(s[j].trim()); } return i; } /** * Returns a formatted string to describe the supplied descriptors. * * @param descrs to format * * @return formatted string */ public static String formatDescriptors(final String... descrs) { final StringBuilder sb = new StringBuilder(); if (descrs.length == 1) { sb.append("'").append(descrs[0].replace("'", "\\27")).append("' "); } else { sb.append("( "); for (String descr : descrs) { sb.append("'").append(descr.replace("'", "\\27")).append("' "); } sb.append(") "); } return sb.toString(); } /** * Returns a formatted string to describe the supplied OIDs. * * @param oids to format * * @return formatted string */ public static String formatOids(final String... oids) { final StringBuilder sb = new StringBuilder(); if (oids.length == 1) { sb.append(oids[0]).append(" "); } else { sb.append("( "); for (int i = 0; i < oids.length; i++) { sb.append(oids[i]); if (i < oids.length - 1) { sb.append(" $ "); } else { sb.append(" "); } } sb.append(") "); } return sb.toString(); } /** * Returns a formatted string to describe the supplied numbers. * * @param numbers to format * * @return formatted string */ public static String formatNumbers(final int... numbers) { final StringBuilder sb = new StringBuilder(); if (numbers.length == 1) { sb.append(numbers[0]).append(" "); } else { sb.append("( "); for (int number : numbers) { sb.append(number).append(" "); } sb.append(") "); } return sb.toString(); } }