Annotation of edoc-applet/Upload.java, revision 1.1
1.1 ! rogo 1: //
! 2: // Upload.java
! 3: //
! 4: //
! 5: // Created by rogo on Wed Jan 29 2003.
! 6: // Copyright (c) 2001 __MyCompanyName__. All rights reserved.
! 7: //
! 8: import com.exploringxml.xml.*;
! 9: import java.io.*;
! 10: import java.util.*;
! 11: import java.net.*;
! 12: import javax.swing.*;
! 13: import java.awt.*;
! 14: import java.awt.event.*;
! 15: import java.security.*;
! 16:
! 17:
! 18:
! 19: public class Upload extends JApplet implements ActionListener
! 20: {
! 21: static File startFile;
! 22: static int count = 0;
! 23: static JFileChooser fileChooser;
! 24: static String url;
! 25: static long id = 0L;
! 26: static Hashtable connections=new Hashtable();
! 27: static String col = "11"; // Collection /Institute
! 28: static String grp ="141"; // Group or Bundle
! 29: static String ses ="";
! 30: static Bundle bundle;
! 31: static Bundle bundleRef;
! 32: JButton upload = new JButton("Upload");
! 33: JRadioButton proxy = new JRadioButton("Proxy");
! 34: static int fileCount = 0;
! 35: // static UploadInfo dialog = new UploadInfo();
! 36: static String mode = "";
! 37: static String destination = "";
! 38: static String proxyHost = "";
! 39: Upload uploader = this;
! 40: static boolean runningAsApplet=true;
! 41: static boolean debug=false;
! 42: static String rootNode = "edoc";
! 43: static MessageDigest md ;
! 44: static
! 45: {
! 46: try {
! 47: md = MessageDigest.getInstance("MD5");
! 48: } catch(Exception e) { e.printStackTrace();}
! 49: }
! 50: public Upload()
! 51: {
! 52: if(!runningAsApplet)
! 53: init();
! 54: }
! 55:
! 56: // start applet code
! 57: public void init()
! 58: {
! 59: this.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
! 60: this.getContentPane().add(upload);
! 61: this.getContentPane().add(proxy);
! 62: upload.addActionListener(this);
! 63: proxy.addActionListener(this);
! 64: id = System.currentTimeMillis();
! 65: Properties prop = System.getProperties();
! 66:
! 67: // prop.put("proxySet", "true");
! 68: // prop.put("http.proxyHost","proxy.unibe.ch");
! 69: // prop.put("proxyPort", "80");
! 70: // prop.put("java.protocol.handler.pkgs","HTTPClient");
! 71: fileChooser=null;
! 72: if(!runningAsApplet)
! 73: {
! 74: Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
! 75: Point p=new Point((screenSize.width-300)/2,(screenSize.height-180)/2);
! 76: JFrame testFrame=new JFrame();
! 77: testFrame.setTitle("Archimedes Applet");
! 78: testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
! 79: testFrame.getContentPane().add(this);
! 80: testFrame.setSize(300,180);
! 81: testFrame.setLocation(p);
! 82: testFrame.setVisible(true);
! 83: Console console = new Console(testFrame);
! 84: console.setVisible(true);
! 85: try
! 86: {
! 87: Connection con= new Connection(new URL("http://core.rz-berlin.mpg.de:80/edoctest/adm.epl"));
! 88: ses=con.getSessionID("name=root&passwd=edoctest&mode=verifylogin");
! 89: //("name=dwinter&passwd=e1nste1n&mode=verifylogin");
! 90: con.socket.close();
! 91: } catch(Exception exc) { }
! 92: } else
! 93: {
! 94: Console console = new Console(new JFrame());
! 95: console.setVisible(true);
! 96: ses= getParameter("ses");
! 97: col = getParameter("col").trim();
! 98: grp = getParameter("grp").trim();
! 99: bundleRef = getBundle(getCodeBase()+"oi.epl?mm=list&grp="+grp+"&col="+col);
! 100: getGenre();
! 101: //bundle=getBundle("http://core.rz-berlin.mpg.de/edoctest/oi.epl?mm=list&grp=136&col=11");
! 102:
! 103: }
! 104: }
! 105: public void actionPerformed(ActionEvent e)
! 106: {
! 107: if (e.getSource().equals(proxy))
! 108: {
! 109: proxyHost = JOptionPane.showInputDialog("Please enter proxy host (format host:port)!");
! 110: if (proxyHost != null)
! 111: {
! 112: if (proxyHost.length() == 0)
! 113: {
! 114: proxyHost = "";
! 115: Properties prop = System.getProperties();
! 116: prop.remove("proxySet");
! 117: prop.remove("http.proxyHost");
! 118: prop.remove("proxyPort");
! 119:
! 120: }
! 121: else
! 122: {
! 123: Properties prop = System.getProperties();
! 124: int index = proxyHost.indexOf(":");
! 125: String pHost = proxyHost.substring(0, (index > 0) ? index : proxyHost.length());
! 126: String pPort = (index > 0) ? proxyHost.substring(index + 1) : "80";
! 127:
! 128: prop.put("proxySet", "true");
! 129: prop.put("http.proxyHost",pHost);
! 130: prop.put("proxyPort", pPort);
! 131: }
! 132: System.out.println("pr "); // proxyHost="";
! 133: } else
! 134: proxyHost = "";
! 135: // proxy.setSelected(false);
! 136: }
! 137:
! 138: if (e.getActionCommand().equals("Upload"))
! 139: {
! 140:
! 141: //url=getParameter("url");
! 142: if(runningAsApplet)
! 143: set();
! 144: //System.out.println("url " + url); //+ " " + getCodeBase());
! 145: upload.setEnabled(false);
! 146: makeUpload();
! 147: upload.setEnabled(true);
! 148: }
! 149:
! 150: }
! 151: public void set()
! 152: {
! 153: col = getParameter("col").trim();
! 154: grp = getParameter("grp").trim();
! 155: ses = getParameter("ses").trim();
! 156: System.out.println("uploading to grp "+grp+" col "+col);
! 157: destination = "";
! 158: // destination = getParameter("destinationFolder");
! 159: if (destination == null)
! 160: destination = "";
! 161: // e.g."/rogo/servlet/RWServlet/"
! 162: URL appletURL = getCodeBase();
! 163: String serverInfo = appletURL.getHost() + ":" + appletURL.getPort();
! 164: // this.url = (servletURL.startsWith("http")) ? servletURL + url : "http://" + serverInfo + servletURL + url;
! 165: this.url=appletURL.toString();
! 166: Properties prop = System.getProperties();
! 167:
! 168: // prop.put("proxySet", "true");
! 169: // prop.put("http.proxyHost","proxy.unibe.ch");
! 170: // prop.put("proxyPort", "80");
! 171: // prop.put("java.protocol.handler.pkgs","HTTPClient");
! 172: Enumeration en = prop.propertyNames();
! 173: if(debug)
! 174: while (en.hasMoreElements())
! 175: {
! 176: String key = (String) en.nextElement();
! 177: System.out.println("key: " + key + " value: " + prop.get(key));
! 178:
! 179: }
! 180: System.out.println(url+"oi.epl?mm=list&grp="+grp+"&col="+col);
! 181:
! 182: }
! 183: public static void makeUpload()
! 184: {
! 185: try
! 186: {
! 187: if (fileChooser == null)
! 188: {
! 189: fileChooser = new JFileChooser();
! 190: // fileChooser.setFileSelectionMode(fileChooser.FILES_AND_DIRECTORIES);
! 191: fileChooser.setFileFilter(new XMLFilter());
! 192: fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
! 193: fileChooser.addActionListener(new ActionListener()
! 194: {
! 195: public void actionPerformed(ActionEvent e2)
! 196: {
! 197: System.out.println(e2.getActionCommand());
! 198: if (!e2.getActionCommand().toString().equals("ApproveSelection")) return;
! 199: // {
! 200:
! 201: Thread thread = new Thread()
! 202: {
! 203: public void run()
! 204: {
! 205: UploadInfo dialog = new UploadInfo();
! 206:
! 207: File startFile=new File(".");
! 208: try
! 209: {
! 210: dialog.thread=Thread.currentThread();
! 211: System.out.println("Called run with " + fileChooser.getSelectedFile());
! 212: dialog.setTitle("Upload Status Window");
! 213: dialog.setSize(400, 175);
! 214: dialog.setLocation(new java.awt.Point(150, 100));
! 215: Update update = new Update();
! 216: startFile = fileChooser.getSelectedFile(); //new File(fileChooser.getFile());
! 217: int fileCount = 0;
! 218: int count = 1;
! 219: long time = System.currentTimeMillis();
! 220: if( connections.get(startFile.getAbsolutePath())!=null)
! 221: throw new Error("Upload already running!");
! 222:
! 223: if (startFile.isDirectory())
! 224: {
! 225: fileCount = countFiles(startFile, fileCount);
! 226: System.out.println("Number of files to send: " + fileCount);
! 227: bundle=getBundle(startFile);
! 228: writeDirectory(startFile, startFile, fileCount, count, dialog, update);
! 229:
! 230: } else
! 231: {
! 232: fileCount = 1;
! 233: //writeStream(startFile, startFile, fileCount, count, dialog, update);
! 234: bundle = getBundle(startFile);
! 235: writeStream(startFile,bundle, dialog);
! 236:
! 237: }
! 238:
! 239: long time2 = System.currentTimeMillis();
! 240: System.out.println("needed " + (time2 - time) + " ms for " + count--);
! 241: dialog.setVisible(false);
! 242: if (startFile.isDirectory())
! 243: showDialog("Finished upload of " + startFile + " containing " + fileCount + " " + ((fileCount > 1) ? " files" : " file") + " in " + ((time2 - time) / 1000) + " seconds", "Finished Upload");
! 244: else
! 245: showDialog("Finished upload of " + startFile + " in " + ((time2 - time) / 1000) + " seconds", "Finished Upload");
! 246: connections.remove(startFile.getAbsolutePath());
! 247: } catch (Exception e)
! 248: {
! 249: dialog.setVisible(false);
! 250: ByteArrayOutputStream b = new ByteArrayOutputStream();
! 251: PrintStream stream = new PrintStream(b);
! 252: e.printStackTrace(stream);
! 253: connections.remove(startFile.getAbsolutePath());
! 254:
! 255: showErrorDialog(b.toString(), "Upload failed");
! 256: } catch (Error e8)
! 257: {
! 258: dialog.setVisible(false);
! 259: if( e8.toString().indexOf("Upload already running!")<0)
! 260: connections.remove(startFile.getAbsolutePath());
! 261: showErrorDialog(e8.toString(), "Upload failed");
! 262: }
! 263:
! 264: }
! 265: };
! 266: thread.setPriority(Thread.MIN_PRIORITY);
! 267: /* dialog = new UploadInfo();
! 268: dialog.setTitle("Upload Status Window");
! 269: dialog.setSize(400, 155);
! 270: dialog.setLocation(new java.awt.Point(150, 100));
! 271: */
! 272: thread.start();
! 273: // } // else
! 274: //System.exit(0);
! 275: }
! 276: });
! 277:
! 278: }
! 279: count = 1;
! 280: mode = "";
! 281: fileChooser.showDialog(new JFrame(), "Upload");
! 282:
! 283: } catch (Exception e)
! 284: {
! 285: System.out.println("Ha " + e);
! 286: }
! 287: }
! 288: private static int countFiles(File file, int fileCount)
! 289: {
! 290: if (file.isDirectory())
! 291: {
! 292: String[] files = file.list(new UploadFilter());
! 293:
! 294: for (int j = 0; j < files.length; ++j)
! 295: {
! 296: File f = new File(file + File.separator + files[j]);
! 297: if (f.isDirectory())
! 298: {
! 299: fileCount = countFiles(f, fileCount);
! 300: } else
! 301: fileCount = fileCount + 1;
! 302: }
! 303:
! 304: }
! 305: return fileCount;
! 306: }
! 307:
! 308: private static int writeDirectory(File file, File startFile, int fileCount, int count, UploadInfo dialog, Update update) throws Exception
! 309: {
! 310: if (file.isDirectory())
! 311: {
! 312: String[] files = file.list(new UploadFilter());
! 313: for (int j = 0; j < files.length; ++j)
! 314: {
! 315: File f = new File(file + File.separator + files[j]);
! 316: System.out.println(file + " " + f);
! 317:
! 318: if (f.isDirectory())
! 319: {
! 320: count = writeDirectory(f, startFile, fileCount, count, dialog, update);
! 321: } else
! 322: count = writeStream(f, startFile, fileCount, count, dialog, update);
! 323: }
! 324: }
! 325: return count;
! 326: }
! 327: private static int writeStream(File file, File startFile, int fileCount, int count, UploadInfo dialog, Update updateMode) throws Exception
! 328: {
! 329: // try
! 330: //{
! 331: String response = "", mode = "";
! 332: String path = file.getAbsolutePath();
! 333: String name = (startFile.isDirectory()) ? startFile.getName() + "/" + path.substring(startFile.getAbsolutePath().length() + 1) : file.getName();
! 334: if (destination != "")
! 335: name = (startFile.isDirectory()) ? destination + "/" + path.substring(startFile.getAbsolutePath().length() + 1) : destination + "/" + file.getName();
! 336:
! 337: System.out.println("hi " + name + " " + destination + " " + startFile.getName());
! 338: FileInputStream f = new FileInputStream(file.getAbsolutePath());
! 339: int length = f.available();
! 340: int readCount = 0;
! 341: byte[] b = (length > 512000) ? new byte[512000] : new byte[length];
! 342: System.out.println(file.getName() + " " + ((length > 1000000) ? (length / 1048576) + " MByte" : length + " Bytes"));
! 343: String fileName = file.getName() + " " + ((length > 1000000) ? (length / 1048576) + " MByte" : length + " Bytes");
! 344: dialog.title.setText("Uploading " + startFile);
! 345: dialog.progress.setValue(0);
! 346: dialog.file.setText(fileName);
! 347: dialog.status.setText(count + " of " + fileCount + ((fileCount > 1) ? " files" : " file"));
! 348: //dialog.pack();
! 349: //dialog.validate();
! 350: if (dialog.isVisible())
! 351: dialog.repaint();
! 352: else
! 353: dialog.show();
! 354: /*
! 355: URL httpCon = new URL(url + getSHA((id + "").getBytes()) + "/" + convertUml(name) + "?id=" + getSHA((id + "").getBytes()) + "&count=" + count + "&nf=" + fileCount + "&md5=" + md5 + "&mode=" + mode);
! 356: Connection con = null;
! 357: con=(Connection)connections.get(startFile.getAbsolutePath());
! 358: if(con==null)
! 359: {
! 360: con=new Connection(httpCon);
! 361: connections.put(startFile.getAbsolutePath(),con);
! 362: } else
! 363: con.url=httpCon;
! 364: OutputStream mout = con.out; //con.getOutputStream();
! 365: */
! 366: // dialog.progress.setValue((int) (((double) readCount / (double) length) * 100.0));
! 367: // count = filecount
! 368: Connection conPost = null;
! 369: System.out.println("hostURL "+url);
! 370: if(!runningAsApplet)
! 371: conPost=new Connection( new URL("http://core.rz-berlin.mpg.de/edoctest/oi.epl"));
! 372: else
! 373: conPost=new Connection( new URL(url+"/oi.epl"));
! 374:
! 375: // new URL("http://localhost:8080/examples/servlet/rogo/"));
! 376: conPost.ses=ses;
! 377: conPost.dialog=dialog;
! 378: Bundle.Document doc=(Bundle.Document)bundle.documents.get(count);
! 379: System.out.println(doc.title);
! 380: conPost.post(file,"new",doc.docID+"",doc.title,doc.locator,doc.comment);
! 381:
! 382: // conPost.post(new File("./test2.jpg"),picture.elementAt(i).toString(),artist.elementAt(i).toString(),source.elementAt(i).
! 383: System.out.println(getMD5(md));
! 384: dialog.progress.setValue(100);
! 385: count++;
! 386: return count;
! 387: }
! 388: private static int writeStream(File startFile,Bundle bundle, UploadInfo dialog) throws Exception
! 389: {
! 390: int count = 1,fileCount = bundle.documents.size();
! 391: int index = startFile.getAbsolutePath().lastIndexOf(File.separator);
! 392:
! 393:
! 394: String path =startFile.getAbsolutePath().substring(0,index+1);
! 395: System.out.println(path);mode = "new";
! 396: boolean newVersionforAll = false;
! 397: Vector list=new Vector();
! 398: for(int k=0;k<fileCount;++k)
! 399: {
! 400: Bundle.Document doc = (Bundle.Document)bundle.documents.elementAt(k);
! 401: if(bundleRef.docsLocator.get(doc.locator)!=null)
! 402: list.addElement(doc.fileName);
! 403: }
! 404:
! 405: for(int k=0;k<fileCount;++k)
! 406: {
! 407: Bundle.Document doc = (Bundle.Document)bundle.documents.elementAt(k);
! 408:
! 409: String response = "";
! 410: dialog.title.setText("Uploading " + path+doc.fileName);
! 411: dialog.progress.setValue(0);
! 412: String fileName = doc.fileName+ " " + ((doc.size > 1000000) ? (doc.size / 1048576) + " MByte" : doc.size + " Bytes");
! 413: dialog.file.setText(fileName);
! 414: dialog.status.setText(count + " of " + fileCount + ((fileCount > 1) ? " files" : " file"));
! 415: //dialog.pack();
! 416: //dialog.validate();
! 417: if (dialog.isVisible())
! 418: dialog.repaint();
! 419: else
! 420: dialog.show();
! 421:
! 422: if(bundleRef.docsLocator.get(doc.locator)!=null)
! 423: {
! 424: if(!newVersionforAll)
! 425: {
! 426: Object[] options = new Object[] { "New Version for this file","New Version for all files", "Skip file" };
! 427:
! 428: int option = showDialog("Warning "+doc.locator+" exists! \n What do you want to do?", "Destination exists!", options,list);
! 429: if(option == 0) mode ="old";
! 430: if(option == 1)
! 431: {
! 432: mode ="old";
! 433: newVersionforAll=true;
! 434: }
! 435: if(option == 2)
! 436: {
! 437: count++;
! 438: System.out.println("Heh Document exists!"+ doc);
! 439: System.out.println("Skipping");
! 440: continue;
! 441: }
! 442: }
! 443: Bundle.Document refDoc= (Bundle.Document) bundleRef.docsLocator.get(doc.locator);
! 444: doc.docID=refDoc.docID;
! 445: //count++;
! 446: // System.out.println("Heh Document exists!"+ doc);
! 447: // System.out.println("Skipping");
! 448: // continue;
! 449: } else mode ="new";
! 450: Connection conPost = null;
! 451: if(!runningAsApplet)
! 452: conPost=new Connection( new URL("http://core.rz-berlin.mpg.de/edoctest/oi.epl"));
! 453: else
! 454: conPost=new Connection( new URL(url+"/oi.epl"));
! 455:
! 456: // new URL("http://localhost:8080/examples/servlet/rogo/"));
! 457: conPost.ses=ses;
! 458: conPost.dialog=dialog;
! 459: conPost.post(path,doc,mode);
! 460: String md5=getMD5(md);
! 461: System.out.println("MD5 is equal ?"+doc.md5cs.equals(md5));
! 462: if(!doc.md5cs.equals(md5))
! 463: {
! 464: Object[] options = { "Retry", "Cancel" };
! 465: int option = showDialog("Transfer failed! \n What do you want to do?", "Transfer failed ", options);
! 466: if(option == 0)
! 467: {
! 468: if(!runningAsApplet)
! 469: conPost=new Connection( new URL("http://core.rz-berlin.mpg.de/edoctest/oi.epl"));
! 470: else
! 471: conPost=new Connection(new URL(url+"/oi.epl"));
! 472: conPost.ses=ses;
! 473: conPost.dialog=dialog;
! 474: conPost.post(path,doc,mode);
! 475: md5=getMD5(md);
! 476: }
! 477: } // System.out.println(getMD5(md));
! 478: dialog.progress.setValue(100);
! 479: count++;
! 480: }
! 481: return count;
! 482: }
! 483:
! 484: public static String getMD5(MessageDigest md) throws Exception
! 485: {
! 486: byte[] bytes = md.digest();
! 487: // System.out.println("digest " + bytes.length);
! 488: StringBuffer sb = new StringBuffer();
! 489: int decValue;
! 490: for (int i = 0; i < bytes.length; i++)
! 491: {
! 492: String hexVal = Integer.toHexString(bytes[i] & 0xFF);
! 493: if (hexVal.length() == 1)
! 494: hexVal = "0" + hexVal; // put a leading zero
! 495: sb.append(hexVal);
! 496: }
! 497: return sb.toString();
! 498: }
! 499: public static String getSHA(byte[] b) throws Exception
! 500: {
! 501: MessageDigest md = MessageDigest.getInstance("SHA");
! 502: md.update(b, 0, b.length);
! 503: //System.out.println("digest");
! 504: byte[] bytes = md.digest();
! 505: StringBuffer sb = new StringBuffer();
! 506: int decValue;
! 507: for (int i = 0; i < bytes.length; i++)
! 508: {
! 509: String hexVal = Integer.toHexString(bytes[i] & 0xFF);
! 510: if (hexVal.length() == 1)
! 511: hexVal = "0" + hexVal; // put a leading zero
! 512: sb.append(hexVal);
! 513: }
! 514:
! 515: return sb.toString();
! 516: }
! 517:
! 518: public static String convertUml(String newName)
! 519: {
! 520: StringBuffer alterMe = new StringBuffer(newName.trim());
! 521: int length = alterMe.length();
! 522: int j = 0;
! 523: while (j < length)
! 524: { //if(Character.isSpaceChar(alterMe.charAt(j)))
! 525: // alterMe.setCharAt(j,'_');
! 526: if (alterMe.charAt(j) == ' ')
! 527: {
! 528: alterMe.setCharAt(j, '%');
! 529: alterMe.insert(j + 1, "20");
! 530: length = length + 2;
! 531: }
! 532: /* if(Character.isSpaceChar(alterMe.charAt(j))
! 533: alterMe.setCharAt(j,'_');
! 534: */
! 535: ++j;
! 536: }
! 537: return alterMe.toString();
! 538: }
! 539: public static class UploadInfo extends JDialog
! 540: {
! 541: JLabel file = new JLabel(" ");
! 542: JLabel status = new JLabel(" ");
! 543: JLabel title = new JLabel(" ");
! 544: JPanel content = new JPanel();
! 545: JPanel titlePanel = new JPanel();
! 546: JPanel labelPanel = new JPanel();
! 547: JPanel statusPanel = new JPanel();
! 548: JPanel buttonPanel = new JPanel();
! 549:
! 550: JProgressBar progress = new JProgressBar();
! 551: JButton cancel = new JButton("Cancel");
! 552: Thread thread;
! 553: public UploadInfo()
! 554: {
! 555:
! 556: content = new JPanel(true);
! 557: //content.setBorder(BorderFactory.createRaisedBevelBorder());
! 558: content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
! 559: title = new JLabel("Uploading " + startFile);
! 560: title.setHorizontalTextPosition(title.CENTER);
! 561: titlePanel.add(title);
! 562: buttonPanel.add(cancel);
! 563: // content.add(titlePanel);
! 564: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
! 565: content.add(labelPanel);
! 566: content.add(new JLabel(""));
! 567: content.add(progress);
! 568: content.add(statusPanel);
! 569: content.add(buttonPanel);
! 570: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
! 571: labelPanel.add(file);
! 572: statusPanel.add(status);
! 573: getContentPane().add(titlePanel, "North");
! 574: getContentPane().add(content, "Center");
! 575: cancel.addActionListener(new ActionListener()
! 576: {
! 577: public void actionPerformed(ActionEvent e)
! 578: {
! 579: setVisible(false);
! 580: thread.stop();
! 581: }
! 582:
! 583: });
! 584: pack();
! 585:
! 586: }
! 587:
! 588: }
! 589: static class Update
! 590: {
! 591: boolean value = false;
! 592: public Update()
! 593: {
! 594: value = false;
! 595: }
! 596: }
! 597: public static int showDialog(String message, String title, Object[] options)
! 598: {
! 599: int option = JOptionPane.showOptionDialog(null, message, title, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
! 600: return option;
! 601:
! 602: }
! 603: public static int showDialog(String message, String title, Object[] options,Vector fileList)
! 604: {
! 605: JOptionPane pane = new JOptionPane( message, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
! 606: pane.setMessageType(JOptionPane.WARNING_MESSAGE); // Configure
! 607: JDialog dialog = pane.createDialog(null, title);
! 608: JList list=null;
! 609: if(fileList==null)
! 610: list= new JList(new String[]{"click","here","test","bla","world","hello"});
! 611: else list = new JList(fileList);
! 612: JScrollPane scpane = new JScrollPane(list);
! 613: scpane.setPreferredSize(new Dimension(100,80));
! 614: JLabel label= new JLabel("Files : ");
! 615: label.setPreferredSize(new Dimension(50,80));
! 616: JPanel panel = new JPanel();
! 617: panel.add(label);
! 618: panel.add(scpane);
! 619: dialog.getContentPane().add(panel,"East");
! 620: dialog.pack();
! 621: dialog.show();
! 622: Object selectedValue = pane.getValue();
! 623: if(selectedValue == null)
! 624: return 2;
! 625: //If there is not an array of option buttons:
! 626: if(options == null) {
! 627: if(selectedValue instanceof Integer)
! 628: return ((Integer)selectedValue).intValue();
! 629: return 2;
! 630: }
! 631: //If there is an array of option buttons:
! 632: for(int counter = 0, maxCounter = options.length;
! 633: counter < maxCounter; counter++) {
! 634: if(options[counter].equals(selectedValue))
! 635: return counter;
! 636: }
! 637: return 2;
! 638:
! 639: }
! 640:
! 641: public static void showDialog(String message, String title)
! 642: {
! 643: JOptionPane.showMessageDialog(null, message, title, JOptionPane.PLAIN_MESSAGE);
! 644:
! 645: }
! 646: public static void showErrorDialog(String message, String title)
! 647: {
! 648: JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
! 649: }
! 650:
! 651:
! 652:
! 653: // end applet code
! 654:
! 655: public static StringBuffer readChunked(Connection conTest) throws Exception
! 656: {
! 657: InputStream r= conTest.in;
! 658: //InputStreamReader r= new InputStreamReader(new FileInputStream("FMPro.xml"),"UTF-8");
! 659: //InputStreamReader r=// new InputStreamReader(new URL(fileMakerTest).openStream(),"UTF-8");
! 660: //new InputStreamReader(conTest.in,"UTF-8");
! 661: //while(conTest.in.available()==0);
! 662: //u.openStream();
! 663: //InputStream r = new InputStream(f);
! 664: StringBuffer sb = new StringBuffer();
! 665: int c,countC=0,limit=conTest.in.available();
! 666: // r.skip(211);
! 667: String response = conTest.getResponseMessage();
! 668: String lowerCase= response.toLowerCase();
! 669: int index =lowerCase.indexOf("charset");
! 670: int index2 =lowerCase.indexOf("=",index);
! 671: int index3 =lowerCase.indexOf("\r",index2);
! 672: String charset=(index>0) ? response.substring(index2+1,index3):"";
! 673: charset="";//charset.toUpperCase();
! 674: System.err.println(response);
! 675: if(lowerCase.indexOf("chunked")<0)
! 676: {
! 677: ByteArrayOutputStream local=new ByteArrayOutputStream();
! 678: while(r.available()==0);
! 679: System.err.println(r.available());
! 680: while ((c = r.read()) != -1)
! 681: {
! 682: byte b=(byte)c;
! 683: local.write(b);
! 684: if(debug)
! 685: System.out.print((char)c);
! 686: }
! 687: if(charset!="")
! 688: sb.append(local.toString(charset));
! 689: else
! 690: sb.append(local.toString());
! 691: if(debug)
! 692: System.out.print(sb);
! 693: return sb;
! 694: }
! 695:
! 696: // read chunk size
! 697: while ((c = r.read()) != -1)
! 698: {
! 699: ++countC;
! 700: char ch=(char)c;
! 701:
! 702: if(Character.digit(ch, 16) != -1)
! 703: sb.append((char)c);
! 704: if(ch=='\r')
! 705: {
! 706: ch=(char)r.read();
! 707: if( ch=='\n')
! 708: break;
! 709: }
! 710: // System.out.print((char)c);
! 711: }
! 712: int bufSize=Integer.parseInt(sb.toString().trim(), 16);
! 713:
! 714: System.err.println("chunk size "+Integer.parseInt(sb.toString().trim(), 16)+" bytes"+" limit "+limit);
! 715: //sb.append((char)r.read());
! 716: // sb.append((char)r.read());
! 717: sb=new StringBuffer();//.delete(0,sb.length());
! 718: byte[] b=new byte[bufSize];
! 719: countC=0;
! 720: StringBuffer localBuff=new StringBuffer();
! 721: while (true)
! 722: {
! 723: // sb.append(" new Chunk "+r.available()+" \r\n ");
! 724: int readCount = 0;
! 725: int available = 0;
! 726: int readSize = b.length; int loop=0;
! 727: while (readCount < bufSize)
! 728: {
! 729: available=r.available();
! 730:
! 731: if(available>=bufSize)
! 732: readSize=bufSize;
! 733: else
! 734: readSize=available;
! 735:
! 736: if(readCount + readSize > bufSize)
! 737: {
! 738: readSize = r.read(b, readCount, bufSize - readCount); // mout.flush();
! 739:
! 740: }
! 741: else
! 742: {
! 743: readSize = r.read(b,readCount,readSize);
! 744: }
! 745: if(loop>=200) throw new Error("Connection timed out");
! 746: if(readSize==0)
! 747: {
! 748: long time = System.currentTimeMillis();
! 749: while(System.currentTimeMillis()-time<100);
! 750: } else loop=0;
! 751:
! 752: if(debug)
! 753: System.out.println(++loop+" read "+readCount+" bytes"+" readSize "+readSize);
! 754: readCount+=readSize;
! 755:
! 756: }
! 757:
! 758:
! 759: //while(r.available()<bufSize); // critical if connection closed
! 760: // r.read(b,0,bufSize);
! 761: //System.err.println(r.available());
! 762: r.read();r.read();
! 763: if(charset!="")
! 764: sb.append(new String(b,0,bufSize,charset));
! 765: else
! 766: sb.append(new String(b,0,bufSize));
! 767: if(debug)
! 768: System.out.println(new String(b,0,bufSize));
! 769: while ( (c = r.read()) != -1)
! 770: {
! 771: // ++countC;
! 772: char ch=(char)c;
! 773: //System.err.println("read lf "+(ch=='\r')+" or cr "+( ch=='\n')+" "+(Character.digit(ch, 16) == -1));
! 774: //if((ch!='\r')&&( ch!='\n')) System.err.println("read ch "+" "+ch+" "+Character.isSpace(ch));
! 775: if(Character.digit(ch, 16) != -1)
! 776: localBuff.append(ch);
! 777: if(ch=='\r')
! 778: {
! 779: ch=(char)r.read();
! 780: if( ch=='\n')
! 781: break;
! 782: }
! 783: }
! 784: if(debug)
! 785: System.out.println("chunk size "+localBuff);
! 786: if(localBuff.length()>0)
! 787: {
! 788: // System.err.println("new chunk size "+Integer.parseInt(localBuff.toString().trim(), 16)+" bytes");
! 789: // System.err.println((char)r.read());
! 790: bufSize=Integer.parseInt(localBuff.toString().trim(), 16);
! 791: //localBuff.delete(0,localBuff.length());
! 792: localBuff=new StringBuffer();
! 793: } // else bufSize=0;
! 794: ++countC;
! 795: // sb.append("new Chunk"+r.available()+"\r\n ");
! 796: if(bufSize==0)//(bufSize))
! 797: break;
! 798: // System.err.println(" in Chunk "+bufSize+" buffers used "+(countC)+" \r\n ");
! 799: // // System.out.print((char)c);
! 800: }
! 801: // System.out.println(sb);
! 802: return sb;
! 803: }
! 804: public static Hashtable getMetaData(String url)
! 805: {
! 806: Hashtable data=new Hashtable();
! 807: Vector artist=new Vector();
! 808: Vector picture=new Vector();
! 809: Vector idnr = new Vector();
! 810: Vector source = new Vector();
! 811: data.put("artist",artist);
! 812: data.put("picture",picture);
! 813: data.put("IDNR",idnr);
! 814: data.put("source",source);
! 815: try
! 816: {
! 817: String fileMakerTest="http://localhost/FMRes/FMPro?-db=Bildarchiv%20Daston&-layID=69&-token=25&-max=1000&-format=-dso_xml&-mode=browse&-findall";
! 818: String fileMakerTest2="http://localhost/FMRes/FMPro?-db=bildarchiv%20daston&-layid=1&-format=-dso_xml&-max=899&-skip=6&-token.0=25&-mode=browse&-lop=and&-find";
! 819: //Connection con= new Connection(new URL("http://core.rz-berlin.mpg.de:80/edoctest/adm.epl"));
! 820: //String ses=con.getSessionID("name=root&passwd=&mode=verifylogin");
! 821:
! 822: Connection conTest=new Connection(new URL(fileMakerTest));//new URL(url));
! 823: // conTest.ses=ses;
! 824: conTest.get();
! 825: StringBuffer sb=readChunked(conTest);
! 826: if(debug)
! 827: System.out.println("file "+sb);
! 828: // parse string and build document tree
! 829: Node root = new Xparse().parse(sb.toString());
! 830: Vector contents=root.index.v;
! 831: for (int i=0;i<contents.size();++i)
! 832: {
! 833: Node n=(Node)contents.elementAt(i);
! 834: if(n.type.equals("element"))
! 835: {
! 836: // System.out.println("tag "+n.name+" with contents ");
! 837: // System.out.println(n.getCharacters());
! 838: if(n.name.indexOf("artist")>=0) artist.addElement(n.getCharacters());
! 839: if(n.name.indexOf("picture")>=0) picture.addElement(n.getCharacters());
! 840: if(n.name.indexOf("IDNR")>=0) idnr.addElement(n.getCharacters());
! 841: if(n.name.indexOf("source")>=0) source.addElement(n.getCharacters());
! 842: //contents=n.contents.v;i=0;
! 843: }
! 844: }
! 845: }catch(Exception e8) { e8.printStackTrace(); }
! 846: return data;
! 847: }
! 848:
! 849: public static Bundle getBundle(File f)
! 850: {
! 851: File xmlFile=null;
! 852: Bundle bundle=new Bundle();
! 853: if(f.isDirectory())
! 854: {
! 855: String[] files=f.list();
! 856: for(int j=0;j<files.length;++j)
! 857: {
! 858: if(files[j].endsWith("xml"))
! 859: {
! 860: xmlFile=new File(f.getAbsolutePath()+"/"+files[j]);
! 861: break;
! 862: }
! 863: }
! 864: } else xmlFile=f;
! 865: try
! 866: {
! 867: // read XML Metadata from a file
! 868: FileReader r=new FileReader(xmlFile);
! 869: StringBuffer sb=new StringBuffer();
! 870: int c=0;
! 871: while ((c = r.read()) != -1)
! 872: {
! 873: char ch=(char)c;
! 874: sb.append(ch);
! 875: // System.out.print((char)c);
! 876: }
! 877: addToBundle(bundle,sb);
! 878: } catch(Exception e) { e.printStackTrace();}
! 879:
! 880:
! 881: return bundle;
! 882: }
! 883: public static Bundle getBundle(String url)
! 884: {
! 885: Bundle bundle=new Bundle();
! 886:
! 887: try
! 888: {
! 889: if(url=="") url="http://core.rz-berlin.mpg.de:80/edoctest/oi.epl?mm=list&grp=90";
! 890: // read XML document from URL into a string
! 891: URL u = new URL(url);
! 892: // FileReader r=new FileReader();
! 893: long time = System.currentTimeMillis();
! 894:
! 895: //Connection con= new Connection(new URL("http://core.rz-berlin.mpg.de:80/edoctest/adm.epl"));
! 896: // String ses=con.getSessionID("name=root&passwd=edoctest&mode=verifylogin");
! 897: // con.socket.close();
! 898: Connection conTest=new Connection(new URL(url));
! 899: conTest.ses=ses;
! 900: conTest.get();
! 901: StringBuffer sb=readChunked(conTest);
! 902: // sb.delete( sb.toString().indexOf("<rt>"),sb.length());
! 903: //System.out.println(sb);
! 904: String rt =addToBundle(bundle,sb);
! 905: StringBuffer sb2=null;
! 906: int index=sb.toString().indexOf("<edoc>",3)+6,index2=0;
! 907: //for(int i=20;i<260;i=i+20)
! 908:
! 909:
! 910: while(true)
! 911: {
! 912: if(rt.equals("finished")) break;
! 913: conTest.url=new URL(url+"&rt="+rt);
! 914: conTest.get();
! 915: sb2=readChunked(conTest);
! 916: //sb2.delete(0,index);
! 917: // index2=sb2.toString().indexOf("<rt>",index);
! 918: // sb2.delete(index2,sb2.length());
! 919: //sb.append(sb2);
! 920: rt=addToBundle(bundle,sb2);
! 921: }
! 922: //sb.append("</edoc>");
! 923: //System.out.println(sb);
! 924: long timeEnd = System.currentTimeMillis();
! 925: System.err.println("time to get bundle data "+(timeEnd-time));
! 926:
! 927: /*
! 928: // read XML Metadata from a file
! 929: FileReader r=new FileReader("list7.xml");
! 930: sb=new StringBuffer();
! 931: // String response= conTest.getResponseMessage();
! 932: int c=0;
! 933: while ((c = r.read()) != -1)
! 934: {
! 935: char ch=(char)c;
! 936: sb.append(ch);
! 937: // System.out.print((char)c);
! 938: }
! 939: */
! 940: String data=sb.toString().length()+"";
! 941: // System.out.println(new String(sb.toString().getBytes(),"UTF-8"));
! 942: // System.out.println(sb.toString());
! 943: //addToBundle(bundle,sb);
! 944: // System.out.println(sb.toString());
! 945: // System.exit(0);
! 946:
! 947: } catch(Exception e) {e.printStackTrace();}
! 948: return bundle;
! 949: }
! 950: public static String addToBundle(Bundle bundle,StringBuffer sb)
! 951: {
! 952: boolean finished = false;
! 953: String rtTag="finished";
! 954: // parse string and build document tree
! 955: Node root = new Xparse().parse(sb.toString());
! 956: /*
! 957: Vector contents=root.index.v;
! 958: for (int i=0;i<contents.size();++i)
! 959: {
! 960: Node n=(Node)contents.elementAt(i);
! 961: if(n.type.equals("element"))
! 962: {
! 963: // System.out.println("tag "+n.name+" with contents ");
! 964: // System.out.println(n.getCharacters());
! 965: //contents=n.contents.v;i=0;
! 966: }
! 967: // System.out.println(n.type);
! 968:
! 969: }
! 970: */
! 971: Node tempNode=root.find(rootNode,new int[] {1});
! 972: if(tempNode==null) return rtTag;
! 973: int count=1;
! 974: /*
! 975: for(int i=0;i<tempNode.contents.v.size();++i)
! 976: {
! 977: // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
! 978: }*/
! 979: if(tempNode.contents.v.size()==0) return rtTag;
! 980: Node notNull=null;
! 981: Node rtNode=root.find(rootNode+"/rt",new int[] {1,1});
! 982: rtTag=(rtNode==null) ? "finished":rtNode.getCharacters();
! 983: System.out.println("rt tag is "+ rtTag);
! 984: int length=0;//(tempNode.contents.length()-1)/2;
! 985: for(int i=0;i<tempNode.contents.v.size();++i) {
! 986: Node node=(Node)tempNode.contents.v.elementAt(i);
! 987: if(node.type.equals("element"))
! 988: if(node.name.equals("doc"))length++;
! 989: // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
! 990: }
! 991: if(length==0) rtTag="finished";
! 992: while(count<=length)
! 993: {
! 994: //System.out.println(count+" "+length);
! 995: tempNode=root.find(rootNode+"/doc",new int[] {1,count});
! 996: if(tempNode==null)
! 997: {
! 998: rtTag="finished";
! 999: break;
! 1000: }
! 1001: Bundle.Document doc = new Bundle.Document();
! 1002: Hashtable attributes=tempNode.attributes;
! 1003: int docID=0;
! 1004: int ver=0;
! 1005: if(attributes != null)
! 1006: {
! 1007: docID=Integer.parseInt((String)attributes.get("id"));
! 1008: ver=Integer.parseInt((String)attributes.get("ver"));
! 1009: doc.addData("docID",(String)attributes.get("id"));
! 1010: doc.addData("ver",(String)attributes.get("ver"));
! 1011: }
! 1012: bundle.docs.put(new Integer(docID),doc);
! 1013: bundle.documents.addElement(doc);
! 1014: // System.out.println("id " +docID+" ver "+ver);
! 1015: Node fileNode=root.find(rootNode+"/doc/file",new int[] {1,count,1});
! 1016: attributes=(fileNode==null)? null:fileNode.attributes;
! 1017: int fileID=0;
! 1018: int fileVer=0;
! 1019: if(attributes != null)
! 1020: {
! 1021: fileID=Integer.parseInt((String)attributes.get("id"));
! 1022: fileVer=Integer.parseInt((String)attributes.get("ver"));
! 1023: doc.addData("fileID",(String)attributes.get("id"));
! 1024: doc.addData("fileVer",(String)attributes.get("ver"));
! 1025: // System.out.println("fileid " +fileID+" ver "+fileVer);
! 1026: }
! 1027: // add all Document tags to actual Document
! 1028: for(int i=0;i<tempNode.contents.v.size();++i)
! 1029: {
! 1030: Node node=(Node)tempNode.contents.v.elementAt(i);
! 1031: if(node.type.equals("element"))
! 1032: {
! 1033: //System.out.println(node.name+" "+node.getCharacters()+" "+node.contents.v.size());
! 1034: if(node.contents.v.size()>1)
! 1035: {
! 1036: for(int j=0;j<node.contents.v.size();++j)
! 1037: {
! 1038: Node node2=(Node)node.contents.v.elementAt(j);
! 1039: if(node2.type.equals("element"))
! 1040: {
! 1041: doc.addData(node2.name,node2.getCharacters());
! 1042: //System.out.println(node2.name+" "+node2.getCharacters()+" "+node2.contents.v.size());
! 1043: }
! 1044: }
! 1045: } else doc.addData(node.name,node.getCharacters());
! 1046: }
! 1047: }
! 1048: bundle.docsLocator.put(doc.locator,doc);
! 1049:
! 1050: //System.out.println( bundle.docsLocator);//doc.extraTags);
! 1051: /*
! 1052: notNull=root.find("edoc/doc/title",new int[]{1,count,1});
! 1053: String title=(notNull!=null) ? notNull.getCharacters():"missing";
! 1054: // System.out.println("edoc/doc/title "+title);
! 1055: notNull=root.find("edoc/doc/comment",new int[]{1,count,1});
! 1056: String comment = (notNull!=null) ? notNull.getCharacters():"missing";
! 1057: // System.out.println("edoc/doc/comment "+comment);
! 1058: notNull =root.find("edoc/doc/placeofevent",new int[]{1,count,1});
! 1059: String placeofevent = (notNull!=null) ? notNull.getCharacters():"missing";
! 1060: // System.out.println("edoc/doc/placeofevent "+placeofevent);
! 1061: notNull=root.find("edoc/doc/locater",new int[]{1,count,1});
! 1062: String locator=(notNull!=null) ? notNull.getCharacters():"missing";
! 1063: // System.out.println("edoc/doc/locater "+locator);
! 1064: notNull = root.find("edoc/doc/file/filename",new int[]{1,count,1,1});
! 1065: String fileName=(notNull!=null) ? notNull.getCharacters():"missing";
! 1066: // System.out.println("edoc/doc/file/filename "+fileName);
! 1067: notNull = root.find("edoc/doc/file/mimetype",new int[]{1,count,1,1});
! 1068: String mimeType=(notNull!=null) ? notNull.getCharacters():"missing";
! 1069: // System.out.println("edoc/doc/file/mimetype "+mimeType);
! 1070: notNull = root.find("edoc/doc/file/md5cs",new int[]{1,count,1,1});
! 1071: String md5cs = (notNull!=null) ? notNull.getCharacters():"missing";
! 1072: // System.out.println("edoc/doc/file/md5cs "+md5cs);
! 1073: notNull=root.find("edoc/doc/file/size",new int[]{1,count,1,1});
! 1074: int size =(notNull!=null) ? Integer.parseInt(notNull.getCharacters()):0;
! 1075: // System.out.println("edoc/doc/file/size "+size);
! 1076: notNull = root.find("edoc/doc/file/filelink",new int[]{1,count,1,1});
! 1077: String fileLink = (notNull!=null) ? notNull.getCharacters():"missing";
! 1078: // System.out.println("edoc/doc/file/filelink "+fileLink);
! 1079: Bundle.Document doc=new Bundle. Document(docID,ver,title,locator,comment,placeofevent,fileID,fileVer,fileName,mimeType,md5cs,size,fileLink);
! 1080: bundle.docs.put(new Integer(docID),doc);
! 1081: bundle.documents.addElement(doc);
! 1082: */
! 1083: count++;
! 1084: }
! 1085: // System.out.println(bundle.docs.size());
! 1086: return rtTag;
! 1087: }
! 1088: public static void getGenre()
! 1089: {
! 1090:
! 1091: try
! 1092: {
! 1093: String url="http://core.rz-berlin.mpg.de:80/edoctest/oi.epl?mm=help&sm=genres";
! 1094: // read XML document from URL into a string
! 1095: URL u = new URL(url);
! 1096: // FileReader r=new FileReader();
! 1097: long time = System.currentTimeMillis();
! 1098: // debug=true;
! 1099: Connection conTest=new Connection(new URL(url));
! 1100: conTest.ses=ses;
! 1101: conTest.get();
! 1102: StringBuffer sb=readChunked(conTest);
! 1103: Bundle.genresId.clear();
! 1104: Bundle.genresLabel.clear();
! 1105: Bundle.genresName.clear();
! 1106: Bundle.genVec.removeAllElements();
! 1107: getGenreList(sb);
! 1108: long timeEnd = System.currentTimeMillis();
! 1109: System.err.println("time to get genre data "+(timeEnd-time));
! 1110: // Enumeration en = Bundle.genres.keys();
! 1111: //while(en.hasMoreElements()
! 1112: if(debug)
! 1113: {
! 1114: Collections.sort(Bundle.genVec);
! 1115: // Bundle.Genre.debug=true;
! 1116:
! 1117: for(int i=0;i<Bundle.genVec.size();++i)
! 1118: System.out.println(Bundle.genresId.get(Bundle.genVec.get(i)));
! 1119: //System.out.println( Bundle.genres);
! 1120: }
! 1121: } catch(Exception e) {e.printStackTrace();}
! 1122: }
! 1123: public static String getGenreList(StringBuffer sb)
! 1124: {
! 1125: boolean finished = false;
! 1126: String rtTag="finished";
! 1127: // parse string and build document tree
! 1128: Node root = new Xparse().parse(sb.toString());
! 1129: /*
! 1130: Vector contents=root.index.v;
! 1131: for (int i=0;i<contents.size();++i)
! 1132: {
! 1133: Node n=(Node)contents.elementAt(i);
! 1134: if(n.type.equals("element"))
! 1135: {
! 1136: // System.out.println("tag "+n.name+" with contents ");
! 1137: // System.out.println(n.getCharacters());
! 1138: //contents=n.contents.v;i=0;
! 1139: }
! 1140: // System.out.println(n.type);
! 1141:
! 1142: }
! 1143: */
! 1144: Node tempNode=root.find(rootNode,new int[] {1});
! 1145: if(tempNode==null) return rtTag;
! 1146: int count=1;
! 1147: /*
! 1148: for(int i=0;i<tempNode.contents.v.size();++i)
! 1149: {
! 1150: // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
! 1151: }*/
! 1152: if(tempNode.contents.v.size()==0) return rtTag;
! 1153: Node notNull=null;
! 1154: int length=0;
! 1155: for(int i=0;i<tempNode.contents.v.size();++i) {
! 1156: Node node=(Node)tempNode.contents.v.elementAt(i);
! 1157: if(node.type.equals("element"))
! 1158: if(node.name.equals("genre"))length++;
! 1159: // System.out.println(((Node)tempNode.contents.v.elementAt(i)).attributes+" "+i);
! 1160: }
! 1161: if(length==0) rtTag="finished";
! 1162: while(count<=length)
! 1163: {
! 1164: //System.out.println(count+" "+length);
! 1165: tempNode=root.find(rootNode+"/genre",new int[] {1,count});
! 1166: if(tempNode==null)
! 1167: {
! 1168: rtTag="finished";
! 1169: break;
! 1170: }
! 1171: Bundle.Genre genre= new Bundle.Genre();
! 1172: Hashtable attributes=tempNode.attributes;
! 1173: Integer id=null;
! 1174: if(attributes != null)
! 1175: {
! 1176: genre.id=new Integer((String)attributes.get("id"));
! 1177: }
! 1178: for(int i=0;i<tempNode.contents.v.size();++i)
! 1179: {
! 1180: Node node=(Node)tempNode.contents.v.elementAt(i);
! 1181: if(node.type.equals("element"))
! 1182: {
! 1183: //System.out.println(node.name+" "+node.getCharacters()+" "+node.contents.v.size());
! 1184: if(node.contents.v.size()>1)
! 1185: {
! 1186: for(int j=0;j<node.contents.v.size();++j)
! 1187: {
! 1188: Node node2=(Node)node.contents.v.elementAt(j);
! 1189: if(node2.type.equals("element"))
! 1190: {
! 1191: //genre.addData(node2.name,node2.getCharacters());
! 1192: //System.out.println(node2.name+" "+node2.getCharacters()+" "+node2.contents.v.size());
! 1193: }
! 1194: }
! 1195: } else genre.addData(node.name,node.getCharacters());
! 1196: }
! 1197: }
! 1198: Bundle.genresId.put(genre.id,genre);
! 1199: Bundle.genresLabel.put(genre.label.toLowerCase(),genre.id);
! 1200: Bundle.genresName.put(genre.name.toLowerCase(),genre.id);
! 1201: Bundle.genVec.addElement(genre.id);
! 1202: count++;
! 1203: }
! 1204: // System.out.println(bundle.docs.size());
! 1205: return rtTag;
! 1206: }
! 1207:
! 1208: public static void main(String args[])
! 1209: {
! 1210: // System.out.println("Bundle for http://core.rz-berlin.mpg.de/edocmike/oi.epl?mm=list&grp=90");
! 1211: // getBundle("");
! 1212: // System.out.println("Bundle for http://core.rz-berlin.mpg.de/edocmike/oi.epl?mm=list&grp=89");
! 1213: // getBundle("http://core.rz-berlin.mpg.de/edoctest/oi.epl?mm=list&grp=136");
! 1214: // getBundle("http://core.rz-berlin.mpg.de/edoctest/oi.epl?mm=list&grp=136");
! 1215: runningAsApplet=false;
! 1216: // Object[] options = new Object[] { "New Version for this file","New Version for all files", "Skip file" };
! 1217:
! 1218: // int option = showDialog("Warning exists! \n What do you want to do?", "Destination exists!", options,null);
! 1219:
! 1220: long time = System.currentTimeMillis();
! 1221: new Upload();
! 1222: // bundle=getBundle("http://core.rz-berlin.mpg.de/edoctest/oi.epl?mm=list&grp=136&col=11");
! 1223: url="http://core.rz-berlin.mpg.de/edoctest/";
! 1224: bundleRef = getBundle(url+"oi.epl?mm=list&grp="+grp+"&col="+col);
! 1225: getGenre();
! 1226: //getMetaData("");
! 1227: // if(true)System.exit(0);
! 1228: /* Hashtable data=getMetaData("");
! 1229: //if(true)System.exit(0);
! 1230: try
! 1231: {
! 1232: // old edocmike
! 1233: Connection con= new Connection(new URL("http://core.rz-berlin.mpg.de:80/edoctest/adm.epl"));
! 1234: String ses=con.getSessionID("name=root&passwd=&mode=verifylogin");
! 1235: //("name=dwinter&passwd=e1nste1n&mode=verifylogin");
! 1236: con.socket.close();
! 1237: Vector artist=(Vector)data.get("artist");
! 1238: Vector picture=(Vector)data.get("picture");
! 1239: Vector idnr=(Vector)data.get("IDNR");
! 1240: Vector source=(Vector)data.get("source");
! 1241: Connection conPost=new Connection( new URL("http://core.rz-berlin.mpg.de:80/edoctest/oi.epl"));
! 1242: // new URL("http://localhost:8080/examples/servlet/rogo/"));
! 1243: conPost.ses=ses;
! 1244:
! 1245: for(int i=135;i<136;++i)//i<artist.size();++i)
! 1246: {
! 1247: // System.out.println("artist "+artist.elementAt(i));
! 1248: // System.out.println("picture nr "+ i +" name "+picture.elementAt(i));
! 1249: // System.out.println("file" +idnr.elementAt(i));
! 1250: // System.out.println("source"+source.elementAt(i));
! 1251: // if(!new File("/Volumes/data/tmp/Bildarchiv-Daston/400/"+idnr.elementAt(i)).exists())
! 1252: // System.out.println("file "+idnr.elementAt(i) +" does not exist");
! 1253: // if(idnr.elementAt(i)!=null)
! 1254: // if(idnr.elementAt(i).toString().indexOf("Ÿ")>=0||idnr.elementAt(i).toString().indexOf("š")>=0||idnr.elementAt(i).toString().indexOf("Š")>=0)
! 1255: // System.out.println("file "+idnr.elementAt(i) +" contains umlaut ");
! 1256:
! 1257: if(new File("/Volumes/data/tmp/Bildarchiv-Daston/400/"+idnr.elementAt(i)).exists())
! 1258: conPost.post(new File("/Volumes/data/tmp/Bildarchiv-Daston/400/"+idnr.elementAt(i)),picture.elementAt(i).toString(),artist.elementAt(i). toString(),source.elementAt(i).toString());
! 1259: // conPost.post(new File("./test2.jpg"),picture.elementAt(i).toString(),artist.elementAt(i).toString(),source.elementAt(i).toString());
! 1260:
! 1261: }// to for
! 1262:
! 1263: } catch(Exception e)
! 1264: {
! 1265: e.printStackTrace();
! 1266: }
! 1267: */
! 1268: long time2 = System.currentTimeMillis();
! 1269: // System.out.println("time elapsed for upload " +((time2-time)/1000)+" seconds");
! 1270: }
! 1271: static class Connection
! 1272: {
! 1273: Socket socket;
! 1274: URL url;
! 1275: BufferedInputStream in;
! 1276: PrintStream out;
! 1277: String pHost;
! 1278: int pPort = 80;
! 1279: String proxyHost="";
! 1280: String ses="";
! 1281: HttpURLConnection con;
! 1282: UploadInfo dialog = new UploadInfo();
! 1283: public Connection(URL url) throws Exception
! 1284: {
! 1285: Properties prop = System.getProperties();
! 1286: pHost = null;
! 1287: pPort = 80;
! 1288: Enumeration en = prop.propertyNames();
! 1289: while (en.hasMoreElements())
! 1290: {
! 1291: String key = (String) en.nextElement();
! 1292: if (key.toString().indexOf("proxyHost") >= 0)
! 1293: {
! 1294: Object host = prop.get(key);
! 1295: if (host != null)
! 1296: pHost = host.toString();
! 1297: }
! 1298: if (key.toString().indexOf("proxyPort") >= 0)
! 1299: {
! 1300: Object port = prop.get(key);
! 1301: if (port != null)
! 1302: pPort = Integer.parseInt(port.toString());
! 1303: }
! 1304: }
! 1305:
! 1306: if (proxyHost != "")
! 1307: {
! 1308: int index = proxyHost.indexOf(":");
! 1309: pHost = proxyHost.substring(0, (index > 0) ? index : proxyHost.length());
! 1310: pPort = (index > 0) ? Integer.parseInt(proxyHost.substring(index + 1)) : 80;
! 1311: }
! 1312: int port = (url.getPort()>0) ? url.getPort():80;
! 1313: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort :port );
! 1314: socket.setTcpNoDelay(true);
! 1315: in = new BufferedInputStream(socket.getInputStream(),2);
! 1316: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1317: this.url = url;
! 1318: }
! 1319: public String getSessionID(String data)
! 1320: {
! 1321: try
! 1322: {
! 1323: int size=data.length();
! 1324: // System.out.println("Yeah i called connect");
! 1325: // socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1326: // socket.setTcpNoDelay(true);
! 1327: in = new BufferedInputStream(socket.getInputStream());
! 1328: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1329:
! 1330: out.print(("POST " + url + " HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded'\r\nContent-Length:" + size + "\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1331: out.print(data);
! 1332: out.flush();
! 1333: String response=getResponseMessage();
! 1334: int index=response.indexOf("Set-Cookie");
! 1335: int index2=response.indexOf("\r\n",index);
! 1336: String cookie=response.substring(index,index2);
! 1337: index=cookie.indexOf("=");
! 1338:
! 1339: // // System.out.print(response);
! 1340: System.err.println("Session key: "+cookie.substring(index+1));
! 1341: return cookie.substring(index+1);//sessionID
! 1342: } catch (Exception e)
! 1343: {
! 1344: // System.out.println(e);
! 1345: }
! 1346: return "";
! 1347: }
! 1348: public void post(File file,String mode,String docID,String title,String author,String source) {
! 1349: try
! 1350: {
! 1351: // System.out.println("Yeah i called post");
! 1352: in = new BufferedInputStream(socket.getInputStream());
! 1353: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1354: /*if(in.isClosed())
! 1355: {
! 1356: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1357: socket.setTcpNoDelay(true);
! 1358: in = new BufferedInputStream(socket.getInputStream());
! 1359: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1360: }*/
! 1361: FileInputStream f=new FileInputStream(file);
! 1362: int length=f.available();
! 1363: // ses="37b9cec1da340f16f5ef603112e6fe84";
! 1364: /*
! 1365: String data = "--xYzZY\r\nContent-Disposition: form-data; name=\"mm\"\r\n\r\ninput\r\n"+
! 1366: "--xYzZY\r\nContent-Disposition: form-data; name=\"ses\"\r\n\r\n"+ses+"\r\n"
! 1367: +"--xYzZY\r\nContent-Disposition: form-data; name=\"col\"\r\n\r\n"+"11"+"\r\n"
! 1368: +"--xYzZY\r\nContent-Disposition: form-data; name=\"grp\"\r\n\r\n"+"78"+"\r\n"
! 1369: +"--xYzZY\r\nContent-Disposition: form-data; name=\"bun\"\r\n\r\n"+"78"+"\r\n"
! 1370: +"--xYzZY\r\nContent-Disposition: form-data; name=\"sm\"\r\n\r\n"+"new"+"\r\n"
! 1371: // +"--xYzZY\r\nContent-Disposition: form-data; name=\"ver\"\r\n\r\n"+"0"+"\r\n"
! 1372: +"--xYzZY\r\nContent-Disposition: form-data; name=\"docid\"\r\n\r\n"+"10924"+"\r\n"
! 1373: +"--xYzZY\r\nContent-Disposition: form-data; name=\"gentyp\"\r\n\r\n"+"43"+"\r\n"
! 1374: +"--xYzZY\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\n"+"sometitlexyz"+"\r\n"
! 1375: +"--xYzZY\r\nContent-Disposition: form-data; name=\"placeofevent\"\r\n\r\n"+"someplaceofevent"+"\r\n"
! 1376: +"--xYzZY\r\nContent-Disposition: form-data; name=\"locater\"\r\n\r\n"+"somelocator"+"\r\n"
! 1377: +"--xYzZY\r\nContent-Disposition: form-data; name=\"authorcomment\"\r\n\r\n"+"somecomment"+"\r\n"
! 1378: +"--xYzZY\r\nContent-Disposition: form-data; name=\"nfiles\"\r\n\r\n"+"1"+"\r\n"
! 1379: +"--xYzZY\r\nContent-Disposition: form-data; name=\"file1\"; filename=\"test1.jpg\"\r\n"+"Content-Length: "+length+"\r\n"+"Content-Type: image/jpeg"+"\r\n\r\n"; // file data+end data
! 1380: */
! 1381:
! 1382: FormData formData=new FormData(file,ses,col,grp,mode,"0",docID);
! 1383: //format for const File file,String ses,String col,String grp,String sm,String ver,String docid
! 1384: formData.addEntry("title",title);
! 1385: formData.addEntry("placeofevent",author);
! 1386: formData.addEntry("comment",source);
! 1387: formData.addEntry("locater",source);
! 1388: formData.addFile(formData.file.getName(),"image/tiff",length+"");
! 1389: String data=formData.buff.toString();
! 1390: String ftacc1="--xYzZY\r\nContent-Disposition: form-data; name=\"ftacc1\"\r\n\r\n"+"PUBLIC"+"\r\n";
! 1391:
! 1392: System.err.println("cl "+(data.length()+length+ 13 + ftacc1.length()));
! 1393: out.print(("POST " + url + " HTTP/1.1\r\n"+"Content-Length:"+(data.length()+length+13+ftacc1.length())+"\r\n"+"Content-Type: multipart/form-data, boundary=xYzZY\r\n"
! 1394: +"Cookie: EMBPERL_UID="+ses+"\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1395: //+"Host: " + url.getHost() + "\r\n\r\n"));
! 1396: // out.print(("POST " + url + " HTTP/1.1\r\nContent-Type: application/x-www-form-//urlencoded'\r\nContent-//Length:" + size + "\r\nCookie: EMBPERL_UID="+ses+"\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1397: out.print(data);
! 1398: if(debug)
! 1399: System.out.print(data);
! 1400: // System.out.println("Finished upload");
! 1401: // System.out.println("Content-Length "+(data.length()+11+length));
! 1402: // System.out.print("\r\n--xYzZY--\r\n");// 11 bytes
! 1403: // System.out.print("\r\n");
! 1404: sendFile(f,out);
! 1405: out.print("\r\n");
! 1406: out.print(ftacc1);
! 1407: if(debug)
! 1408: System.out.print(ftacc1);
! 1409: out.print("--xYzZY--\r\n");
! 1410: if(debug)
! 1411: System.out.print("--xYzZY--\r\n");
! 1412: // System.err.println("Yeah i called connect");
! 1413: dialog.progress.setValue(99);
! 1414: String response=getResponseMessage();
! 1415: System.err.print(response);
! 1416: if(response.toLowerCase().indexOf("content-length")>=0||(response.toLowerCase().indexOf("content-type")>=0))
! 1417: {
! 1418: int c=0;
! 1419: while ((c = in.read()) != -1)
! 1420: {
! 1421: System.err.print((char)c);
! 1422: }
! 1423: }
! 1424: } catch (Exception e)
! 1425: {
! 1426: // System.out.println(e);
! 1427: }
! 1428: }
! 1429: public void post(String path,Bundle.Document doc,String mode) throws Exception{
! 1430: // try
! 1431: // {
! 1432: System.out.println("Yeah i called post");
! 1433: in = new BufferedInputStream(socket.getInputStream());
! 1434: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1435: /*if(in.isClosed())
! 1436: {
! 1437: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1438: socket.setTcpNoDelay(true);
! 1439: in = new BufferedInputStream(socket.getInputStream());
! 1440: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1441: }*/
! 1442: String name = doc.fileLink.trim().startsWith("file://") ?doc.fileLink.trim().substring(7):doc.fileLink.trim();
! 1443: System.out.println(name);
! 1444: String filePath = name.startsWith("/") ? name:path+name;
! 1445: FileInputStream f=new FileInputStream( filePath);
! 1446: int length=f.available();
! 1447:
! 1448: FormData formData=new FormData(new File(doc.fileName),ses,col,grp,mode,"1",doc.docID+"",doc.type);// "1" means new version if mode == old
! 1449: //format for const File file,String ses,String col,String grp,String sm,String ver,String docid
! 1450: Enumeration en = doc.metaTags.keys();
! 1451: while(en.hasMoreElements())
! 1452: {
! 1453: String key=(String)en.nextElement();
! 1454: formData.addEntry(key,(String)doc.metaTags.get(key));
! 1455: }
! 1456: formData.addFile(formData.file.getName(),doc.mimeType,length+"");
! 1457: String data=formData.buff.toString();
! 1458: //System.out.print(data);
! 1459: String ftacc1="--xYzZY\r\nContent-Disposition: form-data; name=\"ftacc1\"\r\n\r\n"+"PUBLIC"+"\r\n";
! 1460:
! 1461: System.err.println("cl "+(data.length()+length+ 13 + ftacc1.length()));
! 1462: out.print(("POST " + url + " HTTP/1.1\r\n"+"Content-Length:"+(data.length()+length+13+ftacc1.length())+"\r\n"+"Content-Type: multipart/form-data, boundary=xYzZY\r\n"
! 1463: +"Cookie: EMBPERL_UID="+ses+"\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1464: //+"Host: " + url.getHost() + "\r\n\r\n"));
! 1465: // out.print(("POST " + url + " HTTP/1.1\r\nContent-Type: application/x-www-form-//urlencoded'\r\nContent-//Length:" + size + "\r\nCookie: EMBPERL_UID="+ses+"\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1466: out.print(data);
! 1467: if(out.checkError()) throw new Error("Error while sending form data");
! 1468: if(debug)
! 1469: System.out.print(data);
! 1470: // System.out.println("Finished upload");
! 1471: // System.out.println("Content-Length "+(data.length()+11+length));
! 1472: // System.out.print("\r\n--xYzZY--\r\n");// 11 bytes
! 1473: // System.out.print("\r\n");
! 1474: sendFile(f,out);
! 1475: out.print("\r\n");
! 1476: out.print(ftacc1);
! 1477: if(debug)
! 1478: System.out.print(ftacc1);
! 1479: out.print("--xYzZY--\r\n");
! 1480: if(debug)
! 1481: System.out.print("--xYzZY--\r\n");
! 1482: // System.err.println("Yeah i called connect");
! 1483: dialog.progress.setValue(99);
! 1484: // String response=getResponseMessage();
! 1485: // System.err.print(response);
! 1486: int c=0;StringBuffer sb = new StringBuffer();
! 1487: sb=readChunked(this);
! 1488: if(debug)
! 1489: System.out.println(sb);
! 1490: if(sb.length()>0)
! 1491: addToBundle(bundleRef,sb);
! 1492: try
! 1493: {
! 1494:
! 1495: Bundle.Document newDoc =(Bundle.Document) bundleRef.docsLocator.get(doc.locator);
! 1496: doc.md5cs=newDoc.md5cs;
! 1497: doc.size=newDoc.size;
! 1498: doc.fileID=newDoc.fileID;
! 1499: doc.docID=newDoc.docID;
! 1500: doc.ver=newDoc.ver;
! 1501: doc.fileVer=newDoc.fileVer;
! 1502: bundle.exportToXML(new File("./metaout.xml"));
! 1503: } catch(Exception e7) { e7.printStackTrace();}
! 1504: }
! 1505:
! 1506: public void sendFile(FileInputStream f,PrintStream out) throws Exception
! 1507: {
! 1508: int length=f.available();
! 1509: md.reset();
! 1510: dialog.progress.setValue(0);
! 1511: byte[] b=new byte[512];
! 1512: int readCount =0;
! 1513: while (readCount < length)
! 1514: {
! 1515: if (readCount + b.length > length)
! 1516: f.read(b, 0, length - readCount); // mout.flush();
! 1517: else
! 1518: f.read(b);
! 1519: if (readCount + b.length > length)
! 1520: {
! 1521: out.write(b, 0, length - readCount); // mout.flush();
! 1522: md.update(b, 0, length - readCount);
! 1523: if(out.checkError()) throw new Error("Error while sending file data");
! 1524: //if(debug)
! 1525: //System.out.write(b, 0, length - readCount); // mout.flush();
! 1526: }
! 1527: else
! 1528: {
! 1529: // if(debug)
! 1530: //System.out.write(b); // mout.flush();
! 1531: out.write(b);
! 1532: if(out.checkError()) throw new Error("Error while sending file data");
! 1533: md.update(b, 0, b.length);
! 1534: }
! 1535: readCount += b.length;
! 1536: dialog.progress.setValue((int) (((double) readCount / (double) length) * 100.0));
! 1537: }
! 1538:
! 1539: }
! 1540: public void get() throws Exception
! 1541: {
! 1542: try
! 1543: {
! 1544: // System.out.println("Yeah i called connect");
! 1545: // socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1546: // socket.setTcpNoDelay(true);
! 1547: in = new BufferedInputStream(socket.getInputStream());
! 1548: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1549:
! 1550: // out.print(("PUT " + url + " HTTP/1.1\r\nContent-Type: text/html\r\nContent-Length:" + size + "\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1551: out.print(("GET " + url + " HTTP/1.1\r\nCookie: EMBPERL_UID="+ses+"\r\nHost: " + url.getHost() + "\r\n\r\n"));
! 1552: out.flush();
! 1553: } catch (Exception e)
! 1554: {
! 1555: int port = (url.getPort()>0) ? url.getPort():80;
! 1556:
! 1557: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1558: socket.setTcpNoDelay(true);
! 1559: in = new BufferedInputStream(socket.getInputStream());
! 1560: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1561: // out.print(("PUT " + url + " HTTP/1.1\r\nContent-Type:text/html\r\nContent-Length:" + size + "\r\nHost: " + url. getHost() + "\r\n\r\n"));
! 1562: out.flush();
! 1563: // System.out.println("Error "+e);
! 1564: }
! 1565:
! 1566: /*
! 1567: con = new HTTPClient.HttpURLConnection(url);//(HttpURLConnection) url.openConnection(); // con.setRequestMethod("GET");
! 1568: con.setUseCaches(false);
! 1569: con.setRequestMethod("PUT");
! 1570: con.setDoOutput(true);
! 1571: con.setRequestProperty("Content-Length", ""+size);
! 1572: // con.connect();
! 1573: // System.out.println(con.getClass());
! 1574: out = new DataOutputStream(con.getOutputStream());
! 1575: */
! 1576: }
! 1577: public boolean update() throws Exception
! 1578: {
! 1579: boolean exists = false;
! 1580: String response = "";
! 1581: try
! 1582: {
! 1583:
! 1584: URL url = null;//createURL(this.url.toString(), getSHA((id + "").getBytes()));
! 1585: // con = new HTTPClient.HttpURLConnection(url);//(HttpURLConnection) url.openConnection(); // con.setRequestMethod("GET");
! 1586: //con.setUseCaches(false);
! 1587: // con.setRequestMethod("HEAD");
! 1588: //con.setDoOutput(true);
! 1589: // con.connect();
! 1590:
! 1591: out.print(("HEAD " + url + " HTTP/1.1\r\nConnection:Keep-Alive\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1592: out.flush();
! 1593: response = getResponseMessage();
! 1594: exists = response.indexOf("OK") >= 0;
! 1595: // System.out.println("Head "+response);
! 1596:
! 1597: } catch (Exception e)
! 1598: {
! 1599: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort : url.getPort());
! 1600: socket.setTcpNoDelay(true);
! 1601: in = new BufferedInputStream(socket.getInputStream());
! 1602: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1603: // out.writeBytes("HEAD " + url + " HTTP/1.1\r\n Connection:Keep-Alive\r\n \r\nHost: " + url.getHost() + //"\r\n\r\n");
! 1604: URL url = null;//createURL(this.url.toString(), getSHA((id + "").getBytes()));
! 1605: out.print(("HEAD " + url + " HTTP/1.1\r\nConnection:Keep-Alive\r\nHost: " + url.getHost() + "\r\n\r\n"));//.getBytes());
! 1606: out.flush();
! 1607: response = getResponseMessage();
! 1608: // System.out.println("Head " + response);
! 1609: exists = response.indexOf("OK") >= 0;
! 1610: //// System.out.println("Error from Head "+e);
! 1611: // e.printStackTrace();
! 1612: return exists;
! 1613:
! 1614: }
! 1615: return exists;
! 1616: }
! 1617:
! 1618: public String getResponseMessage()
! 1619: {
! 1620:
! 1621: int b=0;StringBuffer between=new StringBuffer();int count=0;
! 1622: try
! 1623: {
! 1624: int loop =0;int available = 0;
! 1625: while((available=in.available())==0)
! 1626: {
! 1627: if(loop>=3000) throw new Error("Connection timed out");
! 1628: long time = System.currentTimeMillis();
! 1629: while(System.currentTimeMillis()-time<100);
! 1630: if(available==0) loop++; else loop=0;
! 1631: }
! 1632: System.out.println("heh there are bytes "+in.available()+" available");
! 1633: int limit = in.available();
! 1634: while(true )
! 1635: {
! 1636: b=in.read();
! 1637: if(b=='\r')
! 1638: {
! 1639: between.append((char)b);
! 1640: // System.out.print("CR found ");
! 1641: b=in.read();
! 1642: if(b=='\n')
! 1643: {
! 1644: // System.out.print("LF found ");
! 1645: between.append((char)b);
! 1646: if((b=in.read())=='\r')
! 1647: {
! 1648: b=in.read();
! 1649: // System.out.print("end found ");
! 1650: break;
! 1651: }
! 1652: }
! 1653: }
! 1654: between.append((char)b);
! 1655: // System.out.print((char)b);
! 1656: // System.out.println("read "+count+" bytes");
! 1657: count++;
! 1658: if(count==limit) break;
! 1659: }
! 1660:
! 1661: } catch(Exception e) {
! 1662: e.printStackTrace();
! 1663: // System.out.println("Error found");
! 1664: if(e.toString().indexOf("peer")>=0)
! 1665: return getResponseMessage();
! 1666: else throw new Error("Error while reading response");
! 1667: }
! 1668:
! 1669: /*
! 1670: String response = "";
! 1671: try
! 1672: {
! 1673: response = con.getResponseMessage();
! 1674: // con.disconnect();
! 1675: } catch (Exception e)
! 1676: {
! 1677: showErrorDialog(e.getMessage(),"Shit happens");
! 1678: }
! 1679: */
! 1680: String response = between.toString();
! 1681: if(response.indexOf("close") >= 0)
! 1682: reconnect();
! 1683: return response;
! 1684:
! 1685: }
! 1686: public void disconnect() throws Exception
! 1687: {
! 1688: //socket.close();
! 1689: // con.disconnect();
! 1690: }
! 1691: public void reconnect()
! 1692: {
! 1693: try
! 1694: {
! 1695: System.out.println("Reconnect called");
! 1696: int port= (url.getPort()>=0) ? url.getPort():80;
! 1697: socket = new Socket((pHost != null) ? pHost : url.getHost(), (pHost != null) ? pPort :port);
! 1698: socket.setTcpNoDelay(true);
! 1699: in = new BufferedInputStream(socket.getInputStream());
! 1700: out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()),true);
! 1701:
! 1702: } catch(Exception e)
! 1703: {
! 1704: showErrorDialog(e.getMessage(),"Shit happens");
! 1705: }
! 1706:
! 1707: }
! 1708:
! 1709: }
! 1710: public static class FormData
! 1711: {
! 1712: public StringBuffer buff=new StringBuffer();
! 1713: File file;
! 1714: public FormData()
! 1715: {}
! 1716: public FormData(File file,String ses,String col,String grp,String sm,String ver,String docid)
! 1717: {
! 1718: this(file,ses,col,grp,sm,ver,docid,"Archimedes Image Collection");
! 1719: }
! 1720: public FormData(File file,String ses,String col,String grp,String sm,String ver,String docid,String type)
! 1721: {
! 1722: this.file=file;
! 1723: addEntry("mm","input");
! 1724: addEntry("ses",ses);
! 1725: addEntry("col",col);
! 1726: addEntry("grp",grp);
! 1727: //addEntry("bun",bun);
! 1728:
! 1729: if(sm.equals("old"))
! 1730: {
! 1731: addEntry("sm","old");
! 1732: addEntry("ver",ver);
! 1733: addEntry("docid",docid);
! 1734:
! 1735: }
! 1736: else
! 1737: addEntry("sm","new");
! 1738: System.out.println("Type is "+type);
! 1739: type=type.toLowerCase().trim();
! 1740: Object genre=null;
! 1741: if((genre=Bundle.genresLabel.get(type))!=null)
! 1742: addEntry("gentyp",genre.toString());
! 1743: else if((genre=Bundle.genresName.get(type))!=null)
! 1744: addEntry("gentyp",genre.toString());
! 1745: else
! 1746: {
! 1747: Integer id=new Integer("0");
! 1748: id= new Integer(type);
! 1749: if((genre=Bundle.genresId.get(id))!=null)
! 1750: addEntry("gentyp",((Bundle.Genre)genre).id.toString());
! 1751: }
! 1752: System.out.println("Numerical Type is "+genre);
! 1753: }
! 1754: public void addEntry(String entry,String data)
! 1755: {
! 1756: buff.append("--xYzZY\r\nContent-Disposition: form-data; name=\"");
! 1757: buff.append(entry);
! 1758: buff.append("\"; charset=utf-8 \r\n\r\n");
! 1759: buff.append(data);
! 1760: buff.append("\r\n");
! 1761: }
! 1762: public void addFile(String name,String type,String length)
! 1763: {
! 1764: addEntry("nfiles","1");
! 1765: buff.append("--xYzZY\r\nContent-Disposition: form-data; name=\"file1\"");
! 1766: buff.append("; filename=\""+name+"\""+"\r\nContent-Length: "+length+"\r\n"+"Content-Type:"+type+"\r\n");
! 1767: buff.append("\r\n");
! 1768: }
! 1769:
! 1770: public void addEnd()
! 1771: {
! 1772: buff.append("\r\n--xYzZY--\r\n");
! 1773: }
! 1774:
! 1775: }
! 1776: static class UploadFilter implements FilenameFilter
! 1777: {
! 1778: public UploadFilter() {}
! 1779: public boolean accept(File dir, String name)
! 1780: {
! 1781: if(name.startsWith(".") || name.endsWith(".xml")) return false;
! 1782: else return true;
! 1783: }
! 1784: }
! 1785:
! 1786: static class DotFileFilter implements FilenameFilter
! 1787: {
! 1788: public DotFileFilter() {}
! 1789: public boolean accept(File dir, String name)
! 1790: {
! 1791: if(name.startsWith(".")) return false;
! 1792: else return true;
! 1793: }
! 1794: }
! 1795: static class XMLFilter extends javax.swing.filechooser.FileFilter
! 1796: {
! 1797: public boolean accept(java.io.File file)
! 1798: {
! 1799: if(file.getName().toLowerCase().endsWith(".xml")||file.isDirectory())
! 1800: return true ;
! 1801: else return false;
! 1802: }
! 1803: public String getDescription()
! 1804: {
! 1805: return "Metadata XML File";
! 1806: }
! 1807:
! 1808: }
! 1809: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>