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

    +80

    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
    public Object convert(Object entity) {
            
            Object result = null;
            
            //TUser to UserDTO
            if(entity.getClass().isInstance(TUser.class)) {
                result = new UserDTO();
                ((UserDTO)result).setId(((TUser)entity).getId());
                ((UserDTO)result).setLogin(((TUser)entity).getLogin());
                ((UserDTO)result).setPassword(((TUser)entity).getPassword());
            } 
            
            //TState to StateDTO
            if(entity.getClass().isInstance(TState.class)) {
                result = new StateDTO();
                ((StateDTO)result).setId(((TState)entity).getId());
                ((StateDTO)result).setAlias(((TState)entity).getAlias());
                ((StateDTO)result).setCaption(((TState)entity).getCaption());
            } 
            
            //TSale to SaleDTO
            if(entity.getClass().isInstance(TSale.class)) {
                result = new SaleDTO();
                ((SaleDTO)result).setId(((TSale)entity).getId());
                ((SaleDTO)result).setBuyerInfo(((TSale)entity).getBuyerInfo());
                ((SaleDTO)result).setCreateDate(((TSale)entity).getCreateDate());
                ((SaleDTO)result).setNumber(((TSale)entity).getNumber());
                TState state = ((TSale)entity).getStateId();
                ((SaleDTO)result).setState((StateDTO)convert(state));
                TGoods goods = ((TSale)entity).getGoodsId();
                ((SaleDTO)result).setGoods((GoodsDTO)convert(goods));
            } 
            
            //TImage to ImageDTO
            if(entity.getClass().isInstance(TImage.class)) {
                result = new ImageDTO();
                ((ImageDTO)result).setId(((TImage)entity).getId());
                ((ImageDTO)result).setPath(((TImage)entity).getPath());
                TGoods goods = ((TImage)entity).getGoodsId();
                ((ImageDTO)result).setGoods((GoodsDTO)convert(goods));
            } 
            
            //TGoods to GoodsDTO
            if(entity.getClass().isInstance(TGoods.class)) {
                result = new GoodsDTO();
                ((GoodsDTO)result).setId(((TGoods)entity).getId());
                ((GoodsDTO)result).setName(((TGoods)entity).getName());
                ((GoodsDTO)result).setPrice(((TGoods)entity).getPrice());
                ((GoodsDTO)result).setDescription(((TGoods)entity).getDescription());
                TCategory category = ((TGoods)entity).getCategoryId();
                ((GoodsDTO)result).setCategory((CategoryDTO)convert(category));
            } 
            
            //TCategory to CategoryDTO
            if(entity.getClass().isInstance(TCategory.class)) {
                result = new CategoryDTO();
                ((CategoryDTO)result).setId(((TCategory)entity).getId());
                ((CategoryDTO)result).setDescription(((TCategory)entity).getDescription());
                ((CategoryDTO)result).setName(((TCategory)entity).getName());
            } 
            return result;
        }

    Выдавил из себя преобразование из Entity в DTO

    Запостил: carapuz, 08 Марта 2015

    Комментарии (10) RSS

    • Ой-вэй! А фабрику конвертеров, которая бы сама распедаливала типы конвертируемых сущностей запилить не судьба?=(
      Ответить
    • Что-то наподобие http://janistoolbox.typepad.com/blog/2010/01/designgeneric-type-converter.html
      Ответить
    • >TUser
      плюсанул
      Ответить
    • Вот это я понимаю: антипаттерн.
      Ответить
    • А интерфейс с методом для конверта не по феншую? + нельзя будет кинуть сюда любой обжект с потолка
      Ответить
    • Мое первое задание, когда попал в НР было написать такой вот конвертер для какогото бухгалтерсого гомна которое перекачивалось из базы данных во флексовый клиент посредством GraniteDS. Рядом со мной в одном кубике сидел бывший рубист (который и Руби толком не знал, это у него просто отмазка такая была). И ему поручили сделать то же самое, только для другого сервиса (проект необъятный, всем работы хватит). Вобщем, он за пару часов накопипастил такого вот говна и ушел слушать лекцию по Хайбернейту.
      Я проебался с циклическим сериализатором с использованием рефлексии два дня. В итоге мне еще старший товарищ помогал его до ума доводить, а ПМ когда увидел результат сначала его удалил, и заявил что в Апачи утилитах такой уже есть, и я ему еще неделю потом доказывал, что тот, который в Апачи не умеет глубокие копии делать.
      Ответить

    Добавить комментарий