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

    +145

    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
    private boolean save(Writer writer, int indent) {
      StringBuffer nlb = new StringBuffer("\n");
      for (int i = 0; i < indent; i++) {
       nlb.append("\t");
      }
      String nl = nlb.toString();
      Writer s = writer;
      try {
       if (this.isRoot()) {
        s.append("<?xml version=\"1.0\" encoding=\"");
        s.append(Charset.defaultCharset().displayName());
        s.append("\"?>");
       }
       s.append(nl);
       s.append("<");
       s.append(RegNode.EL_NODE);
       s.append(" ");
       s.append(RegNode.ATT_NAME);
       s.append("=\"");
       s.append(this.getName());
       s.append("\">");
       if (this.getData() != null) {
        s.append(nl);
        s.append("\t<");
        s.append(RegNode.EL_DATA);
        s.append(" ");
        s.append(RegNode.ATT_TYPE);
        s.append("=\"");
        s.append(RegNode.getTypeFor(this.getData()));
        s.append("\" ");
        s.append(RegNode.ATT_ENCODE);
        s.append("=\"");
        s.append(this.getMethod());
        s.append("\">");
        s.append(nl);
        s.append("\t\t");
        s.append(RegNode.encodeData(this.getData(), this.getMethod()));
        s.append(nl);
        s.append("\t</");
        s.append(RegNode.EL_DATA);
        s.append(">");
       }
       for (RegNode child : this.getChildren()) {
        s.append("\t");
        child.save(s, indent + 1);
       }
       s.append(nl);
       s.append("</");
       s.append(RegNode.EL_NODE);
       s.append(">");
       return true;
      } catch (IOException e) {
       e.printStackTrace();
      }
      return false;
     }

    не нужен нам ни DOM, ни SAX, ни JAXB!

    из класса, пытающегося реализовать себе "Windows Registry"-подобное древовидное хранилище.
    каюсь, лисапед тоже мой = )

    Запостил: Lure Of Chaos, 10 Января 2011

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

    • оптимизация, ёпта
      Ответить
    • А парсер для этого, или не было?

      алсо

      >На сайте проводится профилактика, поэтому гостям нельзя писать комментарии до 1 января 2011. Говнокод.ру благодарит Вас за понимание!
      >поэтому гостям нельзя писать комментарии до 1 января 2011
      >до 1 января 2011

      >благодарит Вас за понимание
      Ответить
      • парсер DOMовский
        public boolean load(Reader reader) {
          try {
           DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = factory.newDocumentBuilder();
           Document doc = builder.parse(new InputSource(reader));
           RegNode.RegNode(this, doc.getDocumentElement());
           return true;
          } catch (IOException e) {
           e.printStackTrace();
          } catch (ParserConfigurationException e) {
           e.printStackTrace();
          } catch (SAXException e) {
           e.printStackTrace();
          }
          return false;
         }
        Ответить
        • @SuppressWarnings("all")
           public static RegNode RegNode(RegNode regNode, Node el) {
            RegNode.RegNode(regNode, null,
              el.getAttributes().getNamedItem(RegNode.ATT_NAME).getNodeValue(), null);
            for (int i = 0; i < el.getChildNodes().getLength(); i++) {
             Node child = el.getChildNodes().item(i);
             if (RegNode.EL_DATA.equals(child.getNodeName())) {
              String encode = child.getAttributes().getNamedItem(RegNode.ATT_ENCODE)
                .getNodeValue();
              String type = child.getAttributes().getNamedItem(RegNode.ATT_TYPE)
                .getNodeValue();
              String data = child.getChildNodes().item(0).getNodeValue();
              regNode.setData(RegNode.decodeData(data.trim(), encode, type));
             }
             if (RegNode.EL_NODE.equals(child.getNodeName())) {
              RegNode newRegNode = new RegNode();
              RegNode.RegNode(newRegNode, child);
              newRegNode.setParent(regNode);
             }
            }
            return regNode;
           }
          Ответить
      • дада, аутпут доставляющий
        Ответить
    • зато сразу по православному со StringBuffer :))
      Ответить

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