Пример #1
0
  public static ArrayList<Appointment> xmlToAppoinmentList(String xml)
      throws ParserConfigurationException, SAXException, IOException, TimeException {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputSource is = new InputSource(new StringReader(xml));
    Document doc = db.parse(is);
    doc.getDocumentElement().normalize();

    String loc = "", roomnr = "13";

    ArrayList<Appointment> appointmentList = new ArrayList<Appointment>();
    NodeList nodeLst = doc.getElementsByTagName("appointment");

    for (int i = 0; i < nodeLst.getLength(); i++) {
      Appointment appointment = new Appointment();
      List<Participant> participants = new ArrayList<Participant>();
      Node nNode = nodeLst.item(i);
      if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element element = (Element) nNode;
        int month = Integer.parseInt(getTagValues("month", element));
        int year = Integer.parseInt(getTagValues("year", element));
        int dayInMonth = Integer.parseInt(getTagValues("dayInMonth", element));
        appointment.setDate(new Date(year, month, dayInMonth));
        String starttime = getTagValues("starttime", element);
        appointment.setStart(Time.parseTime(starttime));
        String endtime = getTagValues("endtime", element);
        appointment.setEnd(Time.parseTime(endtime));
        String subject = getTagValues("subject", element);
        appointment.setSubject(subject);
        int id = Integer.parseInt(getTagValues("id", element));
        appointment.setId(id);

        // Element has no attributes, which is why element.hasAttribute("..."); never works
        if (getTagValues("location", element) != null) {
          loc = getTagValues("location", element);
          appointment.setLocation(loc);
        }

        if (getTagValues("roomnr", element) != null) {
          roomnr = getTagValues("roomnr", element);
          appointment.setRoomNumber((Integer.parseInt(roomnr)));
        }

        String description = getTagValues("description", element);
        appointment.setDescription(description);
        String lusername = getTagValues("lusername", element);
        String lname = getTagValues("lname", element);
        Employee l = new Employee(lname, lusername);
        appointment.setLeader(l);
        participants.add(new Participant(l, State.ACCEPTED));

        //
        NodeList pList = doc.getElementsByTagName("participant" + i);
        System.out.println("pList lengde: " + pList.getLength());
        for (int j = 0; j < pList.getLength(); j++) {
          Node pNode = pList.item(j);
          if (pNode.getNodeType() == Node.ELEMENT_NODE) {
            Element pElement = (Element) pNode;
            String username = getTagValues("username", pElement);
            String name = getTagValues("name", pElement);
            String state = getTagValues("state", pElement);
            if (username.equals(lusername)) continue;
            participants.add(new Participant(new Employee(name, username), stringToState(state)));
          }
        }

        // Set leader as accepted
        for (Participant part : participants) {
          if (part.getEmployee().getUsername().equals(lusername)) part.setState(State.ACCEPTED);
        }
        appointment.setParticipants(participants);
        appointmentList.add(appointment);
      }
    }
    return appointmentList;
  }