Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диаграмма программных классов! 
:(
    Опции темы
Aleksandriys
Дата 27.10.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.8.2006

Репутация: нет
Всего: нет



Всем добрый день помогите нарисовать диаграмму программных классов, на вот эту программу


Код


/*
 /*
 * 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());
    }
  }
}


Заранее спасибо.
PM MAIL   Вверх
Се ля ви
Дата 28.10.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 3
Всего: 127



прогони через автогенератор диаграмм...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Aleksandriys
Дата 30.10.2006, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.8.2006

Репутация: нет
Всего: нет



Цитата(Се ля ви @ 28.10.2006,  16:25)
прогони через автогенератор диаграмм...

А где его взять? 

Подскажи плиз! И как с ним работать, просто я никогда с ним не сталкивался.....
PM MAIL   Вверх
Alastis
Дата 30.10.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: нет
Всего: 10



Aleksandriys
Если есть Rational Rose - просто перетащи файл исходнка в диаграмму класса, процедура называется Reverse Engeneering... только убедись сначала, что твой исходник синтаксически правильный, насколько я вижу невооруженным взглядом  smile - ошибочки в  исходнике есть


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
Aleksandriys
Дата 5.11.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.8.2006

Репутация: нет
Всего: нет



Цитата(Alastis @ 30.10.2006,  13:26)
Aleksandriys
Если есть Rational Rose - просто перетащи файл исходнка в диаграмму класса, процедура называется Reverse Engeneering... только убедись сначала, что твой исходник синтаксически правильный, насколько я вижу невооруженным взглядом  smile - ошибочки в  исходнике есть

Спасибо за подсказу. Догадываюсь, что ошибочки есть smile но я никак их исправить немогу, не получаеться, если не трудно подправь плиз smile, протсо у меня уже горит это..., я просто неуспеваю, с меня причитаеться.
Суть программы состоит в том, что она анализирует запросы и согласно условиям отбора информирует о целесообразности и нецелесообразности создания шаблона.
Если по шагам то:
1.    Выделение целостных запросов из заданной совокупности запросов.
2.    Задание константы количества кандидатов на шаблон.
3.    Задание переменной учета статистики запросов.
4.    Здание константы порогового значения похожести запросов.
5.    Определение типа запроса, который будет рассматриваться для определения кандидатов на шаблон.
6.    Выделение из полученной совокупности запросов, запросы которые исполь-зуют одинаковые таблицы.
7.    Полученная совокупность запросов разбивается на группы по использова-нию общих полей,  условий выборки, сортировки и группировки
8.    Полученная совокупность запросов разбивается на группы по использова-нию общих полей,  согласно пороговому значению.
9.    Полученная совокупность запросов разбивается на группы по использова-нию общих условий выборки,  согласно пороговому значению
10.    Сравнение каждого запроса на соответствия пороговому значению, в случае если результат равен true, значение переменой статистики увеличивается на единицу, после каждого прохода цикла результат, которого равен true.
11.     Сравнение конечного результата значения переменной сбора статистики и константы заданной для определения количества запросов кандидатов на шаблон.
12.    В случае если проверка значения переменной сбора статистики и значения константы показывающей количество запросов кандидатов на шаблон даст результат true, то говорим, о целесообразности создания шаблона, иначе го-ворим о нецелесообразности создания шаблона. 
 

Это сообщение отредактировал(а) Aleksandriys - 5.11.2006, 14:32
PM MAIL   Вверх
Alastis
Дата 7.11.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: нет
Всего: 10



Извини, дружище:
1. Времени нет
2. Я не спец в джаве


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.