GestioneMagazzino.java
Created with JBuilder
class GestioneMagazzino {
  private Articolo[] elencoArticoli;
  private int        numeroArticoli;
  private Ditta[]    elencoDitte;
  private int        numeroDitte;

  public GestioneMagazzino(int numeroMaxArticoli, int numeroMaxDitte) {
    elencoArticoli = new Articolo[numeroMaxArticoli];
    elencoDitte = new Ditta[numeroMaxDitte];
    numeroArticoli = numeroDitte = 0;
  }

  public boolean aggiungiArticolo(Articolo a) {
    if (numeroArticoli < elencoArticoli.length) {
      elencoArticoli[numeroArticoli] = a;
      ++numeroArticoli;
      return true;
    }
    return false;
  }

  public boolean aggiungiDitta(Ditta d) {
    if (numeroDitte < elencoDitte.length) {
      elencoDitte[numeroDitte] = d;
      ++numeroDitte;
      return true;
    }
    return false;
  }

  public boolean cancellaArticolo(String codice) {
    int posizione = ricercaArticoloInterno(codice);
    if (posizione >= 0) {
      elencoArticoli[posizione] = elencoArticoli[numeroArticoli - 1];
      --numeroArticoli;
      return true;
    } else {
      return false;
    }
  }

  public boolean cancellaDitta(String codice) {
    int posizione = ricercaDittaInterno(codice);
    if (posizione >= 0) {
      elencoDitte[posizione] = elencoDitte[numeroDitte - 1];
      --numeroDitte;
      return true;
    } else {
      return false;
    }
  }

  public Articolo cercaArticolo(String codice) {
    int posizione = ricercaArticoloInterno(codice);
    if (posizione >= 0) {
      return elencoArticoli[posizione];
    } else {
      return null;
    }
  }

  public Ditta cercaDitta(String codice) {
    int posizione = ricercaDittaInterno(codice);
    if (posizione >= 0) {
      return elencoDitte[posizione];
    } else {
      return null;
    }
  }

  public boolean eseguiAcquisto(Ditta fornitore, Articolo a, int quantità) {
    Ditta mioFornitore = controllaDitta(fornitore);
    Articolo mioArticolo = controllaArticolo(a);
    if ((mioFornitore != null) && (mioArticolo != null)) {
      mioFornitore.eseguiAcquisto(a,quantità);
      mioArticolo.aumentaQuantità(quantità);
      return true;
    } else {
      return false;
    }
  }

  public boolean eseguiVendita(Ditta cliente, Articolo a, int quantità) {
    Ditta mioCliente = controllaDitta(cliente);
    Articolo mioArticolo = cercaArticolo(a.restituisciCodice());
    if ((mioCliente != null) && (mioArticolo != null) &&
        (mioArticolo.restituisciQuantità() >= quantità)) {
      mioCliente.eseguiVendita(a,quantità);
      mioArticolo.diminuisciQuantità(quantità);
      return true;
    } else {
      return false;
    }
  }

  public boolean riscuotiImportoDa(Ditta cliente, double importo) {
    int posizione = ricercaDittaInterno(cliente.restituisciCodice());
    if (posizione >= 0) {
      elencoDitte[posizione].eseguiPagamento(importo);
      return true;
    } else {
      return false;
    }
  }

  public boolean pagaImportoA(Ditta fornitore, double importo) {
    int posizione = ricercaDittaInterno(fornitore.restituisciCodice());
    if (posizione >= 0) {
      elencoDitte[posizione].eseguiRiscossione(importo);
      return true;
    } else {
      return false;
    }
  }

  public double calcolaSituazioneFinanziaria() {
    double totale = 0;
    for( int i = 0; i < numeroDitte; ++i) {
      totale += elencoDitte[i].restituisciCompravenditeSospese();
    }
    return totale;
  }

  public double calcolaCompravenditeComplessive(Articolo a) {
    double totale = 0;
    for( int i = 0; i < numeroDitte; ++i) {
      totale += elencoDitte[i].numeroCompravendite(a);
    }
    return totale;
  }

  private Ditta controllaDitta(Ditta d) {
    int posizione = ricercaDittaInterno(d.restituisciCodice());
    if (posizione < 0) {
      if (aggiungiDitta(d)) {
        return elencoDitte[numeroDitte - 1];
      } else {
        return null;
      }
    } else {
      return elencoDitte[posizione];
    }
  }

  private Articolo controllaArticolo(Articolo a) {
    int posizione = ricercaArticoloInterno(a.restituisciCodice());
    if (posizione < 0) {
      if (aggiungiArticolo(a)) {
        return elencoArticoli[numeroArticoli - 1];
      } else {
        return null;
      }
    } else {
      return elencoArticoli[posizione];
    }
  }

  private int ricercaArticoloInterno( String codice ) {
    for (int i = 0; i < numeroArticoli; ++i) {
      if (codice.equals(elencoArticoli[i].restituisciCodice())) {
        return i;
      }
    }
    return -1;
  }

  private int ricercaDittaInterno( String codice ) {
    for (int i = 0; i < numeroDitte; ++i) {
      if (codice.equals(elencoDitte[i].restituisciCodice())) {
        return i;
      }
    }
    return -1;
  }


}

GestioneMagazzino.java
Created with JBuilder