Example #1
0
  public boolean guardarRecetaModoAvanzado(
      ArrayList<Ingrediente> ingredientes, ArrayList<Paso> pasos, String nombre) {
    // Create a factory

    File file = new File(rutaAlmacenamientoExterno + "recetas.xml");
    if (!file.exists()) crearArchivo("recetas.xml", "recetas");

    Document doc = getDoc("recetas.xml");
    if (doc != null) {

      // Compruebo que no hay ninguna lista con el mismo nombre
      NodeList recetas = doc.getElementsByTagName("receta");
      for (int i = 0; i < recetas.getLength(); i++) {
        Element current = (Element) recetas.item(i);
        if (current.getAttribute("nombre").equals(nombre)) return false;
      }
      Element receta = doc.createElement("receta");
      receta.setAttribute("nombre", nombre);

      // Creo y añado los ingredientes
      Element ingredientesRoot = doc.createElement("ingredientes");

      for (int i = 0; i < ingredientes.size(); i++) {
        Ingrediente ing = ingredientes.get(i);
        Element ingredienteChild = doc.createElement("ingrediente");
        ingredienteChild.setAttribute("nombre", ing.getNombre());
        ingredienteChild.setAttribute("cantidad", ing.getCantidad());
        ingredientesRoot.appendChild(ingredienteChild);
      }
      receta.appendChild(ingredientesRoot);

      // Creo y añado la elaboración

      Element elaboracionRoot = doc.createElement("elaboracion");
      elaboracionRoot.setAttribute("mode", "advanced");
      for (int i = 0; i < pasos.size(); i++) {
        Paso p = pasos.get(i);
        Element paso = doc.createElement("paso");
        paso.setAttribute("numero", p.getNumber());
        if (p.getPath() != null) {
          paso.setAttribute("path", p.getPath());
        }
        paso.setTextContent(p.getDescripcion());
        elaboracionRoot.appendChild(paso);
      }

      receta.appendChild(elaboracionRoot);

      // añado la receta al root element
      doc.getDocumentElement().appendChild(receta);

      return saveDoc("recetas.xml", doc);
    }

    return false;
  }