Outputting a file problems to the Server
----------------------------------------

                 Key: FILEUPLOAD-166
                 URL: https://issues.apache.org/jira/browse/FILEUPLOAD-166
             Project: Commons FileUpload
          Issue Type: Task
    Affects Versions: 1.2
         Environment: Windows XP
            Reporter: Barry Barrios


My code ran smoothly when it was just outputting just the input text file.
I made further changes such that my input text file gets process and make an 
output file of the results. I use F5 to debug in Eclipse, and the problem lied 
in the CVRP class on the server side.
ERROR FROM SERVER:
<H1>HTTP Status 500 - </H1>
<HR noShade SIZE=1>

<P><B>type</B> Exception report</P>
<P><B>message</B> <U></U></P>
<P><B>description</B> <U>The server encountered an internal error () that 
prevented it from fulfilling this request.</U></P>
<P><B>exception</B> <PRE>java.lang.NumberFormatException: For input string: " 1"
 java.lang.NumberFormatException.forInputString(Unknown Source)
 java.lang.Integer.parseInt(Unknown Source)
 java.lang.Integer.parseInt(Unknown Source)
 de.herbstcampus.server.CVRPOutputs.DistanceMatrix(CVRPOutputs.java:53)
 de.herbstcampus.server.CVRPOutputs.&lt;init&gt;(CVRPOutputs.java:112)
 
de.herbstcampus.server.FileUploadServlet.getStringOutput(FileUploadServlet.java:67)
 de.herbstcampus.server.FileUploadServlet.doPost(FileUploadServlet.java:28)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:290)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
</PRE>
<P></P>
<P><B>note</B> <U>The full stack trace of the root cause is available in the 
Apache Tomcat/5.0.28 logs.</U></P>
<HR noShade SIZE=1>

<H3>Apache Tomcat/5.0.28</H3> 





Fragment where error lied:
public ArrayList<Waypoint[]> DistanceMatrix(String DM) {
        lines= DM.split("\n");
         for(int i=0; i<lines.length;i++)
         {
             if(lines[i].length()>1)
             {
                 //Using F5 parts was read perfectly
                 parts = lines[i].split(",");
                  //NodeId was changed correctly to 1 as the uploaded file was 
read correctly
                 NodeId = Integer.parseInt(parts[0]);
                 //Major problems: When Debugging I get 
ErrorReportValue.invoke(Request, ValveCOntext)
                 CustomerId = Integer.parseInt(parts[1]);
                 Name = parts[2];
                 Address = parts[3];
                 Postal_Code = parts[4];
                 x_coord = Double.parseDouble(parts[5]);
                 y_coord = Double.parseDouble(parts[6]);
                 Demand = Double.parseDouble(parts[7]);
                 Node aNode = new 
Node(NodeId,CustomerId,Name,Address,Postal_Code, x_coord, y_coord, Demand);
                nodesList.add(aNode);
                
             }
         }



-------------------------------
package de.herbstcampus.server;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;




public class FileUploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1156467149259077140L;

        protected void doPost(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException, 
IOException {
                
                
                FileItem uploadItem = getFileItem(request);
                String output = getStringOutput(new String(uploadItem.get()));
                /*
                 * Note this must be 'text/html', otherwise the 
onSubmitComplete(...)
                 * won't work properly and the browser may open a save dialog.
                 */
                response.setContentType("text/html");
                

                if (uploadItem == null) {
                        response.getWriter().write("No data");
                        return;
                } else {
                        response.getOutputStream().println(output);
                }
        }

        @SuppressWarnings("unchecked")
        private FileItem getFileItem(HttpServletRequest request) {
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);

                try {
                        List<FileItem> items = upload.parseRequest(request);
                        
                        for (FileItem item: items) {
                                if (!item.isFormField()
                                                && 
"uploadFormElement".equals(item.getFieldName())) {
                                        return item;
                                }
                        }
                } catch (FileUploadException e) {
                        return null;
                }
                
                return null;
        }
        private String getStringOutput(String input){
                String outputFileName="output.txt";
                CVRPOutputs outputs; // this object manages the outputs file
                outputs = new CVRPOutputs(outputFileName,input);
                outputs.printOutputFile();
                return outputFileName;
                
        }

}
--------------------------------------
//THIS IS THE CODE WHERE THE ERROR OF the SErVER STARTS TO HAPPEN
package de.herbstcampus.server;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import com.google.gwt.core.client.GWT;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.geocode.DirectionQueryOptions;
import com.google.gwt.maps.client.geocode.DirectionResults;
import com.google.gwt.maps.client.geocode.Directions;
import com.google.gwt.maps.client.geocode.DirectionsCallback;
import com.google.gwt.maps.client.geocode.DirectionsPanel;
import com.google.gwt.maps.client.geocode.StatusCodes;
import com.google.gwt.maps.client.geocode.Waypoint;
import com.google.gwt.user.client.Window;

public class CVRPOutputs
{
        
        /* Instance fields */
        
        private String outFile;
        private ArrayList<Waypoint[]> costsMatrix;
        private double[][] Distance1;
        private int ii;
        private int jj;
        private int iii;
        private int jjj;
        String[] parts ;
        String[] lines;
        int NodeId;
        int CustomerId;
        String Name;
        String Address;
        String Postal_Code;
        double x_coord;
        double y_coord;
        double Demand;
        ArrayList<Node> nodesList = new ArrayList<Node>();
        ArrayList<Edge> edgesList = new ArrayList<Edge>();
        ArrayList<Waypoint[]> Distance = null;
        
        /* Class constructor */
        
        public ArrayList<Waypoint[]> DistanceMatrix(String DM) {
                lines= DM.split("\n");
        for(int i=0; i<lines.length;i++)
        {
                if(lines[i].length()>1)
                {
                        parts = lines[i].split(",");
                        NodeId = Integer.parseInt(parts[0]);
                        CustomerId = Integer.parseInt(parts[1]);
                        Name = parts[2];
                        Address = parts[3];
                        Postal_Code = parts[4];
                        x_coord = Double.parseDouble(parts[5]);
                        y_coord = Double.parseDouble(parts[6]);
                        Demand = Double.parseDouble(parts[7]);
                        Node aNode = new 
Node(NodeId,CustomerId,Name,Address,Postal_Code, x_coord, y_coord, Demand);
                nodesList.add(aNode);
                        
                }
        }
     
         
         for(int i=0; i<nodesList.size(); i++)
                {               Node first= nodesList.get(i);
                        for(int j=1+i; j<nodesList.size(); j++)
                        { Node last = nodesList.get(j);
                         Waypoint from =  new Waypoint(first.getAddress());
                         Waypoint to = new Waypoint(last.getAddress());
                         Waypoint[] query= {from, to};
                        
                         Edge waypoint = new Edge(first,last,query);
                         
                         edgesList.add(waypoint);
                        
                        }
         
                }
         
         for(int i= 0; i<nodesList.size();i++)
         {      Node first= nodesList.get(i);
                 for(int j=1+i; j<nodesList.size();j++)
                 {Node last = nodesList.get(j);
         Waypoint from =  new Waypoint(first.getAddress());
         Waypoint to = new Waypoint(last.getAddress());
        
         Waypoint[] yreuq={to,from};
         Edge tniopyaw = new Edge(last,first,yreuq);
         edgesList.add(tniopyaw);
                 }
         }
         int dim =edgesList.size();
         
         Distance= new ArrayList<Waypoint[]>();
         for(int i=0; i<dim;i++)
         {
                 Distance.set(i, edgesList.get(i).getquery());
         }
        return Distance;
        }
        
        
        
        
        
        CVRPOutputs(String outputFileName,String DM)
        {
                outFile = outputFileName;
                costsMatrix = DistanceMatrix(DM);
                Distance1 = costsMatrix(costsMatrix);
                
        }
        @SuppressWarnings("null")
        public double[][] costsMatrix( ArrayList<Waypoint[]> costsMatrix){
                int index=0;
                
                int 
indey=(nodesList.size()*nodesList.size()-nodesList.size())/2;
                Waypoint[][][] distmat = null;
                MapWidget map= null;
                DirectionsPanel directionsPanel=null;
                DirectionQueryOptions opts = new DirectionQueryOptions(map, 
directionsPanel);
                
                for(int i=0; i<nodesList.size();i++)
                        {for(int j=1+i; j<nodesList.size();j++)
                        {
                                distmat[i][j]=costsMatrix.get(index);
                                index ++;
                        }
                        }
                for(int i=0; i<nodesList.size();i++)
                {
                        for(int j=1+i;j<nodesList.size();j++)
                        {
                                distmat[j][i]=costsMatrix.get(indey);
                                indey++;
                        }
                }
                for(ii=0; ii<nodesList.size();ii++)
                {
                        for(jj=0;jj<nodesList.size();jj++)
                        {
                                final int iiIndex = ii;
                                final int jjIndex = jj;
                                Directions.loadFromWaypoints(distmat[ii][jj], 
opts, new DirectionsCallback() {

                                      public void onFailure(int statusCode) {
                                        Window.alert("Failed to load 
directions: Status "
                                            + StatusCodes.getName(statusCode) + 
" " + statusCode);
                                      }

                                      public void onSuccess(DirectionResults 
result) {
                                        GWT.log("Successfully loaded 
directions.", null);
                                        
Distance1[iiIndex][jjIndex]=result.getDistance().inMeters();
                                      }
                                      
                                      
                                      
                                    });
                                
                        }
                }
                
                for(iii=0; iii<nodesList.size();iii++)
                {
                        for(jjj=0;jjj<nodesList.size();jjj++)
                        {
                                final int iiiIndex = iii;
                                final int jjjIndex = jjj;
                                Directions.loadFromWaypoints(distmat[jjj][iii], 
opts, new DirectionsCallback() {

                                      public void onFailure(int statusCode) {
                                        Window.alert("Failed to load 
directions: Status "
                                            + StatusCodes.getName(statusCode) + 
" " + statusCode);
                                      }

                                      public void onSuccess(DirectionResults 
result) {
                                        GWT.log("Successfully loaded 
directions.", null);
                                        
Distance1[jjjIndex][iiiIndex]=result.getDistance().inMeters();
                                      }
                                      
                                      
                                      
                                    });
                                
                        }
                }
                return Distance1;
        }
                

public void printOutputFile()
        {
                try
            {
                PrintWriter out = new PrintWriter(System.currentTimeMillis() + 
outFile);
                
out.println("***************************************************");
                out.println("*                                                 
*");
                out.println("*              RESULTS FROM SIMUROUTE PROJECT     
*");
                out.println("*                                                 
*");
                
out.println("***************************************************");
                
                out.println("\r\n");
                
out.println("***************************************************");
                out.println("*                 COSTS MATRIX                    
*");
                
out.println("***************************************************");
                out.println("\r\nCOSTS MATRIX:\n");
                for (int i = 0; i < nodesList.size(); i++)
                    for (int j = 0; j <= i; j++)
                        out.println(i + " " + j + " " + Distance1[i][j]);
                
                out.close();
            }
            catch (IOException exception)
            { 
                System.out.println("Error processing output file: " + 
exception);
            }           
                
        }
}




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to