Jawa / Говнокод #17749 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 carapuz, (Updated )

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

  • Ой-вэй! А фабрику конвертеров, которая бы сама распедаливала типы конвертируемых сущностей запилить не судьба?=(
    Ответить
  • А интерфейс с методом для конверта не по феншую? + нельзя будет кинуть сюда любой обжект с потолка
    Ответить
  • Мое первое задание, когда попал в НР было написать такой вот конвертер для какогото бухгалтерсого гомна которое перекачивалось из базы данных во флексовый клиент посредством GraniteDS. Рядом со мной в одном кубике сидел бывший рубист (который и Руби толком не знал, это у него просто отмазка такая была). И ему поручили сделать то же самое, только для другого сервиса (проект необъятный, всем работы хватит). Вобщем, он за пару часов накопипастил такого вот говна и ушел слушать лекцию по Хайбернейту.
    Я проебался с циклическим сериализатором с использованием рефлексии два дня. В итоге мне еще старший товарищ помогал его до ума доводить, а ПМ когда увидел результат сначала его удалил, и заявил что в Апачи утилитах такой уже есть, и я ему еще неделю потом доказывал, что тот, который в Апачи не умеет глубокие копии делать.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8