/** * @param code Code lines. * @param accessor Field or method name. * @param args Method arguments. */ private void returnFalseIfFailed(Collection<String> code, String accessor, @Nullable String... args) { assert code != null; assert accessor != null; String argsStr = ""; if (args != null && args.length > 0) { for (String arg : args) argsStr += arg + ", "; argsStr = argsStr.substring(0, argsStr.length() - 2); } code.add(builder().a("if (!").a(accessor).a("(").a(argsStr).a("))").toString()); indent++; code.add(builder().a("return false;").toString()); indent--; }
/** * Creates String key used for equality and hashing. */ private String createEqualityKey() { GridStringBuilder sb = new GridStringBuilder("(").a(usr).a(")@"); if (uri.getScheme() != null) sb.a(uri.getScheme().toLowerCase()); sb.a("://"); if (uri.getAuthority() != null) sb.a(uri.getAuthority().toLowerCase()); return sb.toString(); }
/** {@inheritDoc} */ @Override protected void printPage(long addr, int pageSize, GridStringBuilder sb) throws IgniteCheckedException { sb.a("BPlusIO [\n\tcanGetRow=").a(canGetRow) .a(",\n\tleaf=").a(leaf) .a(",\n\titemSize=").a(itemSize) .a(",\n\tcnt=").a(getCount(addr)) .a(",\n\tforward=").appendHex(getForward(addr)) .a(",\n\tremoveId=").appendHex(getRemoveId(addr)) .a("\n]"); }
/** * Gets a hex string representation of the given long value. * * @param val Value to convert to string. * @return Hex string. */ public static String hexLong(long val) { return new SB().appendHex(val).toString(); }
/** * Dumps stack trace of the thread to the given log at warning level. * * @param t Thread to be dumped. * @param log Logger. */ public static void dumpThread(Thread t, @Nullable IgniteLogger log) { ThreadMXBean mxBean = ManagementFactory.getThreadMXBean(); GridStringBuilder sb = new GridStringBuilder(); printThreadInfo(mxBean.getThreadInfo(t.getId()), sb, Collections.emptySet()); warn(log, sb.toString()); }
/** {@inheritDoc} */ @Override public GridStringBuilder appendCodePoint(int codePoint) { if (lenLimit.overflowed(this)) { tail.append(codePoint); return this; } int curLen = length(); super.appendCodePoint(codePoint); return onWrite(curLen); }
/** * Appends given long value as a hex string to this string builder. * * @param val Value to append. * @return This builder for chaining method calls. */ public GridStringBuilder appendHex(long val) { String hex = Long.toHexString(val); int len = hex.length(); for (int i = 0; i < 16 - len; i++) a('0'); a(hex); return this; }
/** {@inheritDoc} */ @Override protected void printPage(long addr, int pageSize, GridStringBuilder sb) throws IgniteCheckedException { int cnt = getCount(addr); sb.a("PagesListMeta [\n\tnextMetaPageId=").appendHex(getNextMetaPageId(addr)) .a(",\n\tcount=").a(cnt) .a(",\n\tbucketData={"); Map<Integer, GridLongList> bucketsData = new HashMap<>(cnt); getBucketsData(addr, bucketsData); for (Map.Entry<Integer, GridLongList> e : bucketsData.entrySet()) sb.a("\n\t\tbucket=").a(e.getKey()).a(", list=").a(e.getValue()); sb.a("\n\t}\n]"); } }
/** * Gets a hex string representation of the given long value. * * @param val Value to convert to string. * @return Hex string. */ public static String hexInt(int val) { return new SB().appendHex(val).toString(); }
/** * Dumps stack trace of the thread to the given log at warning level. * * @param t Thread to be dumped. * @param log Logger. */ public static void dumpThread(Thread t, @Nullable IgniteLogger log) { ThreadMXBean mxBean = ManagementFactory.getThreadMXBean(); GridStringBuilder sb = new GridStringBuilder(); printThreadInfo(mxBean.getThreadInfo(t.getId()), sb, Collections.emptySet()); warn(log, sb.toString()); }
/** {@inheritDoc} */ @Override public GridStringBuilder appendCodePoint(int codePoint) { if (lenLimit.overflowed(this)) { tail.append(codePoint); return this; } int curLen = length(); super.appendCodePoint(codePoint); return onWrite(curLen); }
/** * Generate {@code CREATE INDEX} SQL statement for given params. * @param fullTblName Fully qualified table name. * @param h2Idx H2 index. * @param ifNotExists Quietly skip index creation if it exists. * @return Statement string. */ public static String indexCreateSql(String fullTblName, GridH2IndexBase h2Idx, boolean ifNotExists) { boolean spatial = F.eq(SPATIAL_IDX_CLS, h2Idx.getClass().getName()); GridStringBuilder sb = new SB("CREATE ") .a(spatial ? "SPATIAL " : "") .a("INDEX ") .a(ifNotExists ? "IF NOT EXISTS " : "") .a(withQuotes(h2Idx.getName())) .a(" ON ") .a(fullTblName) .a(" ("); boolean first = true; for (IndexColumn col : h2Idx.getIndexColumns()) { if (first) first = false; else sb.a(", "); sb.a(withQuotes(col.columnName)).a(" ").a(col.sortType == SortOrder.ASCENDING ? "ASC" : "DESC"); } sb.a(')'); return sb.toString(); }
/** * Appends given long value as a hex string to this string builder. * * @param val Value to append. * @return This builder for chaining method calls. */ public GridStringBuilder appendHex(int val) { String hex = Integer.toHexString(val); int len = hex.length(); for (int i = 0; i < 8 - len; i++) a('0'); a(hex); return this; }
/** {@inheritDoc} */ @Override protected void printPage(long addr, int pageSize, GridStringBuilder sb) throws IgniteCheckedException { sb.a("PagePartitionCounters [\n\tcount=").a(getCount(addr)) .a(",\n\tlastFlag=").a(getLastFlag(addr)) .a(",\n\tnextCountersPageId=").appendHex(getNextCountersPageId(addr)) .a(",\n\tsize={"); Map<Integer, Long> sizes = new HashMap<>(); readCacheSizes(addr, sizes); for (Map.Entry<Integer, Long> e : sizes.entrySet()) sb.a("\n\t\t").a(e.getKey()).a("=").a(e.getValue()); sb.a("\n\t}\n]"); } }
/** * Returns new file name for the given key. Since fine name is based on the key, * the key must be unique. This method converts string key into hexadecimal-based * string to avoid conflicts of special characters in file names. * * @param key Unique checkpoint key. * @return Unique checkpoint file name. */ private String getUniqueFileName(CharSequence key) { assert key != null; SB sb = new SB(); // To be overly safe we'll limit file name size // to 128 characters (124 characters name + 4 character extension). // We also limit file name to upper case only to avoid surprising // behavior between Windows and Unix file systems. for (int i = 0; i < key.length() && i < 124; i++) sb.a(CODES.charAt(key.charAt(i) % CODES_LEN)); return sb.a(".gcp").toString(); }
/** * @param var Variable name. * @param mtd Method name. * @param args Method arguments. */ private void returnFalseIfReadFailed(String var, String mtd, String setConverter, @Nullable String... args) { assert mtd != null; String argsStr = ""; if (args != null && args.length > 0) { for (String arg : args) argsStr += arg + ", "; argsStr = argsStr.substring(0, argsStr.length() - 2); } if (setConverter.isEmpty()) read.add(builder().a(var).a(" = ").a(mtd).a("(").a(argsStr).a(");").toString()); else { read.add(builder().a(var).a(" = ").a(setConverter .replace("$val$", new SB().a(mtd).a("(").a(argsStr).a(")").toString())).a(";").toString()); } read.add(EMPTY); read.add(builder().a("if (!reader.isLastRead())").toString()); indent++; read.add(builder().a("return false;").toString()); indent--; }