Всем добрый день помогите нарисовать диаграмму программных классов, на вот эту программу
| Код |
/* /* * ReadFile1.java * * Created on 10 Октябрь 2006 г., 13:24 */ import java.io.*; /** * * @author Alexander */ public class ReadFile1 { /** Creates a new instance of ReadFile1 */ public ReadFile1() { } /** * @param args the command line arguments */ public static void main(String args[]) { DataOutputStream outStream; try { outStream = new DataOutputStream( new BufferedOutputStream( new FileOutputStream( "d:\\Diplom\\output.txt"))); BufferedReader in = new BufferedReader(new FileReader("d:\\Diplom\\Log.txt")); String str; while ((str = in.readLine()) != null) { System.out.println("READ: "+str); if ((str.startsWith("SELECT")||str.startsWith("INSERT")||str.startsWith("UPDATE")||str.startsWith("DELETE") )&& (str.endsWith(";"))) { StringBuffer buffer = new StringBuffer(); buffer.append("SELECT ").append("FROM").append("WHERE").append(";").append(" msec\n"); buffer.append("INSERT").append("VALUES").append(";").append("msec\n"); buffer.append("UPDATE").append("SET").append(";").append("msec\n"); buffer.append("DELETE").append("FROM").append("WHERE").append(";").append(" msec\n"); String str2 = buffer.toString(); System.out.println(" Database in Quiry "); outStream.writeUTF(str); } // Ввод значений переменных статистики и порогового значения в процентах // Количество таблиц, количество условий, количество полей public class PorogZnach { public static void ListVariables () throw QueryParseException { System.out.println ("Введите значение порогового значения похожести запросов, значение будет рассматриваться как количесство процентов"): System.in.read ( "K=", K); System.out.println ("Введите значение константы претендентов на шаблон); System.in.read ( "H=", H); private int _templateCandidateCount = 0; // количество кандидатов на шаблон for (int i=0; i < T /* "заданное количество раз" */; i++) { // Calculate N if (N > K*x) { // "Ni = true" :) _templateCandidateCount++; } } } if (_templateCandidateCount > H) { System.out.println("шаблон строить целесообразно"); } else { System.out.println("шаблон строить нецелесообразно"); } } //* Извлечение информации о таблицах, колонках и условиях выборки из запросов public class QueryInfoCollector { public parseQuery(String query) throws QueryParseException { if (query == null || query.length == 0) { throw new QueryParseException("Query string is null or empty"); } // Определяем тип запроса с которым будем работать if (query.toUpperCase().indexOf("SELECT") > -1) { parseSelect(query); } else if (query.toUpperCase().indexOf("UPDATE") > -1) { parseUpdate(query); } else if (query.toUpperCase().indexOf("INSERT") > -1) { parseInsert(query); } else if (query.toUpperCase().indexOf("DELETE") > -1) { parseDelete(query); } else { throw new QueryParseException("Unknown or unsupported SQL query: " + query); } } public void parseSelect(String query) throws QueryParseException { Matcher m = SELECT_PATTERN.matcher(query);
if (m.matches()) { String columnsClause = m.group(1); // "a.c1, a.c2 , b.c1, b.c2" Map<String, String> cols = parseColumnList(columnsClause); String fromClause = m.group(2); // "tableA a, tableB b" Map<String, String> tables = parseTableList(fromClause); String whereClause = m.group(3); // "<, >, =" Map<String, String> where = parseWhereList (whereClause); { int result; result = ProgZnach.ListVariables(); } } else { throw new QueryParseException("Invalid SELECT query: " + query); } } public void parseUpdate(String query) throws QueryParseException { Matcher m = UPDATE_PATTERN.matcher(query);
if (m.matches()) { String columnsClause = m.group(1); // "a.c1, a.c2 , b.c1, b.c2" Map<String, String> cols = parseColumnList(columnsClause); String fromClause = m.group(2); // "tableA a, tableB b" Map<String, String> tables = parseTableList(fromClause); String whereClause = m.group(3); // "<, >, =" Map<String, String> where = parseWhereList (whereClause); String setClause = m.group(4); // "" Map<String, String> set = parseSetList (setClause); { int result; result = ProgZnach.ListVariables(); } } else { throw new QueryParseException("Invalid UPDATE query: " + query); } }
public void parseDelete(String query) throws QueryParseException { Matcher m = DELETE_PATTERN.matcher(query);
if (m.matches()) { String columnsClause = m.group(1); // "a.c1, a.c2 , b.c1, b.c2" Map<String, String> cols = parseColumnList(columnsClause); String fromClause = m.group(2); // "tableA a, tableB b" Map<String, String> tables = parseTableList(fromClause); String WhereClause = m.group(3); // "<, >, =" Map<String, String> where = parseWhereList (whereClause); } int result; result = ProgZnach.ListVariables(); } } else { throw new QueryParseException("Invalid DELETE query: " + query); } }
public void parseInsert(String query) throws QueryParseException { Matcher m = INSERT_PATTERN.matcher(query); if (m.matches()) { String fromClause = m.group(2); // "tableA a, tableB b" Map<String, String> tables = parseTableList(fromClause); String columnsClause = m.group(1); // "a.c1, a.c2 , b.c1, b.c2" Map<String, String> cols = parseColumnList(columnsClause); String valuesClause = m.group(3); // "" Map<String, String> values = parseValuesList (valuesClause); } int result; result = ProgZnach.ListVariables(); }
} else { throw new QueryParseException("Invalid INSERT query: " + query); } }
public void reset() { // Очищаем статистику } //Parses tables list (tables delimited by comma) and returns the Map of pairs (<table name>, <table alias>) public class QueryCaseCollector { private Map<String, String> parseTableList(String str) { Map<String, String> result = new HashMap<String, String>(); StringTokenizer tokenizer = new StringTokenizer(str, ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); Matcher m = TABLE_PATTERN.matcher(token); if (m.matches()) { String tblName = m.group(1); String tblAlias = m.group(4); result.put(tblName, tblAlias); } else { throw new QueryParseException("Invalid table token in FROM clause: " + str); } } return result; }
//Parses columns list (columns delimited by comma) and returns the Map of pairs (<table name or alias>, <column name>) private Map<String, String> parseColumnList(String str) { Map<String, String> result = new HashMap<String, String>(); StringTokenizer tokenizer = new StringTokenizer(str, ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); Matcher m = COLUMN_PATTERN.matcher(token); if (m.matches()) { String table = m.group(1); String column = m.group(2); result.put(table, column); } else { throw new QueryParseException("Invalid table token in FROM clause: " + str); } } return result; } //Parses where list (condition delimited by comma) and returns the Map of pairs (<table name or alias>, <where alias>) private Map<String, String> parseWhereList(String str) { Map<String, String> result = new HashMap<String, String>(); StringTokenizer tokenizer = new StringTokenizer(str, ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); Matcher m = WHERE_PATTERN.matcher(token); if (m.matches()) { String table Name = m.group(3); String Where Alias = m.group(2); result.put(table, column, where); } else { throw new QueryParseException("Invalid table token in FROM clause: " + str); } } return result; } //Parses values list (condition delimited by comma) and returns the Map of pairs (<table name or alias>, <values alias>) private Map<String, String> parsevaluesList(String str) { Map<String, String> result = new HashMap<String, String>(); StringTokenizer tokenizer = new StringTokenizer(str, ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); Matcher m = VALUES_PATTERN.matcher(token); if (m.matches()) { String table Name = m.group(3); String values Alias = m.group(2); result.put(values, table, column); } else { throw new QueryParseException("Invalid table token in FROM clause: " + str); } } return result; } //Parses set list (condition delimited by comma) and returns the Map of pairs (<table name or alias>, <set alias>) private Map<String, String> parsesetList(String str) { Map<String, String> result = new HashMap<String, String>(); StringTokenizer tokenizer = new StringTokenizer(str, ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken().trim(); Matcher m = SET_PATTERN.matcher(token); if (m.matches()) { String table Name = m.group(3); String set Alias = m.group(2); result.put(set, table, column); } else { throw new QueryParseException("Invalid table token in FROM clause: " + str); } } return result; } //... private static final String EMPTY_REGEX = "[\\s]*"; private static final String SPACE_REGEX = "[\\s]+"; private static final String WHERE_CLAUSE_REGEX = "(WHERE" + SPACE_REGEX + "(.+) )?"; private static final string VALUES_CLAUSE REGEX = "(VALUES" + SPACE_REGEX + "(.+) )?"; private static final string SET_CLAUSE REGEX = "(SET" + SPACE_REGEX + "(.+) )?";
private static final String SELECT_REGEX = EMPTY_REGEX + "SELECT" + SPACE_REGEX + "(.+)" + SPACE_REGEX + "FROM" + SPACE_REGEX + "(.+)" + SPACE_REGEX + WHERE_CLAUSE_REGEX + SPACE_REGEX + "ORDER BY" + SPACE_REGEX + "(.+)" + EMPTY_REGEX;
private static final String UPDATE_REGEX = EMPTY_REGEX + "UPDATE" + SPACE_REGEX + "(.+)" + SPACE_REGEX + "SET" + SPACE_REGEX + "(.+)" + SPACE_REGEX + WHERE_CLAUSE_REGEX + EMPTY_REGEX;
private static final String INSERT_REGEX = EMPTY_REGEX + "INSERT" + SPACE_REGEX + "INTO" + SPACE_REGEX + "(.+)" + SPACE_REGEX + "(\\(" + SPACE_REGEX + "(.+)" + SPACE_REGEX + "\\))?" "VALUES" + SPACE_REGEX + "\\(" + SPACE_REGEX + "(.+)" + SPACE_REGEX + "\\)" + EMPTY_REGEX;
private static final String DELETE_REGEX = EMPTY_REGEX + "DELETE" + SPACE_REGEX + "FROM" + SPACE_REGEX + "(.+)" + SPACE_REGEX + WHERE_CLAUSE_REGEX + EMPTY_REGEX; private static final String IDENTIFIER_REGEX = "([\\w]*)"; private static final String COLUMN_REGEX = IDENTIFIER_REGEX + "[\\.]" + IDENTIFIER_REGEX; private static final String TABLE_REGEX = IDENTIFIER_REGEX + "(" + SPACE_REGEX + "(AS" + SPACE_REGEX + ")?" + IDENTIFIER_REGEX + ")?"; private static final string WHERE_REGEX = IDENTIFIER_REGEX + "[\\.]" + IDENTIFIER_REGEX; private static final string VALUES_REGEX = IDENTIFIER_REGEX + "[\\.]" + IDENTIFIER_REGEX; private static final string SET_REGEX = IDENTIFIER_REGEX + "[\\.]" + IDENTIFIER_REGEX; private static final Pattern SELECT_PATTERN = Pattern.compile(SELECT_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern UPDATE_PATTERN = Pattern.compile(UPDATE_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern INSERT_PATTERN = Pattern.compile(INSERT_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern DELETE_PATTERN = Pattern.compile(DELETE_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern COLUMN_PATTERN = Pattern.compile(COLUMN_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern TABLE_PATTERN = Pattern.compile(TABLE_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern WHERE_PATTERN = Pattern.compile(WHERE_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern SET_PATTERN = Pattern.compile(SET_REGEX, Pattern.CASE_INSENSITIVE); private static final Pattern VALUES_PATTERN = Pattern.compile(VALUES_REGEX, Pattern.CASE_INSENSITIVE); } in.close(); outStream.close(); } catch (Exception e) { System.out.print(e.getMessage()); } } }
|
Заранее спасибо. |