package com.processpuzzle.applet.control; import java.applet.Applet; import java.awt.Button; import java.awt.GridLayout; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import org.w3c.dom.html.HTMLDocument; import org.w3c.dom.html.HTMLElement; import org.w3c.dom.html.HTMLImageElement; import org.w3c.dom.html.HTMLInputElement; import org.w3c.dom.html.HTMLTableCellElement; import com.sun.java.browser.dom.DOMAccessException; import com.sun.java.browser.dom.DOMAccessor; import com.sun.java.browser.dom.DOMAction; import com.sun.java.browser.dom.DOMService; import com.sun.java.browser.dom.DOMUnsupportedException; public class ReserveApplet extends Applet { class MyDOMAction implements DOMAction { // private ArrayList selectedCheckBoxes = null; private HTMLInputElement subjectElement = null; private ArrayList<?> images = null; private ArrayList<?> messages = null; private ArrayList<?> modifierCells = null; private HTMLDocument document = null; private HTMLInputElement stepButton; private HTMLInputElement resetButton; private HTMLInputElement stepInterval; private HTMLInputElement showHideButton; private HTMLInputElement imgSelectorButton; private HTMLInputElement imgSelector; private HTMLInputElement resetPageButton; private HTMLElement infoLine; public Object run(DOMAccessor accessor) { document = (HTMLDocument) accessor.getDocument(ja); showHideButton = (HTMLInputElement) document.getElementsByName("showHideButton").item(0);// pB stepButton = (HTMLInputElement) document.getElementsByName("stepButton").item(0);// pB resetButton = (HTMLInputElement) document.getElementsByName("resetButton").item(0);// pB stepInterval = (HTMLInputElement) document.getElementsByName("stepInterval").item(0);// pB infoLine = (HTMLElement) document.getElementById("infoLine");// pB imgSelectorButton = (HTMLInputElement) document.getElementsByName("imageSelectorButton").item(0);// dRw imgSelector = (HTMLInputElement) document.getElementsByName("imageSelector").item(0);// dRw resetPageButton = (HTMLInputElement) document.getElementsByName("resetPageButton").item(0);// dRw // NodeList checkBoxes = document.getElementsByName("selectCheckbox");// jsp // selectedCheckBoxes = new ArrayList(); subjectElement = (HTMLInputElement) document.getElementById("subjectElement"); images = new ArrayList(); messages = new ArrayList(); modifierCells = new ArrayList(); // for (int i = 0; i < checkBoxes.getLength(); i++) { // HTMLInputElement elem = (HTMLInputElement) checkBoxes.item(i); // if (elem.getChecked()) { // selectedCheckBoxes.add(elem); // images.add((HTMLImageElement) document.getElementById("img" + elem.getValue())); // messages.add((HTMLInputElement) document.getElementById("msg" + elem.getValue())); // modifierCells.add((HTMLTableCellElement) document.getElementById("modifier" + elem.getValue())); // } // } return null; } public HTMLDocument getDocument() { return document; } // public ArrayList getSelectedCheckBoxes() { // return selectedCheckBoxes; // } public HTMLInputElement getStepButton() { return stepButton; } public HTMLInputElement getResetButton() { return resetButton; } public HTMLInputElement getStepInterval() { return stepInterval; } public HTMLInputElement getShowHideButton() { return showHideButton; } public ArrayList<?> getImages() { return images; } public ArrayList<?> getMessages() { return messages; } public HTMLInputElement getImgSelector() { return imgSelector; } public HTMLInputElement getImgSelectorButton() { return imgSelectorButton; } public HTMLInputElement getResetPageButton() { return resetPageButton; } public HTMLElement getInfoLine() { return infoLine; } protected ArrayList<?> getModifierCells() { return modifierCells; } public HTMLInputElement getSubjectElement() { return subjectElement; } }; private static final long serialVersionUID = 8566762977388286405L; private String message = ""; private Button okButton; private File folder; private File file; private Applet ja = this; private MyDOMAction dAction; public ReserveApplet() throws HeadlessException { super(); } public void init() { setLayout(new GridLayout(0, 1)); okButton = new Button(getParameter("buttonText")); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { receiveFile(); } }); add(okButton); } private void receiveFile() { System.out.println("oksa"); URL url; folder = new File(getParameter("location")); if (!(folder.isDirectory())) { folder.mkdir(); } System.out.println(folder); String host = getCodeBase().getHost(); String protocol = getCodeBase().getProtocol(); int port = getCodeBase().getPort(); System.out.println(host+""+protocol+""+port); // ArrayList selectedArtifactNames = getSelectedArtifactNames(); // resetPage(); // showHideProgressBar(); // for (int i = 0; i < selectedArtifactNames.size(); i++) { String status = "ok"; // HTMLInputElement element = (HTMLInputElement) selectedArtifactNames.get(i); HTMLInputElement element = (HTMLInputElement) getSubjectElement(); System.out.println(element); HttpURLConnection con = null; String artifactName = element.getValue(); String fileName = element.getId(); System.out.println(artifactName+" "+fileName); String parameters = "?action=ReserveArtifact&method=canReserve&subjectArtifactName=" + artifactName; String urlSuffix = "/AnzsoBrowserInterface/CommandControllerServlet" + parameters; System.out.println(urlSuffix); // resetProgressBar(fileName); try { url = new URL(protocol, host, port, urlSuffix); System.out.println(url); con = (HttpURLConnection) url.openConnection(); System.out.println(con); file = new File(getParameter("location") + "\\" + fileName); System.out.println(file); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); InputStream result = con.getInputStream(); byte buffer[] = new byte[1024]; message = ""; int length; while ((length = result.read(buffer)) != -1) { message += new String(buffer, 0, length); } con.disconnect(); if (message.length() == 3) { if ((fileName != null) && !(fileName.equals(""))) { parameters = "?action=ReserveArtifact&method=reserve&subjectArtifactName=" + artifactName; urlSuffix = "/ADIBrowserInterface/CommandControllerServlet" + parameters; url = new URL(protocol, host, port, urlSuffix); con = (HttpURLConnection) url.openConnection(); con.setRequestProperty("Content-Type", "text/plain"); con.setRequestMethod("POST"); con.setDoInput(true); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); BufferedInputStream fr = new BufferedInputStream(con.getInputStream()); int blocks = 300; if ((con.getContentLength() / 1024 > 0) && (con.getContentLength() != 0)) { blocks = 300 / (con.getContentLength() / 1024); } if (blocks <= 0) blocks = 1; // setStepInterval(new Integer(blocks).toString()); int start = 0; length = 1024; int offset = -1; while ((offset = fr.read(buffer, start, length)) != -1) { out.write(buffer, start, offset); // executeProgressBar(); } out.close(); con.disconnect(); if ((new Integer(con.getContentLength())).longValue() != file.length()) { status = "wrong"; } } parameters = "?action=ReserveArtifact&method=reserved&subjectArtifactName=" + artifactName + "&status=" + status; urlSuffix = "/ADIBrowserInterface/CommandControllerServlet" + parameters; url = new URL(protocol, host, port, urlSuffix); con = (HttpURLConnection) url.openConnection(); con.setRequestProperty("Content-Type", "text/plain"); con.setRequestMethod("POST"); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); result = con.getInputStream(); message = ""; while ((length = result.read(buffer)) != -1) { message += new String(buffer, 0, length); } con.disconnect(); message = URLDecoder.decode(message, "UTF-8"); } } catch (IOException e) { if (con != null) con.disconnect(); message = getParameter("ioErrorMessage"); } // try { // setMessage(URLDecoder.decode(message, "UTF-8"), 1 /*was i*/, artifactName); // } catch (UnsupportedEncodingException e) {} // } // showHideProgressBar(); } private void resetProgressBar(String fileName) { dAction.getResetButton().click(); dAction.getInfoLine().setAttribute("innerHTML", getParameter("buttonText") + ": " + fileName); } private void executeProgressBar() { dAction.getStepButton().click(); } private void setStepInterval(String step) { dAction.getStepInterval().setValue(step); } private void showHideProgressBar() { dAction.getShowHideButton().click(); } private void setMessage(String message, int index, String artifactName) { if (message.length() == 3) { ((HTMLImageElement) dAction.getImages().get(index)).setSrc("./images/icons/ok.JPG"); ((HTMLInputElement) dAction.getMessages().get(index)).setValue(getParameter("acceptedText")); ((HTMLTableCellElement) dAction.getModifierCells().get(index)).setAttribute("innerHTML", getParameter("modifierName")); } else { ((HTMLImageElement) dAction.getImages().get(index)).setSrc("./images/icons/error.JPG"); ((HTMLInputElement) dAction.getMessages().get(index)).setValue(message); } dAction.getImgSelector().setValue(artifactName); dAction.getImgSelectorButton().click(); } // private ArrayList getSelectedArtifactNames() { // dAction = new MyDOMAction(); // try { // DOMService service = DOMService.getService(this); // service.invokeAndWait(dAction); // } catch (DOMAccessException dae) { // dae.printStackTrace(); // } catch (DOMUnsupportedException use) { // use.printStackTrace(); // } // return dAction.getSelectedCheckBoxes(); // } private HTMLInputElement getSubjectElement() { dAction = new MyDOMAction(); try { DOMService service = DOMService.getService(this); service.invokeAndWait(dAction); } catch (DOMAccessException dae) { dae.printStackTrace(); } catch (DOMUnsupportedException use) { use.printStackTrace(); } return dAction.getSubjectElement(); } private void resetPage() { dAction.getResetPageButton().click(); } }