Пример #1
0
  public void modificarBombeig(int plataforma, int tipusBombeig) {

    // System.out.println("Modificar bombeig de plataforma");

    if ((tipusBombeig != PetroliUtils.CONST_TIPUS_BOMBEIG_A)
        && (tipusBombeig != PetroliUtils.CONST_TIPUS_BOMBEIG_B)
        && (tipusBombeig != PetroliUtils.CONST_TIPUS_BOMBEIG_C)
        && (tipusBombeig != PetroliUtils.CONST_TIPUS_BOMBEIG_D)
        && (tipusBombeig != PetroliUtils.CONST_TIPUS_BOMBEIG_NO)) return;
    // System.out.println("Actualitzem el petroli bombejat");

    PlataformaConectada aux = (PlataformaConectada) connexions[plataforma].clone();

    if (aux.getBombeig() == tipusBombeig) return;

    connexions[plataforma].setBombeig(tipusBombeig);
    connexions[plataforma].setCost(
        connexions[plataforma].getCost()
            - PetroliUtils.getCostBombeig(aux.getBombeig())
            + PetroliUtils.getCostBombeig(connexions[plataforma].getBombeig()));

    if (connexions[plataforma].getPetSortida() > connexions[plataforma].getBombeig())
      connexions[plataforma].setPetBombejat(connexions[plataforma].getBombeig());
    else connexions[plataforma].setPetBombejat(connexions[plataforma].getPetSortida());

    // Si és plataforma distribuidora, vol dir que bombejem més petroli final si es que en tenim
    if (plataformes[plataforma].isPlataformaDistribuidora()) {
      this.petroliTotal =
          this.petroliTotal - aux.getPetBombejat() + connexions[plataforma].getPetBombejat();
      this.costTotal = this.costTotal - aux.getCost() + connexions[plataforma].getCost();
    } else {
      if (!connexions[plataforma].isConnected()) return;

      connexions[plataforma].setCostTuberia(
          calculaCostTuberia(
              distancies[plataforma][(connexions[plataforma].getSortida())],
              connexions[plataforma].getPetBombejat()));
      int costPropagat =
          PetroliUtils.getCostBombeig(connexions[plataforma].getBombeig())
              - PetroliUtils.getCostBombeig(aux.getBombeig());
      costPropagat = costPropagat - aux.getCostTuberia() + connexions[plataforma].getCostTuberia();

      propagar(
          connexions[plataforma].getSortida(),
          connexions[plataforma].getPetBombejat() - aux.getPetBombejat(),
          costPropagat);
    }
  }
Пример #2
0
  private void propagar(int plataforma, int quantitat, int cost) {
    //   System.out.println("Propaguem a " + plataforma + " quantitat " + quantitat + " i cost " +
    // cost);
    PlataformaConectada pcAux = (PlataformaConectada) connexions[plataforma].clone();
    // Incrementem el petroli del que disposa la plataforma
    connexions[plataforma].setPetSortida(connexions[plataforma].getPetSortida() + quantitat);
    connexions[plataforma].setCost(pcAux.getCost() + cost);
    // Calculem el petroli que es bombejar� amb el nou canvi
    if (connexions[plataforma].getPetSortida() > connexions[plataforma].getBombeig())
      connexions[plataforma].setPetBombejat(connexions[plataforma].getBombeig());
    else connexions[plataforma].setPetBombejat(connexions[plataforma].getPetSortida());

    if (connexions[plataforma].isConnected()) {
      // System.out.println("Propagarem les diferencies");
      // System.out.println("LA tuberia abans costava " + pcAux.getCostTuberia());
      connexions[plataforma].setCostTuberia(
          calculaCostTuberia(
              distancies[plataforma][(connexions[plataforma].getSortida())],
              connexions[plataforma].getPetBombejat()));
      // System.out.println("I ara, " connexions[plataforma].getCostTuberia());
      cost +=
          PetroliUtils.getCostBombeig(connexions[plataforma].getBombeig())
              - PetroliUtils.getCostBombeig(pcAux.getBombeig());
      cost += connexions[plataforma].getCostTuberia() - pcAux.getCostTuberia();

      propagar(
          connexions[plataforma].getSortida(),
          connexions[plataforma].getPetBombejat() - pcAux.getPetBombejat(),
          cost);
    }

    if (plataformes[plataforma]
        .isPlataformaDistribuidora()) { // Si arriba m�s o menys petroli a una plataforma
      // Distribuidora SEMPRE surt a compte modificar el seu
      // bombeig
      this.costTotal += connexions[plataforma].getCost() - pcAux.getCost();
      this.petroliTotal += connexions[plataforma].getPetBombejat() - pcAux.getPetBombejat();
      if (connexions[plataforma].getPetSortida() <= PetroliUtils.CONST_TIPUS_BOMBEIG_NO)
        modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_NO);
      else if (connexions[plataforma].getPetSortida() <= PetroliUtils.CONST_TIPUS_BOMBEIG_NO)
        modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_NO);
      else if (connexions[plataforma].getPetSortida() <= PetroliUtils.CONST_TIPUS_BOMBEIG_A)
        modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_A);
      else if (connexions[plataforma].getPetSortida() <= PetroliUtils.CONST_TIPUS_BOMBEIG_B)
        modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_B);
      else if (connexions[plataforma].getPetSortida() <= PetroliUtils.CONST_TIPUS_BOMBEIG_C)
        modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_C);
      else modificarBombeig(plataforma, PetroliUtils.CONST_TIPUS_BOMBEIG_D);
    }

    return;
  }