<?xml version="1.0" encoding="UTF-8"?>
<!--
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICE OR THIS HEADER.

 Copyright 2006, 2007 Sun Microsystems, Inc. All rights reserved.
 Use is subject to license terms.

 The contents of this file are subject to the terms of the Common Development
 and Distribution License("CDDL") (the "License"). You may not use this file
 except in compliance with the License.

 You can obtain a copy of the License at https://openinstaller.dev.java.net/license.html
 or http://openinstaller.dev.java.net/license.txt . See the License for the
 specific language governing permissions and limitations under the License.

 When distributing the Covered Code, include this CDDL Header Notice in each
 file and include the License file at http://openinstaller.dev.java.net/license.txt .
 If applicable, add the following below this CDDL Header, with the fields
 enclosed by brackets [] replaced by your own identifying information:
 "Portions Copyrighted [year] [name of copyright owner]"

 ident "@(#)%Name% %Revision% %Date% SMI"

 APOC file for Summary page.  This page generates a set of links
 to a more detailed summary page.
-->
<apt:template apt:name="Summary" xmlns:apt="http://www.sun.com/jds/apoc/2004/template"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:oor="http://openoffice.org/2001/registry"
  xsi:schemaLocation="http://www.sun.com/jds/apoc/2004/template ../../../consumables/schemas/config/apoc/policytemplate.xsd">
  <apt:category apt:name="Summary" apt:label="Summary" >
   <apt:page apt:name="summary_page" apt:label="Summary" >
  <apt:section apt:name="summary" apt:label="Summary" >
        <apt:property apt:name="SUMMARY_OF_COMPONENTS"
         apt:dataPath=""
         apt:type="xs:string">
         <apt:prop-value></apt:prop-value>
         <apt:visual>
            <apt:htmlPanel/>
         </apt:visual>
        </apt:property>
  </apt:section>
  <apt:scriptHandler apt:scriptLanguage="beanshell" >
  <apt:scriptCode><![CDATA[
import org.openinstaller.bus.*;
import org.openinstaller.core.*;
import org.openinstaller.provider.dependency.*;
import org.openinstaller.provider.operation.*;
import org.openinstaller.provider.sims.*;
import org.openinstaller.provider.task.*;
import org.openinstaller.provider.task.TaskControl.TaskCommand;
import org.openinstaller.util.*;
import org.openinstaller.util.install.Common;
import org.openinstaller.core.PROCESSING_MODE;
import java.util.logging.Logger;
import java.util.List;
import java.io.*;

/* determines whether a summary represents a configure operation */
boolean isConfig(Summary aSum) {
  return (aSum.getOperation() == OPTYPE.CONFIGURE ||
          aSum.getOperation() == OPTYPE.MIGRATE ||
          aSum.getOperation() == OPTYPE.UNCONFIGURE);
}

void run ()  {
     File logsLocation = (File) Scripting.getInterpreter().get("gLogFile");

    // Requesting the Summary object
    theSummary = (List) Scripting.getInterpreter().get("gSummary");
    theSummaryFile = (java.io.File) Scripting.getInterpreter().get("gSummaryFile");

    // Populating the install data from the Summary object in a table
    String theFontStart = "<font face='Sans-Serif' size='3'>";
    StringBuilder theContent = new StringBuilder("<html>");
    theContent.append("<body>").append(theFontStart);

   /* get processing mode */
    BusRequest modeReq = new BusRequest("ConfigRequest",
     new EngineConfigCommand(EngineConfigCommand.COMMAND.GET_CONFIG, EngineConfigItem.DISPLAY_MODE));
    BusResponse modeResp = bus.publishRequest(modeReq, "svc://general/EngineConfig");
    String mode = (String)modeResp.getResult();

    theSumURL = theSummaryFile.toURI().toURL();
	theNextStepsURL = new URI("file", theSummaryFile.getAbsolutePath(), "section-NextStepsReport").toURL();
	theLogURL = logsLocation.toURI().toURL();

  /* determine if anything failed */
  boolean partial = false;
  for (Summary sum : theSummary) {
    if (!sum.getStatus()) {
      partial = true;
      break;
    }
  }

  /* get processing mode */
  String theMode = Common.getProcessingMode();
      if (partial) {
        theContent.append("<center><h3>" + Msg.get("OVERALL_STATUS", new String[] {}) + ": <font color=\"red\">" + Msg.get("INCOMPLETE", new String[] {}) + "</font></h3></center>");
      } else {
        theContent.append("<center><h3>" + Msg.get("OVERALL_STATUS", new String[] {}) + ": <font color=\"green\">" + Msg.get("COMPLETE", new String[] {}) + "</font></h3></center>");
      }
      if (theSummaryFile != null) {
        theContent.append("<em>" + Msg.get("DETAILED_REPORT", new String[] {"<a href=\"" + theSumURL+"\">", "</a>", "<a href=\"" + theNextStepsURL + "\">", "</a>"}) + "</em>");
      }
      if (logsLocation != null) {
        theContent.append("<em>" + Msg.get("LOGS_REPORT", new String[] {"<a href=\"" + theLogURL + "\">", "</a>"}) + "</em>");
      }
	    theContent.append("<p>");

      if (logsLocation != null) {
          theContent.append(Msg.get("SUMMARY_LOGS", new String[] {}) + ": <b><code>" + logsLocation.getParentFile().getAbsolutePath()+"</code></b><br>");
          if (theSummaryFile != null) {
            theContent.append("<a href=\"" + theSumURL + "\">    " + theSummaryFile.getName()+"</a><br>");
          }
          theContent.append("<a href=\"" + theLogURL + "\">    " +  logsLocation.getName()+"</a>");
      }

    theContent.append("<table border='0'>");
    theContent.append("<tr><th align='left'>" + theFontStart + Msg.get("SUMMARY_PRODUCT_NAME", new String[] {}) + "</font></th><th align='left'>" + theFontStart + Msg.get("SUMMARY_STATUS", new String[] {}) + "</font></th></tr>");
    for (Summary sum : theSummary) {
      theContent.append("<tr>");
      theContent.append("<td>" + theFontStart + sum.getProductName() + " " + sum.getProductVersion() + "</font></td>");
      if (!sum.getStatus()) {
        theContent.append("<td><font color=\"red\">" + theFontStart + sum.getStatusMsg() + "</font></font></td>");
      } else {
        theContent.append("<td>" + theFontStart + sum.getStatusMsg() + "</font></td>");
      }
      theContent.append("</tr>");
    }
    theContent.append("</table></font></body></html>");


    // Setting the content in the HTML panel
    summary = wizard.getComponentByName(content, "SUMMARY_OF_COMPONENTS");
    summary.setText(theContent.toString());

    // set whether to show external browser or not
    BusRequest opsReq = new BusRequest("ConfigRequest",
    new EngineConfigCommand(EngineConfigCommand.COMMAND.GET_CONFIG, EngineConfigItem.UI_OPTIONS));
    BusResponse opsResp = bus.publishRequest(opsReq, "svc://general/EngineConfig");
    String mode = (String)opsResp.getResult();
    if (mode != null) {
      summary.setInternalFlag(mode.toLowerCase().contains("internalbrowseronly"));
    }
    wizard.enableHelp(true);
    wizard.enableExit(true);
  }


return (Runnable)this;]]>
  </apt:scriptCode>
  </apt:scriptHandler>
 </apt:page>
 </apt:category>
</apt:template>
