1. Java / Говнокод #18099

    +141

    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
    @ResponseBody
    public String paymentFeedback(@RequestBody MultiValueMap<String, String> requestParameters, @RequestBody String requestBody) {
        boolean isValidRequest = myService.hasRequestValidSHASign(requestParameters);
        if (isValidRequest) {
            String voucherNumber = findParameter(requestParameters, ORDERID_PARAMETER);
            if (!StringUtils.isEmpty(voucherNumber)) {
                Order order = orderService.getOrderByVoucherNumber(voucherNumber);
                if (order != null) {
                    String status = findParameter(requestParameters, STATUS_PARAMETER);
                    if (ACCEPT_STATUS_VALUES.contains(status)) {
                        updateOrderWithPaymentStatus(order, Status.PAID, requestParameters);
                        orderService.sendEmail(order);
                        orderService.sell(order);
                    } else if (CANCELLED_STATUS_VALUE.equals(status)) {
                        updateOrderWithPaymentStatus(order, Status.CANCELLED, requestParameters);
                    } else if (DECLINE_STATUS_VALUES.contains(status)) {
                        updateOrderWithPaymentStatus(order, Status.DECLINED, requestParameters);
                    } else if (EXCEPTION_STATUS_VALUES.contains(status)) {
                        updateOrderWithPaymentStatus(order, Status.EXCEPTION, requestParameters);
                    } else {
                        logger.warn("Order ID={} got strange status: {}. Ignoring that feedback...", voucherNumber, status);
                    }
                } else {
                    throw new IllegalArgumentException("Can't find voucher with orderID from feedback: " + voucherNumber);
                }
            } else {
                throw new IllegalArgumentException("Received feedback with missing orderID: " + requestBody);
            }
        } else {
            throw new IllegalArgumentException("Received feedback with invalid SHA sign: " + requestBody);
        }
        
        return "";
    }

    pingw33n, 30 Апреля 2015

    Комментарии (1)
  2. Java / Говнокод #18092

    +143

    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
    public void init() throws Exception {
    
            initGps103Server("gps103");
            initTk103Server("tk103");
            initGl100Server("gl100");
            initGl200Server("gl200");
            initT55Server("t55");
            initXexunServer("xexun");
            initTotemServer("totem");
            initEnforaServer("enfora");
            initMeiligaoServer("meiligao");
            initMaxonServer("maxon");
            initSuntechServer("suntech");
            initProgressServer("progress");
            initH02Server("h02");
            initJt600Server("jt600");
            initEv603Server("ev603");
            initV680Server("v680");
            initPt502Server("pt502");
            initTr20Server("tr20");
            initNavisServer("navis");
            initMeitrackServer("meitrack");
            initSkypatrolServer("skypatrol");
            initGt02Server("gt02");
            initGt06Server("gt06");
            initMegastekServer("megastek");
            initNavigilServer("navigil");
            initGpsGateServer("gpsgate");
            initTeltonikaServer("teltonika");
            initMta6Server("mta6");
            initMta6CanServer("mta6can");
            initTlt2hServer("tlt2h");
            initSyrusServer("syrus");
            initWondexServer("wondex");
            initCellocatorServer("cellocator");
            initGalileoServer("galileo");
            initYwtServer("ywt");
            initTk102Server("tk102");
            initIntellitracServer("intellitrac");
            initXt7Server("xt7");
            initWialonServer("wialon");
            initCarscopServer("carscop");
            initApelServer("apel");
            initManPowerServer("manpower");
            initGlobalSatServer("globalsat");
            initAtrackServer("atrack");
            initPt3000Server("pt3000");
            initRuptelaServer("ruptela");
            initTopflytechServer("topflytech");
            initLaipacServer("laipac");
            initAplicomServer("aplicom");
            initGotopServer("gotop");
            initSanavServer("sanav");
            initGatorServer("gator");
            initNoranServer("noran");
            initM2mServer("m2m");
            initOsmAndServer("osmand");
            initEasyTrackServer("easytrack");
            initTaipServer("taip");
            initKhdServer("khd");
            initPiligrimServer("piligrim");
            initStl060Server("stl060");
            initCarTrackServer("cartrack");
            initMiniFinderServer("minifinder");
            initHaicomServer("haicom");
            initEelinkServer("eelink");
            initBoxServer("box");
            initFreedomServer("freedom");
            initTelikServer("telik");
            initTrackboxServer("trackbox");
            initVisiontekServer("visiontek");
            initOrionServer("orion");
            initRitiServer("riti");
            initUlbotechServer("ulbotech");
            initTramigoServer("tramigo");
            initTr900Server("tr900");
            initArdi01Server("ardi01");
            initXt013Server("xt013");
            initAutoFonServer("autofon");
            initGoSafeServer("gosafe");
            initAutoFon45Server("autofon45");
            initBceServer("bce");
            initXirgoServer("xirgo");
            initCalAmpServer("calamp");
            initMtxServer("mtx");
            initTytanServer("tytan");
            initAvl301Server("avl301");
    
            initProtocolDetector();
        }

    Один я тут вижу говно? Внутри еще интереснее, особенно доставил метод start():
    https://github.com/tananaev/traccar/blob/master/src/org/traccar/ServerManager.java

    sakkath, 30 Апреля 2015

    Комментарии (3)
  3. Java / Говнокод #18055

    +144

    1. 1
    Шёл 2015 год, а SQLite на ведре так и не научился сравнивать не ASCII'шные строки без учёта регистра...

    Или это у меня руки из жопы растут?

    bormand, 24 Апреля 2015

    Комментарии (37)
  4. Java / Говнокод #18053

    +141

    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
    public static void main(String[] args)
        {
            int[] array = {1,2,3};
            permure(array, array.length);
        }
    
        private static void permure(int[] arr, int size)
        {
            if(size < 2){
                System.out.println(Arrays.toString(arr));
            }else {
                for(int k = 0; k < size; k++){
                    swap(arr, size - 1, k);
                    permure(arr, size - 1);
                }
            }
    
        }
    
        private static void swap(int[] arr, int index0, int index1)
        {
            int tmp = arr[index0];
            arr[index0] = arr[index1];
            arr[index1] = tmp;
        }

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

    Danneborg, 23 Апреля 2015

    Комментарии (4)
  5. Java / Говнокод #18043

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    try {
    	connection.executeQuery("select to_date('" + this.getMonth() + "', 'yyyyMM') from dual", null);
    } catch (Exception e) {
    	logger.error(e.getMessage(), e);
    	Error = true;
    	fault.addError(8, 100);
    	return;
    }

    Лучший способ по проверке корректности даты

    this.getMonth() - возвращает дату из пришедшего запроса

    mrFoxs, 22 Апреля 2015

    Комментарии (0)
  6. Java / Говнокод #18031

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    private String getNewRowKey() {
        	Hashtable<String, String> dataFields = new Hashtable<String, String>();
        	dataFields.put(TCommandConstants.TRANSITIONS_MARKET, Utils.convertMarketFrom("RUS",marketCB.getSelectedItem().toString()));
            dataFields.put( TCommandConstants.TRANSITIONS_INITIAL_STATUS, initialStatusCB.getSelectedItem().toString());
            dataFields.put( TCommandConstants.TRANSITIONS_TRANS_RULE, transitionRuleCB.getSelectedItem().toString());
            dataFields.put(TCommandConstants.TRANSITIONS_TARGET_STATUS, targetStatusCB.getSelectedItem().toString());
            return dataFields.get(TCommandConstants.TRANSITIONS_INITIAL_STATUS) + BPGraph.EMPTY_ITEM + dataFields.get(TCommandConstants.TRANSITIONS_TRANS_RULE) + BPGraph.EMPTY_ITEM + dataFields.get(TCommandConstants.TRANSITIONS_TARGET_STATUS);
        }

    grlgory, 21 Апреля 2015

    Комментарии (7)
  7. Java / Говнокод #17995

    +84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static int getNumber() {
        try {
            return 7;
        } finally {
            return 43;
        }
    }

    Оказывается так делать можно...

    Qwertiy, 14 Апреля 2015

    Комментарии (182)
  8. Java / Говнокод #17979

    +85

    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
    private boolean isWrapper(Class<?> candidateWrapperClass) {
    
    		return candidateWrapperClass.equals(Byte.class) ? true
    				: candidateWrapperClass.equals(Boolean.class) ? true
    						: candidateWrapperClass.equals(Character.class) ? true
    								: candidateWrapperClass.equals(Short.class) ? true
    										: candidateWrapperClass
    												.equals(Integer.class) ? true
    												: candidateWrapperClass
    														.equals(Long.class) ? true
    														: candidateWrapperClass
    																.equals(Float.class) ? true
    																: candidateWrapperClass
    																		.equals(Double.class) ? true
    																		: false;
    	}

    Просто метод для проверки, является ли класс оберткой примитива.
    Отсюда https://github.com/mtedone/podam/blob/master/src/main/java/uk/co/jemos/podam/api/PodamFactoryImpl.java

    zazazazazaza, 12 Апреля 2015

    Комментарии (30)
  9. Java / Говнокод #17970

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    val field = HttpEntityWrapper.class.getDeclaredField("wrappedEntity");
    field.setAccessible(true);
    
    HttpEntity entity = response.getEntity();
    
    while (entity instanceof HttpEntityWrapper) {
    	entity = (HttpEntity) field.get(entity);
    }
    
    log.info("Response entity class: {}", entity.getClass().getName());

    Чего только не приходится делать ради отладки...

    someone, 10 Апреля 2015

    Комментарии (10)
  10. Java / Говнокод #17957

    +143

    1. 1
    for (val side: new boolean[] { false, true }) {

    someone, 08 Апреля 2015

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