content: /*
   * Copyright 2024-2025 the original author or authors.
   *
   * Licensed 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
   *
   *      https://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.alibaba.cloud.ai.studio.admin.generator.utils;
  
  /**
   * 代码生成工具类，提供代码生成过程中常用的字符串处理和类型转换方法
   *
   * @author yHong
   * @version 1.0
   * @since 2025/9/10 21:30
   */
  public final class CodeGenUtils {
  
  	private CodeGenUtils() {
  	}
  
  	/**
  	 * null 值转空字符串
  	 * @param s 输入字符串
  	 * @return 非空字符串
  	 */
  	public static String nvl(String s) {
  		return s == null ? "" : s;
  	}
  
  	/**
  	 * 转义字符串用于 Java 代码生成
  	 * <p>
  	 * 主要用于生成 Java 字符串字面量，会转义反斜杠和双引号
  	 * </p>
  	 * @param s 输入字符串
  	 * @return 转义后的字符串
  	 */
      public static String esc(String s) {
          if (s == null) {
              return "";
          }
          StringBuilder sb = new StringBuilder();
          for (int i = 0; i < s.length(); i++) {
              char c = s.charAt(i);
              switch (c) {
                  case '\\':
                      sb.append("\\\\");
                      break;
                  case '"':
                      sb.append("\\\"");
                      break;
                  case '\n':
                      sb.append("\\n");
                      break;
                  case '\r':
                      sb.append("\\r");
                      break;
                  case '\t':
                      sb.append("\\t");
                      break;
                  default:
                      sb.append(c);
              }
          }
          return sb.toString();
      }
  
  	/**
  	 * 对象转字符串
  	 * @param o 输入对象
  	 * @return 字符串表示，null 对象返回 null
  	 */
  	public static String str(Object o) {
  		return o == null ? null : String.valueOf(o);
  	}
  
  	/**
  	 * 对象转整数（安全转换）
  	 * <p>
  	 * 支持以下类型的转换：
  	 * <ul>
  	 * <li>Integer - 直接返回</li>
  	 * <li>Number - 调用 intValue()</li>
  	 * <li>String - 尝试解析为整数</li>
  	 * <li>其他 - 返回 null</li>
  	 * </ul>
  	 * </p>
  	 * @param v 输入值
  	 * @return 整数值，无法转换时返回 null
  	 */
  	public static Integer toInt(Object v) {
  		if (v instanceof Integer i) {
  			return i;
  		}
  		if (v instanceof Number n) {
  			return n.intValue();
  		}
  		if (v instanceof String s) {
  			try {
  				return Integer.parseInt(s.trim());
  			}
  			catch (Exception ignore) {
  				// 忽略解析异常，返回 null
  			}
  		}
  		return null;
  	}
  
  	/**
  	 * 检查字符串是否为空（null 或 空白）
  	 * @param s 输入字符串
  	 * @return true 如果字符串为 null 或只包含空白字符
  	 */
  	public static boolean isBlank(String s) {
  		return s == null || s.trim().isEmpty();
  	}
  
  }
  