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.<init>(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.