/** * Դ�������ƣ�SqlFormater.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.procedure.ui.util; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import org.apache.commons.lang.StringUtils; import SQLinForm_200.SQLForm; /** * @author liaogc * */ public class ProcedureFormater { /** * ��ʽ��sql * @param sql * @param ���ݿ�ȡֵΪ"Any SQL","SQL Server","DB2/UDB","MSAccess","Sybase","Informix","MYSQL","PostgreSQL","Oracle" * @return */ public static String formatSql(String sql, String language) { StringBuffer sql1 = new StringBuffer(); StringBuffer sql2 = new StringBuffer(); ByteArrayInputStream inputStream2 = new ByteArrayInputStream(sql.toString().getBytes()); InputStreamReader reader2 = new InputStreamReader(inputStream2); BufferedReader br2 = new BufferedReader(reader2); String line = ""; boolean find = false; try { while ((line = br2.readLine()) != null) { if(find){ sql2.append(line).append("\r\n"); continue; } if(line!=null && line.indexOf("create or replace ")>-1){ int index = line.indexOf("create or replace ") + "create or replace ".length(); sql1.append(line.substring(0,index)).append(""); sql2.append(line.substring(index)).append("\r\n"); find = true; }else{ sql1.append(line).append("\r\n"); } } } catch (IOException e) { e.printStackTrace(); } finally { try { reader2.close(); inputStream2.close(); } catch (IOException e) { e.printStackTrace(); } } StringBuffer newSb = new StringBuffer(); String tempsql = getSqlForm(language).formatSQLAsString(sql2.toString()); if (tempsql != null) { ByteArrayInputStream inputStream = new ByteArrayInputStream(tempsql.getBytes()); InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(reader); line = ""; try { while ((line = br.readLine()) != null) { if (newSb != null && "/".equals(line.trim())) { newSb.append(line.trim() + "\r\n"); } else { newSb.append(line + "\r\n"); } } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return sql1.toString()+newSb.toString(); } private static SQLForm getSqlForm(String language) { SQLForm form = new SQLForm(); form.setCase(false, false); form.setGraphLevel(false); form.setSuppressSpace(true); form.setQuoteCharacter("'"); form.setSuppressEmptyLine(false); form.setFormatLanguage("SQL"); if(StringUtils.isBlank(language)){ form.setSourceSQLLanguage("Oracle"); }else{ form.setSourceSQLLanguage(language); } // form.setBracketSpaces("noSpacesAroundBracket"); // form.setCommaSpaces("oneSpaceAfterComma"); // form.setEqualSpaces("oneSpaceAroundEqual"); form.setSmallSQLWidth(120); // form.setPageWidth(80); form.setAndOrIndention(true); form.setInitialIndentation(0); form.setIndention(2, true); form.setNumCommas(4);//ÿ4��һ�� //form.setAlignmentAs(false); form.setLinebreakKeyword(false);//�ؼ��ֺ��治���� return form; } }