package dods.clients.importwizard.ECHO; import java.lang.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import org.jdom.*; import org.jdom.output.XMLOutputter; import org.jdom.input.DOMBuilder; import java.io.*; /** * * @author Sheila Jiang */ public class PresentResult { private Element[] resultDetail; private Vector valids; public PresentResult() { //(Vector resultValids){ resultDetail = new Element[3]; valids = new Vector(); //resultValids; //buildResultDetail(); } public Element[] getResultDetail(){ return resultDetail; } // this method builds the result detail as JDOM objects first, then // converts them to a string public void buildResultDetail(Vector resultValids){ valids = resultValids; // IteratorSize resultDetail[0] = new Element("IteratorSize"); resultDetail[0].addContent("10");// ? changeable // Cursor resultDetail[1] = new Element("Cursor"); resultDetail[1].addContent("1");// ? // PresentationDescription resultDetail[2] = new Element("PresentationDescription"); // Tuple types for (int i=0; i<valids.size(); i++) { Element tupleType = new Element("TupleType"); Element attribute = new Element("attributeName"); attribute.addContent((String)valids.elementAt(i)); Element typeName = new Element("PrimitiveTypeName"); typeName.addContent(new Element("String"));//? int sometimes tupleType.addContent(attribute); tupleType.addContent(typeName); resultDetail[2].addContent(tupleType); } // PredefinedPresentationType Element predefined = new Element("PredefinedPresentationType"); predefined.addContent(new Element("FULL")); // add to PresentationDescription resultDetail[2].addContent(predefined); } public void displayResult(Document resultDoc, boolean isDiscovery) { JScrollPane resultPane; if (valids.isEmpty()) { JLabel nothing = new JLabel("Nothing returned!"); resultPane = new JScrollPane(nothing); } else { Vector data = new Vector(); try { Element root = resultDoc.getRootElement(); Element resultType = (Element)root.getChild("QueryResponse").getChild("BooleanResult").getChild("BooleanResultType"); // if discovery query secceeded, continue; otherwise display error message if (!resultType.getChildren("REQUEST_SUCCEEDED").isEmpty()) { Element payload = (Element)root.getChild("QueryResponse").getChild("ReturnData").getChild("payload"); //convert CDATA in payload to a file String resultStr = payload.getText(); File temp = new File("temp"); StringReader reader = new StringReader(resultStr); FileWriter writer = new FileWriter(temp); int c; while ((c = reader.read()) != -1) writer.write(c); writer.close(); //convert file to document DOMBuilder domBuilder = new DOMBuilder(false); Document result = domBuilder.build(temp); //temp.delete(); //System.out.println(" new root is: " + result.getRootElement().getName()); if (!result.getRootElement().getChildren().isEmpty()) { java.util.List collections = result.getRootElement().getChild("provider").getChildren(); //<collection> or <granule> System.out.println(" collection size is: " + collections.size()); for (int i=0; i<collections.size(); i++) { Vector record = new Vector();//stores the values for one record //System.out.println("size = " + collections.size()); Element thisOne = (Element)collections.get(i); for (int j=0; j<valids.size(); j++) { if (!thisOne.getChildren((String)valids.elementAt(j)).isEmpty()) record.addElement(thisOne.getChild((String)valids.elementAt(j)).getText()); else record.addElement(""); } data.addElement(record.clone()); } } } else System.out.println("error message: " + root.getChild("QueryResponse").getChild("BooleanResult").getChild("Message").getText()); } catch(Exception ex){ System.err.println(ex.getMessage()); } JTable resultTable = new JTable(data, valids); resultPane = new JScrollPane(resultTable); JFrame display; if (isDiscovery == true) display = new JFrame("Result of Discovery Search"); else display = new JFrame("Result of Granule Search"); display.getContentPane().add(resultPane, BorderLayout.CENTER); display.pack(); display.setLocation(550,550); display.setVisible(true); } } } // $Log: not supported by cvs2svn $