Solved

Behaviour of Java List

Posted on 2014-01-25
3
600 Views
Last Modified: 2014-01-25
Hello there,

I have this requirement to show the amount with thousand separator. I have this POJO class with these two methods which I call according to my requirements
public Integer getTotalAmount() {
    return totalAmount;
}

public String getTotalAmountWithSeparator() {
    return String.format("%,d", totalAmount);
}

public void setTotalAmount(Integer totalAmount) {
    this.totalAmount = totalAmount;
}

Open in new window

now when I use this method getTotalAmountWithSeparator() in my another class which looks like this and I do a println to see if the amount is being shown properly(which it does).


List<SupplierOrderDetails> list = SupplierOrderDetailBussinessLogic.getInstance().getSupplierOrderDetailsFromsupplierOrder(supplierOrder);

      DataProviderBuilder dpb = new DataProviderBuilder();

    // add heading data
    dpb.add("so", supplierOrder.getSupplierOrderNo());
    dpb.add("sn", supplierOrder.getSupplier().getPerName());
    dpb.add("sec", supplierOrder.getSection().getAlternateName());
    dpb.add("od", supplierOrder.getSupplierOrderCreated().toString());

    // add table data
    dpb.addJavaObject(list, "data");

Open in new window


here is the actual method getSupplierOrderDetailsFromsupplierOrder(supplierOrder); which gets the data from the db.


@SuppressWarnings("unchecked")
public List<SupplierOrderDetails> getSupplierOrderDetailsFromsupplierOrder(SupplierOrder supplierOrderDetails){
    Session hibernateSession = HibernateUtills.getInstance().getHibernateSession();
    Criteria criteria = hibernateSession.createCriteria(SupplierOrderDetails.class);
    criteria.add(Restrictions.eq("supplierOrderID", supplierOrderDetails));
    List<SupplierOrderDetails> models = criteria.list();

    System.out.println(" models.size()     " + models.size());

    for (int i = 0; i < models.size(); i++)
    {
        if (models.get(i).getId() != null)
        {
            models.get(i).getProductID().getProductCode();
            models.get(i).getProductID().getBrandName();
            models.get(i).getPurchasePrice();
            models.get(i).getOrderQty();
            models.get(i).getTotalAmountWithSeparator();
            System.out.println(models.get(i).getProductID().getBrandName() + "  TotalAmount      " + models.get(i).getTotalAmountWithSeparator());

        }
        // System.out.println(models.get(i).getPurchasePrice());
    }
    return models;
} 

Open in new window

but when I do a println of the list data here,it does not show the separator in the amount why?????what am I doing wrong
dp = getSupplierOrderData(Long.parseLong(supplierOrderId));
System.out.println("DATA    "+dp.getString("data"));

Open in new window

0
Comment
Question by:zolf
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 27

Accepted Solution

by:
dpearson earned 500 total points
ID: 39809684
That getTotalAmountWithSeparator() method and the call to format looks correct to me.

So that suggests you're maybe not calling that method from the place in the code where you believe you are calling it.

Is the correct value being printed here:

            System.out.println(models.get(i).getProductID().getBrandName() + "  TotalAmount      " + models.get(i).getTotalAmountWithSeparator());

Open in new window


in your code?

If so, I'm not sure what you are expecting to print here:

System.out.println("DATA    "+dp.getString("data"));

Open in new window


I think you'd need to share the getString("data") method with us - which I don't believe is present?

Also that snippet seems to be calling a different method (getSupplierOrderData) instead of the one you posted above (getSupplierOrderDetailsFromsupplierOrder) so I'm finding it a it hard to piece together exactly where the problem is arising.

Doug
0
 

Author Comment

by:zolf
ID: 39809705
Doug :

thanks for your comments

this is another method which looks like this

private DataProvider getSupplierOrderData(Long supplierorderid)
      {
            SupplierOrder supplierOrder = SupplierOrderBussinessLogic.getInstance().getSupplierOrderById(supplierorderid);
            List<SupplierOrderDetails> list = SupplierOrderDetailBussinessLogic.getInstance().getSupplierOrderDetailsFromsupplierOrder(supplierOrder);

            System.out.println(" list.size()     " + list.size());
            

            for (SupplierOrderDetails supplierOrderDetails : list)
            {
                  Integer totalAmount = supplierOrderDetails.getTotalAmount();
                  System.out.println("totalAmount      !!!!      "+supplierOrderDetails.getTotalAmountWithSeparator());
                  Integer orderQty = supplierOrderDetails.getOrderQty();
                  Integer purchasePrice = supplierOrderDetails.getPurchasePrice();
                  String brandName = supplierOrderDetails.getProductID().getBrandName();
                  Integer productCode = supplierOrderDetails.getProductID().getProductCode();
                  String supplierEngName = supplierOrderDetails.getSupplierOrderID().getSupplier().getEngName();
                  String section = supplierOrderDetails.getSupplierOrderID().getSupplier().getSection().getName();
                  String supplierOrderNo = supplierOrderDetails.getSupplierOrderID().getSupplierOrderNo();
                  Date supplierOrderCreated = supplierOrderDetails.getSupplierOrderID().getSupplierOrderCreated();

                  System.out.println(" supplierOrderDetails     " + supplierOrderDetails.toString());
            }

            DataProviderBuilder dpb = new DataProviderBuilder();

            // add heading data
            dpb.add("so", supplierOrder.getSupplierOrderNo());
            dpb.add("sn", supplierOrder.getSupplier().getPerName());
            dpb.add("sec", supplierOrder.getSection().getAlternateName());

            dpb.add("od", supplierOrder.getSupplierOrderCreated().toString());

            // add table data
            dpb.addJavaObject(list, "data");

            return dpb.getDataProvider();
      }
0
 

Author Comment

by:zolf
ID: 39809706
your comments helped me to find the problem. thanks a lot
0

Featured Post

Why You Need a DevOps Toolchain

IT needs to deliver services with more agility and velocity. IT must roll out application features and innovations faster to keep up with customer demands, which is where a DevOps toolchain steps in. View the infographic to see why you need a DevOps toolchain.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
login form jsp example 2 72
jsp login check 12 67
Html Table Looping (part 2) 5 42
learn programming 8 95
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question