1. Список говнокодов пользователя kikis

    Всего: 5

  2. Java / Говнокод #9702

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    /**
     * Конфигурация программы
     *
                 *  2 конструктора:
                    - по умолчанию - загружающий данные из файла настроек (см. Configuration.CONFIGURATION_FILENAME);
                    - с одним параметром java.util.Properties - загружающий данные данные из него.
                - метод save()
                    - без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
                    - с одним параметром java.util.Properties - записывает данные в него.
     */
    public class Configuration {
        public static final String CONFIGURATION_FILENAME = System.getProperty("user.home") + "/serialmon/1.properties";
        private PortConfig firstPort;
    	private PortConfig secondPort;
        private String logFileName;
        private int logWidth;
        
    	public Configuration() {
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            Properties pp = new Properties();
            try {
                File PropFile = new File(CONFIGURATION_FILENAME);
                if (!PropFile.exists()) {   
                    PropFile.createNewFile();
                }
                FileInputStream inPropFile = new FileInputStream(CONFIGURATION_FILENAME); 
                pp.load(inPropFile);          
                setProperties(pp);           
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public Configuration(Properties p) {
            
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            setProperties(p);
        }
        
        /**
         * вспомогательный метод. В идеале можно было обойтись без него, вызывая из конструктора по умолчанию
         * конструктор с параметром Properties, но ПЕРЕД вызовом этого конструктора нужно было
         * загрузить данные из файла в Properties pp, а потом уже вызвать конструктор.
         * Это сделать не возможно, т.к. вызов конструктора должен быть ПЕРВЫМ.
         * 
         * @param pp 
         */
        private void setProperties(Properties pp){
            
            this.setLogFileName(pp.getProperty("logFileName"));
            this.setLogWidth(Integer.parseInt(pp.getProperty("logWidth")));
        }
        
        /**
         * - метод save()
         * без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
         */
        public void save() {
            
            Properties pp = new Properties();
            save(pp);
            
            try {
                FileOutputStream outPropFile = new FileOutputStream(CONFIGURATION_FILENAME);
                pp.store(outPropFile, null);
                
            } catch(IOException ex) {
                ex.printStackTrace();
            }
        }
        
        /**
         *     - с одним параметром java.util.Properties - записывает данные в него.
         * 
         * @param p 
         */
        public void save(Properties p) {
            
            p.put("logFileName", this.getLogFileName());
            p.put("logWidth", String.valueOf(this.getLogWidth()));
        }

    Товарищи, возникла необходимость создания двух конструкторов. Хочется вызвать один из другого, чтобы было красиво, НО перед вызовом второго, который с параметром Properties, нужно установить этот самый параметр, а потом уже передать его.
    Т.е. нужно в конструкторе по умолчанию сделать такое:
    Properties p = new Properties();
    p.set(бла бла бла);
    THIS(P); // как вы понимаете, компилятор будет ругаться, что вызов THIS должен быть ПЕРВЫМ в конструкторе.

    вызов типа this(new Properties), не годится.

    сейчас, как можно видеть, использую вспомогательный метод setProperties, как раз без которого было бы идеально.

    kikis, 18 Марта 2012

    Комментарии (10)
  3. SQL / Говнокод #8817

    −109

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    end;
    create or replace package body "MUT_TABLE" is
    type a_table is table of number index by pls_integer;
    position a_table;
    empty a_table;
    
    procedure SET_INITIAL_STATE
    as
    begin
    position:=empty;
    end SET_INITIAL_STATE;
    
    procedure BEF_TR( ID IN NUMBER, A IN NUMBER)
    as
    
    begin
    
    position (ID):= A;
    
    end BEF_TR;
    
    procedure AFT_TR
    is
    v number;
    
    begin
    v:=position.FIRST;
    while v is not null loop
    
    update A set
    A=1,
    B='!!!!!!!!!'
    where A = 1;
    v:= position.next(v); 
    end loop;
    
    end AFT_TR;
    
    end "MUT_TABLE";

    kikis, 14 Декабря 2011

    Комментарии (4)
  4. SQL / Говнокод #8816

    −111

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    CREATE TABLE "A" 
    ( "ID" NUMBER, 
    "A" NUMBER, 
    "B" VARCHAR2(20), 
    CONSTRAINT "A_PK" PRIMARY KEY ("ID") ENABLE
    )
    /
    
    CREATE OR REPLACE TRIGGER "A_2" 
    AFTER
    insert or update on "A"
    for each row
    begin
    
    mut_table.bef_tr(:NEW.ID,:NEW.A);
    
    end;
    /
    ALTER TRIGGER "A_2" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_3" 
    AFTER
    insert on "A"
    declare
    b number;
    
    begin
    mut_table.aft_tr;
    end;
    /
    ALTER TRIGGER "A_3" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_AT" 
    BEFORE
    insert or update on "A"
    for each row
    declare 
    v number;
    PRAGMA AUTONOMOUS_TRANSACTION;
    begin
    
    :NEW.A:=:NEW.A+1;
    :NEW.B:='!!!!!!!!!!';
    
    commit;
    
    end;
    /
    ALTER TRIGGER "A_AT" DISABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_I_S" 
    BEFORE
    insert or update on "A"
    begin
    mut_table.set_initial_state;
    end;
    /
    ALTER TRIGGER "A_I_S" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_T1" 
    BEFORE
    insert or update on "A"
    for each row
    
    begin
    
    update A set 
    A = :NEW.A+1,
    B = 'was incremented'
    where A = :NEW.A;
    end;
    /
    ALTER TRIGGER "A_T1" DISABLE
    /
    
    CREATE OR REPLACE TRIGGER "BI_A" 
    before insert on "A" 
    for each row 
    begin 
    if :NEW."ID" is null then 
    select "A_SEQ".nextval into :NEW."ID" from dual; 
    end if; 
    end; 
    
    /
    ALTER TRIGGER "BI_A" ENABLE
    /
    
    
    create or replace package MUT_TABLE as
    
    procedure set_initial_state;
    procedure bef_tr(ID number,A NUMBER);
    procedure aft_tr;

    kikis, 14 Декабря 2011

    Комментарии (2)
  5. SQL / Говнокод #8812

    −114

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    -- Я ТУТ ИСПОЛЬЗУЮ 2 КУРСОРА, 
    -- причем 2рой вызывается изнутри первого, 
    -- причем этот 2рой курсор ПОЛНОСТЬЮ (в худшем случае) 
    -- перебирает все свои значения, чтобы подставить одно.
    
    -- ВОПРОС: как сделать так, чтоб работало так же, но чтоб не так яро грузилось???
    
    DECLARE 
      CURSOR get_col1 IS
        SELECT DISTINCT 
    	a.constraint_name, 
      a.constraint_type,
      a.table_name,
      a.r_constraint_name,
      b.column_name
        FROM all_constraints a, all_cons_columns b
        WHERE a.table_name = b.table_name
      AND a.constraint_type in ('P', 'R')
      AND a.constraint_name = b.constraint_name
        ORDER by 1;
      
      CURSOR get_col2 IS
        SELECT constraint_name, table_name, column_name 
        FROM all_cons_columns
        WHERE constraint_name in 
              (select r_constraint_name 
               from all_constraints 
               where constraint_type = 'R');
        
    BEGIN
      dbms_output.ENABLE;
      dbms_output.put_line(rpad('Имя ограничения', 30)
                ||rpad('Тип', 5)
                ||rpad('Имя столбца', 30)
                ||rpad('Имя таблицы', 30)
                ||rpad('Имя таблицы', 30)
                ||rpad('Имя столбца', 30));
      dbms_output.put_line(rpad('-', 155, '-'));
      
      FOR main_col IN get_col1 LOOP
        dbms_output.put(rpad(to_char(main_col.constraint_name), 30)
          ||rpad(to_char(main_col.constraint_type), 5)
          ||rpad(to_char(main_col.column_name), 30)
          ||rpad(to_char(main_col.table_name), 30));
        
        IF (main_col.constraint_type = 'R') THEN
          
             FOR sec_col IN get_col2 LOOP
                  
                  IF (main_col.r_constraint_name = sec_col.constraint_name) THEN
                    
                    dbms_output.put(rpad(to_char(sec_col.table_name), 30)
                                       ||rpad(to_char(sec_col.column_name), 30));
                  END IF;
                  
             END LOOP;
        
        END IF;
        
        dbms_output.new_line();  
      END LOOP;
    END;
    /

    7. Используя сведения из представлений словаря данных получить
    информацию о первичных и внешних ключах схемы: Номер по порядку,
    Имя ограничения целостности, Тип, Имя столбца, Имя таблицы.
    Кроме того, для внешних ключей указать Имя таблицы и Имя столбца
    на которые ссылаются эти ключи.

    kikis, 13 Декабря 2011

    Комментарии (12)
  6. SQL / Говнокод #8775

    −114

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    DECLARE 
      CURSOR get_col1 IS
        SELECT DISTINCT 
    	a.constraint_name, 
      a.constraint_type,
      a.table_name,
      a.r_constraint_name,
      b.column_name
        FROM all_constraints a, all_cons_columns b
        WHERE a.table_name = b.table_name
      AND a.constraint_type in ('P', 'R')
      AND a.constraint_name = b.constraint_name
      --AND rownum < 20
        ORDER by 1;
      
      CURSOR get_col2 IS
        SELECT table_name, column_name 
        FROM all_cons_columns
        WHERE constraint_type = 'R';
        
    BEGIN
      dbms_output.ENABLE;
      dbms_output.put_line(rpad('Имя ограничения', 30)
                ||rpad('Тип', 5)
                ||rpad('Имя столбца', 20)
                ||rpad('Имя таблицы', 20)
                ||rpad('Имя таблицы', 20)
                ||rpad('Имя столбца', 20));
      dbms_output.put_line(rpad('-', 115, '-'));
      
      FOR main_col IN get_col1 LOOP
        dbms_output.put_line(rpad(to_char(main_col.constraint_name), 30)
          ||rpad(to_char(main_col.constraint_type), 5)
          ||rpad(to_char(main_col.column_name), 20)
          ||rpad(to_char(main_col.table_name), 20));
        
        /*IF (main_col.constraint_type = 'R') THEN
          dbms_output.put_line(lpad(rpad('Comment', 11), 37)||': '||main_col.comments);
        END IF;*/
        
        FOR sec_col IN get_col2 LOOP
          IF (main_col.constraint_type = 'R') THEN
            dbms_output.put_line(rpad('Index', 10)
            ||rpad('Index', 10)': '||ind_col.index_name);
          END IF;
        END LOOP;
        dbms_output.new_line();  
      END LOOP;
    END;
    /

    kikis, 09 Декабря 2011

    Комментарии (2)