Skip to content

Commit

Permalink
formatted demo file
Browse files Browse the repository at this point in the history
  • Loading branch information
Danial Farid authored and Danial Farid committed Nov 11, 2015
1 parent e74b967 commit 628b227
Showing 1 changed file with 122 additions and 121 deletions.
243 changes: 122 additions & 121 deletions demo/src/main/java/com/df/angularfileupload/FileUpload.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,140 +19,141 @@
import java.util.logging.Logger;

public class FileUpload extends HttpServlet {
private static final long serialVersionUID = -8244073279641189889L;
private final Logger log = Logger.getLogger(FileUpload.class.getName());
private static final long serialVersionUID = -8244073279641189889L;
private final Logger log = Logger.getLogger(FileUpload.class.getName());

class SizeEntry {
public int size;
public LocalDateTime time;
}
static Map<String, SizeEntry> sizeMap = new ConcurrentHashMap<>();
int counter;
class SizeEntry {
public int size;
public LocalDateTime time;
}

@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
try {
clearOldValuesInSizeMap();
static Map<String, SizeEntry> sizeMap = new ConcurrentHashMap<>();
int counter;

String ipAddress = req.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = req.getRemoteAddr();
}
if (req.getMethod().equalsIgnoreCase("GET")) {
if (req.getParameter("restart") != null) {
sizeMap.remove(ipAddress + req.getParameter("name"));
}
SizeEntry entry = sizeMap.get(ipAddress + req.getParameter("name"));
res.getWriter().write("{\"size\":" + (entry == null ? 0 : entry.size) + "}");
res.setContentType("application/json");
return;
}
req.setCharacterEncoding("utf-8");
if (!"OPTIONS".equalsIgnoreCase(req.getMethod()) && req.getParameter("errorCode") != null) {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
try {
clearOldValuesInSizeMap();

String ipAddress = req.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = req.getRemoteAddr();
}
if (req.getMethod().equalsIgnoreCase("GET")) {
if (req.getParameter("restart") != null) {
sizeMap.remove(ipAddress + req.getParameter("name"));
}
SizeEntry entry = sizeMap.get(ipAddress + req.getParameter("name"));
res.getWriter().write("{\"size\":" + (entry == null ? 0 : entry.size) + "}");
res.setContentType("application/json");
return;
}
req.setCharacterEncoding("utf-8");
if (!"OPTIONS".equalsIgnoreCase(req.getMethod()) && req.getParameter("errorCode") != null) {
// res.getWriter().write(req.getParameter("errorMessage"));
// res.getWriter().flush();
res.sendError(Integer.parseInt(req.getParameter("errorCode")), req.getParameter("errorMessage"));
return;
}
StringBuilder sb = new StringBuilder("{\"result\": [");
if (req.getHeader("Content-Type") != null
&& req.getHeader("Content-Type").startsWith("multipart/form-data")) {
ServletFileUpload upload = new ServletFileUpload();
res.sendError(Integer.parseInt(req.getParameter("errorCode")), req.getParameter("errorMessage"));
return;
}
StringBuilder sb = new StringBuilder("{\"result\": [");

if (req.getHeader("Content-Type") != null
&& req.getHeader("Content-Type").startsWith("multipart/form-data")) {
ServletFileUpload upload = new ServletFileUpload();

FileItemIterator iterator = upload.getItemIterator(req);
FileItemIterator iterator = upload.getItemIterator(req);

while (iterator.hasNext()) {
FileItemStream item = iterator.next();
sb.append("{");
sb.append("\"fieldName\":\"").append(item.getFieldName()).append("\",");
if (item.getName() != null) {
sb.append("\"name\":\"").append(item.getName()).append("\",");
}
if (item.getName() != null) {
sb.append("\"size\":\"").append(size(ipAddress + item.getName(), item.openStream())).append("\"");
} else {
sb.append("\"value\":\"").append(read(item.openStream()).replace("\"", "'")).append("\"");
}
sb.append("}");
if (iterator.hasNext()) {
sb.append(",");
}
}
} else {
sb.append("{\"size\":\"" + size(ipAddress, req.getInputStream()) + "\"}");
}
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
sb.append("{");
sb.append("\"fieldName\":\"").append(item.getFieldName()).append("\",");
if (item.getName() != null) {
sb.append("\"name\":\"").append(item.getName()).append("\",");
}
if (item.getName() != null) {
sb.append("\"size\":\"").append(size(ipAddress + item.getName(), item.openStream())).append("\"");
} else {
sb.append("\"value\":\"").append(read(item.openStream()).replace("\"", "'")).append("\"");
}
sb.append("}");
if (iterator.hasNext()) {
sb.append(",");
}
}
} else {
sb.append("{\"size\":\"" + size(ipAddress, req.getInputStream()) + "\"}");
}

sb.append("]");
sb.append(", \"requestHeaders\": {");
@SuppressWarnings("unchecked")
Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
sb.append("\"").append(header).append("\":\"").append(req.getHeader(header)).append("\"");
if (headerNames.hasMoreElements()) {
sb.append(",");
}
}
sb.append("}}");
res.setCharacterEncoding("utf-8");
res.getWriter().write(sb.toString());
} catch (Exception ex) {
throw new ServletException(ex);
}
}
sb.append("]");
sb.append(", \"requestHeaders\": {");
@SuppressWarnings("unchecked")
Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
sb.append("\"").append(header).append("\":\"").append(req.getHeader(header)).append("\"");
if (headerNames.hasMoreElements()) {
sb.append(",");
}
}
sb.append("}}");
res.setCharacterEncoding("utf-8");
res.getWriter().write(sb.toString());
} catch (Exception ex) {
throw new ServletException(ex);
}
}

private void clearOldValuesInSizeMap() {
if (counter++ == 100) {
for (Map.Entry<String, SizeEntry> entry : sizeMap.entrySet()) {
if (entry.getValue().time.isBefore(LocalDateTime.now().minusHours(1))) {
sizeMap.remove(entry.getKey());
}
}
counter = 0;
}
}
private void clearOldValuesInSizeMap() {
if (counter++ == 100) {
for (Map.Entry<String, SizeEntry> entry : sizeMap.entrySet()) {
if (entry.getValue().time.isBefore(LocalDateTime.now().minusHours(1))) {
sizeMap.remove(entry.getKey());
}
}
counter = 0;
}
}

protected int size(String key, InputStream stream) {
int length = sizeMap.get(key) == null ? 0 : sizeMap.get(key).size;
try {
byte[] buffer = new byte[200000];
int size;
while ((size = stream.read(buffer)) != -1) {
length += size;
SizeEntry entry = new SizeEntry();
entry.size = length;
entry.time = LocalDateTime.now();
sizeMap.put(key, entry);
protected int size(String key, InputStream stream) {
int length = sizeMap.get(key) == null ? 0 : sizeMap.get(key).size;
try {
byte[] buffer = new byte[200000];
int size;
while ((size = stream.read(buffer)) != -1) {
length += size;
SizeEntry entry = new SizeEntry();
entry.size = length;
entry.time = LocalDateTime.now();
sizeMap.put(key, entry);
// for (int i = 0; i < size; i++) {
// System.out.print((char) buffer[i]);
// }
}
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println(length);
return length;
}
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println(length);
return length;

}
}

protected String read(InputStream stream) {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
try {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
reader.close();
} catch (IOException e) {
//ignore
}
}
return sb.toString();
}
protected String read(InputStream stream) {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
try {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
reader.close();
} catch (IOException e) {
//ignore
}
}
return sb.toString();
}
}

0 comments on commit 628b227

Please sign in to comment.