commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barry Barrios (JIRA)" <j...@apache.org>
Subject [jira] Created: (FILEUPLOAD-166) Outputting a file problems to the Server
Date Thu, 28 Aug 2008 18:34:44 GMT
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.


Mime
View raw message