protected ShoppingItemPrice addShoppingItemPrice() throws Exception {
    long pk = ServiceTestUtil.nextLong();

    ShoppingItemPrice shoppingItemPrice = _persistence.create(pk);

    shoppingItemPrice.setItemId(ServiceTestUtil.nextLong());

    shoppingItemPrice.setMinQuantity(ServiceTestUtil.nextInt());

    shoppingItemPrice.setMaxQuantity(ServiceTestUtil.nextInt());

    shoppingItemPrice.setPrice(ServiceTestUtil.nextDouble());

    shoppingItemPrice.setDiscount(ServiceTestUtil.nextDouble());

    shoppingItemPrice.setTaxable(ServiceTestUtil.randomBoolean());

    shoppingItemPrice.setShipping(ServiceTestUtil.nextDouble());

    shoppingItemPrice.setUseShippingFormula(ServiceTestUtil.randomBoolean());

    shoppingItemPrice.setStatus(ServiceTestUtil.nextInt());

    _persistence.update(shoppingItemPrice);

    return shoppingItemPrice;
  }
  @Test
  public void testUpdateExisting() throws Exception {
    long pk = ServiceTestUtil.nextLong();

    ShoppingItemPrice newShoppingItemPrice = _persistence.create(pk);

    newShoppingItemPrice.setItemId(ServiceTestUtil.nextLong());

    newShoppingItemPrice.setMinQuantity(ServiceTestUtil.nextInt());

    newShoppingItemPrice.setMaxQuantity(ServiceTestUtil.nextInt());

    newShoppingItemPrice.setPrice(ServiceTestUtil.nextDouble());

    newShoppingItemPrice.setDiscount(ServiceTestUtil.nextDouble());

    newShoppingItemPrice.setTaxable(ServiceTestUtil.randomBoolean());

    newShoppingItemPrice.setShipping(ServiceTestUtil.nextDouble());

    newShoppingItemPrice.setUseShippingFormula(ServiceTestUtil.randomBoolean());

    newShoppingItemPrice.setStatus(ServiceTestUtil.nextInt());

    _persistence.update(newShoppingItemPrice);

    ShoppingItemPrice existingShoppingItemPrice =
        _persistence.findByPrimaryKey(newShoppingItemPrice.getPrimaryKey());

    Assert.assertEquals(
        existingShoppingItemPrice.getItemPriceId(), newShoppingItemPrice.getItemPriceId());
    Assert.assertEquals(existingShoppingItemPrice.getItemId(), newShoppingItemPrice.getItemId());
    Assert.assertEquals(
        existingShoppingItemPrice.getMinQuantity(), newShoppingItemPrice.getMinQuantity());
    Assert.assertEquals(
        existingShoppingItemPrice.getMaxQuantity(), newShoppingItemPrice.getMaxQuantity());
    AssertUtils.assertEquals(existingShoppingItemPrice.getPrice(), newShoppingItemPrice.getPrice());
    AssertUtils.assertEquals(
        existingShoppingItemPrice.getDiscount(), newShoppingItemPrice.getDiscount());
    Assert.assertEquals(existingShoppingItemPrice.getTaxable(), newShoppingItemPrice.getTaxable());
    AssertUtils.assertEquals(
        existingShoppingItemPrice.getShipping(), newShoppingItemPrice.getShipping());
    Assert.assertEquals(
        existingShoppingItemPrice.getUseShippingFormula(),
        newShoppingItemPrice.getUseShippingFormula());
    Assert.assertEquals(existingShoppingItemPrice.getStatus(), newShoppingItemPrice.getStatus());
  }
  protected void doAddBookItems(long userId, long groupId, long categoryId, String[] isbns)
      throws IOException, PortalException, SystemException {

    if (!AmazonRankingsUtil.isEnabled()) {
      throw new AmazonException("Amazon integration is not enabled");
    }

    String tmpDir = SystemProperties.get(SystemProperties.TMP_DIR);

    for (int i = 0; (i < isbns.length) && (i < 50); i++) {
      String isbn = isbns[i];

      AmazonRankings amazonRankings = AmazonRankingsUtil.getAmazonRankings(isbn);

      if (amazonRankings == null) {
        continue;
      }

      String name = amazonRankings.getProductName();
      String description = StringPool.BLANK;
      String properties = getBookProperties(amazonRankings);

      int minQuantity = 0;
      int maxQuantity = 0;
      double price = amazonRankings.getListPrice();
      double discount = 1 - amazonRankings.getOurPrice() / price;
      boolean taxable = true;
      double shipping = 0.0;
      boolean useShippingFormula = true;

      ShoppingItemPrice itemPrice = shoppingItemPricePersistence.create(0);

      itemPrice.setMinQuantity(minQuantity);
      itemPrice.setMaxQuantity(maxQuantity);
      itemPrice.setPrice(price);
      itemPrice.setDiscount(discount);
      itemPrice.setTaxable(taxable);
      itemPrice.setShipping(shipping);
      itemPrice.setUseShippingFormula(useShippingFormula);
      itemPrice.setStatus(ShoppingItemPriceConstants.STATUS_ACTIVE_DEFAULT);

      boolean requiresShipping = true;
      int stockQuantity = 0;
      boolean featured = false;
      Boolean sale = null;

      // Small image

      boolean smallImage = true;
      String smallImageURL = StringPool.BLANK;
      File smallImageFile =
          new File(
              tmpDir
                  + File.separatorChar
                  + PwdGenerator.getPassword(8, PwdGenerator.KEY2)
                  + ".jpg");

      byte[] smallImageBytes = HttpUtil.URLtoByteArray(amazonRankings.getSmallImageURL());

      if (smallImageBytes.length < 1024) {
        smallImage = false;
      } else {
        OutputStream os = new FileOutputStream(smallImageFile);

        os.write(smallImageBytes);

        os.close();
      }

      // Medium image

      boolean mediumImage = true;
      String mediumImageURL = StringPool.BLANK;
      File mediumImageFile =
          new File(
              tmpDir
                  + File.separatorChar
                  + PwdGenerator.getPassword(8, PwdGenerator.KEY2)
                  + ".jpg");

      byte[] mediumImageBytes = HttpUtil.URLtoByteArray(amazonRankings.getMediumImageURL());

      if (mediumImageBytes.length < 1024) {
        mediumImage = false;
      } else {
        OutputStream os = new FileOutputStream(mediumImageFile);

        os.write(mediumImageBytes);

        os.close();
      }

      // Large image

      boolean largeImage = true;
      String largeImageURL = StringPool.BLANK;
      File largeImageFile =
          new File(
              tmpDir
                  + File.separatorChar
                  + PwdGenerator.getPassword(8, PwdGenerator.KEY2)
                  + ".jpg");

      byte[] largeImageBytes = HttpUtil.URLtoByteArray(amazonRankings.getLargeImageURL());

      if (largeImageBytes.length < 1024) {
        largeImage = false;
      } else {
        OutputStream os = new FileOutputStream(largeImageFile);

        os.write(largeImageBytes);

        os.close();
      }

      List<ShoppingItemField> itemFields = new ArrayList<ShoppingItemField>();

      List<ShoppingItemPrice> itemPrices = new ArrayList<ShoppingItemPrice>();

      itemPrices.add(itemPrice);

      ServiceContext serviceContext = new ServiceContext();

      serviceContext.setAddGroupPermissions(true);
      serviceContext.setAddGuestPermissions(true);

      addItem(
          userId,
          groupId,
          categoryId,
          isbn,
          name,
          description,
          properties,
          StringPool.BLANK,
          requiresShipping,
          stockQuantity,
          featured,
          sale,
          smallImage,
          smallImageURL,
          smallImageFile,
          mediumImage,
          mediumImageURL,
          mediumImageFile,
          largeImage,
          largeImageURL,
          largeImageFile,
          itemFields,
          itemPrices,
          serviceContext);

      smallImageFile.delete();
      mediumImageFile.delete();
      largeImageFile.delete();
    }
  }