Changeset 7849 for mauRepo/NewmoonJSP


Ignore:
Timestamp:
27/01/11 08:52:03 (9 years ago)
Author:
mnagni
Message:

Passes user/psw/host (still hardcoded) to the processing library
Allows the GML version selection
Minor refactoring on the layout

Location:
mauRepo/NewmoonJSP
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/NewmoonJSP/.project

    r7837 r7849  
    4545                <nature>org.eclipse.wst.jsdt.core.jsNature</nature> 
    4646                <nature>org.jboss.tools.jst.web.kb.kbnature</nature> 
    47                 <nature>org.jboss.tools.jsf.jsfnature</nature> 
    4847        </natures> 
    4948</projectDescription> 
  • mauRepo/NewmoonJSP/pom.xml

    r7837 r7849  
    132132 
    133133                <dependency> 
     134                        <groupId>commons-lang</groupId> 
     135                        <artifactId>commons-lang</artifactId> 
     136                        <version>2.6</version> 
     137                </dependency> 
     138 
     139                <dependency> 
    134140                        <groupId>log4j</groupId> 
    135141                        <artifactId>log4j</artifactId> 
  • mauRepo/NewmoonJSP/src/main/java/ndg/newmoon/web/XMIEncoderBean.java

    r7832 r7849  
    33import java.io.File; 
    44import java.io.FileInputStream; 
    5 import java.io.FileNotFoundException; 
    65import java.io.IOException; 
    7 import java.io.InputStream; 
    86import java.io.OutputStream; 
     7import java.util.ArrayList; 
     8import java.util.List; 
    99 
    1010import javax.faces.context.ExternalContext; 
    1111import javax.faces.context.FacesContext; 
     12import javax.faces.model.SelectItem; 
    1213import javax.servlet.ServletContext; 
    1314import javax.servlet.http.HttpServletResponse; 
    1415 
    1516import ndg.services.newmoon.NewmoonException; 
     17import ndg.services.newmoon.NewmoonManager.GML_VERSION; 
    1618 
     19import org.apache.commons.collections.CollectionUtils; 
    1720import org.apache.commons.io.FileUtils; 
    1821import org.apache.commons.io.FilenameUtils; 
     
    2730        private XMIEncoderHelper helper = null; 
    2831        private boolean encodeReady = false; 
     32        private boolean processing = false; 
     33        private Thread helperThread = null; 
     34        private List<SelectItem> gmlVersions; 
     35        private GML_VERSION gmlSelectedVersion; 
    2936 
    3037        private static final ServletContext sc = (ServletContext) FacesContext.getCurrentInstance().getExternalContext() 
    3138                        .getContext(); 
    3239 
     40         
     41         
    3342        /** 
    3443         * Logger for this class. 
     
    3746 
    3847        public void xmiListener(FileUploadEvent event) throws NewmoonException { 
     48                processing = true; 
    3949                UploadedFile requestItem = event.getUploadedFile(); 
    4050                File requestTmpDir = new File((String) sc.getAttribute(NewmoonContextListener.TMP_DIR), 
     
    5666                        throw new NewmoonException("Upload error", e); 
    5767                } 
    58                 helper = new XMIEncoderHelper(zipRequest); 
    59                 new Thread(helper).start(); 
     68                helper = new XMIEncoderHelper(zipRequest, getGmlSelectedVersion()); 
     69                helperThread = new Thread(helper); 
     70                helperThread.start(); 
     71        } 
     72 
     73        public List<SelectItem> getGmlVersions() { 
     74                if (CollectionUtils.isEmpty(gmlVersions)) { 
     75                        gmlVersions = new ArrayList<SelectItem>(); 
     76                        for (GML_VERSION ver : GML_VERSION.values()) { 
     77                                gmlVersions.add(new SelectItem(ver, ver.getVersion()));  
     78                        } 
     79                } 
     80                return gmlVersions; 
     81        } 
     82         
     83        public void setGmlVersions(List<SelectItem> gmlVersions) { 
     84                this.gmlVersions = gmlVersions; 
     85        } 
     86 
     87        public GML_VERSION getGmlSelectedVersion() { 
     88                return gmlSelectedVersion != null ? gmlSelectedVersion : GML_VERSION.v3_2;  
     89        } 
     90 
     91        public void setGmlSelectedVersion(GML_VERSION gmlSelectedVersion) { 
     92                this.gmlSelectedVersion = gmlSelectedVersion; 
    6093        } 
    6194 
     
    6497        } 
    6598 
     99        public boolean isProcessing() { 
     100                return helperThread == null ? false : helperThread.isAlive(); 
     101        } 
     102         
    66103        public void downloadZip(OutputStream out, Object data) throws IOException { 
    67104                //data is the item passed throught the VALUE attribute in the a4j:mediaOutput 
  • mauRepo/NewmoonJSP/src/main/java/ndg/newmoon/web/XMIEncoderHelper.java

    r7832 r7849  
    4343        private final File zipRequest; 
    4444        private boolean encodeReady = false; 
    45         private final XMIEncoder encoder = new XMIEncoder();   
     45        private final XMIEncoder encoder = new XMIEncoder();  
     46        private final GML_VERSION gmlSelectedVersion; 
    4647 
    4748        protected File getRequestTmpDir() { 
     
    5758        private static final Logger LOG = LoggerFactory.getLogger(XMIEncoderBean.class); 
    5859 
    59         public XMIEncoderHelper(File zipRequest) { 
     60        public XMIEncoderHelper(File zipRequest, GML_VERSION gmlSelectedVersion) { 
    6061                super(); 
    6162                this.zipRequest = zipRequest; 
    6263                this.requestTmpDir = this.zipRequest.getParentFile(); 
     64                this.gmlSelectedVersion = gmlSelectedVersion; 
    6365        } 
    6466         
     
    9799                return zipResponse; 
    98100        } 
    99  
    100         /* 
    101         private void finalizeResponse(File zipFile) throws NewmoonException { 
    102                 // Prepare. 
    103                 byte[] zip; 
    104                 try { 
    105                         zip = IOUtils.toByteArray(new FileInputStream(zipFile)); 
    106                 } catch (FileNotFoundException e) { 
    107                         throw new NewmoonException("Finalizing error", e); 
    108                 } catch (IOException e) { 
    109                         throw new NewmoonException("Finalizing error", e); 
    110                 } 
    111                 FacesContext facesContext = FacesContext.getCurrentInstance(); 
    112                 ExternalContext externalContext = facesContext.getExternalContext(); 
    113                 HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); 
    114  
    115                 response.reset(); 
    116                 response.setContentType("application/zip"); 
    117                 response.setHeader("Content-disposition", "attachment; filename=\"" + zipFile.getName() + "\""); 
    118  
    119                 // Write file to response. 
    120                 OutputStream output; 
    121                 try { 
    122                         output = response.getOutputStream(); 
    123                         output.write(zip); 
    124                         output.flush(); 
    125                         output.close(); 
    126                 } catch (IOException e) { 
    127                         throw new NewmoonException("Finalizing error", e); 
    128                 } 
    129                 // facesContext.responseComplete(); 
    130         } 
    131          */ 
    132101         
    133102        private File prepareResponse(String responseDir, String zipName) throws NewmoonException { 
     
    193162                String registryPath = register != null ? base + File.separator + register.getName() : null; 
    194163                String resourceName = "MyResource"; 
    195                 GML_VERSION gmlVersion = GML_VERSION.v3_2; 
     164                GML_VERSION gmlVersion = gmlSelectedVersion; 
    196165                String encodeReportName = "EncodeReport"; 
    197166                String conformanceReportName = "ConformanceReport"; 
     
    216185                params.put(NM_PARAM.DEFAULT_ENCODE_REPORT_NAME, encodeReportName); 
    217186                params.put(NM_PARAM.RESOURCE_NAME, resourceName); 
     187                params.put(NM_PARAM.XMLDB_USER, "admin"); 
     188                params.put(NM_PARAM.XMLDB_PASSWORD, "newmoon"); 
     189                params.put(NM_PARAM.ROOT_COLLECTION_URI, "xmldb:exist://localhost:8080/exist/xmlrpc/db"); 
    218190 
    219191                /* 
  • mauRepo/NewmoonJSP/src/main/webapp/WEB-INF/.faces-config.xml.jsfdia

    r7826 r7849  
    11<?xml version="1.0" encoding="UTF-8"?> 
    2 <PROCESS model-entity="JSFProcess"/> 
     2<PROCESS model-entity="JSFProcess"> 
     3 <PROCESS-ITEM NAME="rules:#encodeXMI.xhtml" PATH="/encodeXMI.xhtml" 
     4  SHAPE="188,80,0,0" model-entity="JSFProcessGroup"> 
     5  <PROCESS-ITEM ID="rules:#encodeXMI.xhtml:0" NAME="item" 
     6   PATH="/encodeXMI.xhtml" model-entity="JSFProcessItem"> 
     7   <PROCESS-ITEM-OUTPUT ID="encodeXMI::#encodeXMI.xhtml" NAME="output" 
     8    PATH="/encodeXMI.xhtml" TARGET="rules:#encodeXMI.xhtml" 
     9    TITLE="encodeXMI" model-entity="JSFProcessItemOutput"/> 
     10  </PROCESS-ITEM> 
     11 </PROCESS-ITEM> 
     12</PROCESS> 
  • mauRepo/NewmoonJSP/src/main/webapp/WEB-INF/faces-config.xml

    r7836 r7849  
    11<?xml version="1.0" encoding="UTF-8"?> 
    2 <faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
    3               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    4               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    5               version="2.0"> 
    6  
    7  
     2<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" 
     3        xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     4        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> 
    85        <managed-bean> 
    96                <managed-bean-name>xMIEncoder</managed-bean-name> 
     
    118                <managed-bean-scope>session</managed-bean-scope> 
    129        </managed-bean> 
     10        <navigation-rule> 
     11                <from-view-id>/encodeXMI.xhtml</from-view-id> 
     12                <navigation-case> 
     13                        <from-outcome>encodeXMI</from-outcome> 
     14                        <to-view-id>/encodeXMI.xhtml</to-view-id> 
     15                </navigation-case> 
     16        </navigation-rule> 
     17        <!--  
     18        <converter> 
     19                <converter-for-class>ndg.services.newmoon.NewmoonManager.GML_VERSION</converter-for-class> 
     20                <converter-class>ndg.newmoon.web.GMLConverter</converter-class> 
     21        </converter> 
     22        --> 
    1323</faces-config> 
  • mauRepo/NewmoonJSP/src/main/webapp/encodeXMI.xhtml

    r7833 r7849  
    66        xmlns:ui="http://java.sun.com/jsf/facelets" 
    77        xmlns:a4j="http://richfaces.org/a4j" 
    8         xmlns:fu="http://richfaces.org/input"> 
     8        xmlns:fu="http://richfaces.org/input" 
     9        xmlns:pn="http://richfaces.org/output" 
     10        xmlns:rich="http://richfaces.org/rich"> 
    911 
    10 <h:head> 
    11         <title>Richfaces FileUpload Demo</title> 
    12         <style> 
     12<f:view> 
     13        <h:head> 
     14                <title>Newmoon</title> 
     15                <style> 
    1316<!-- 
    1417.fu .rf-fu-lst { 
    1518        height: 500px; 
    1619} 
     20 
     21.center-td { 
     22        text-align: center; 
     23} 
     24 
     25.left-button { 
     26        float: left; 
     27} 
     28 
     29.panel { 
     30        width: 200px; 
     31        height: 100px; 
     32        position: absolute; 
     33        left: 50%; 
     34        top: 50%; 
     35        margin-left: -100px; 
     36        margin-top: -50px; 
     37} 
     38 
     39.top { 
     40        width: 200px; 
     41        height: 100px; 
     42} 
    1743--> 
    1844</style> 
    19 </h:head> 
     45        </h:head> 
    2046 
    21 <h:body> 
    22         <h:form id="form"> 
    23                 <script type="text/javascript"> 
    24                         <!-- 
    25                         var onfilesubmit = function (event) { 
    26                                 var data = event.rf.data; 
    27                                 RichFaces.log.info(jQuery("<span><b>onfilesubmit: </b>" + data.name + " " + data.state + "</span>")); 
    28                         }; 
    29                          
    30                         var onuploadcomplete = function (event) { 
    31                                 var data = event.rf.data; 
    32                                 var str = ""; 
    33                                 RichFaces.log.info(jQuery("<b>onuploadcomplete:</b>")); 
    34                                 for (var i in data) { 
    35                                         var item = data[i]; 
    36                                         RichFaces.log.info("    " + item.name + " " + item.state); 
    37                                 } 
    38                         }; 
    39                         //--> 
    40                         </script> 
     47        <h:body> 
     48                <f:facet name="header"> 
     49                    For Application Developers 
     50                </f:facet> 
    4151 
    42                 <fu:fileUpload id="packageToEncode" acceptedTypes="zip" 
    43                         fileUploadListener="#{xMIEncoder.xmiListener}" 
    44                         onfilesubmit="onfilesubmit(event)"> 
    45                 </fu:fileUpload> 
    46         </h:form> 
    47         <a4j:outputPanel id="downloadResponse" 
    48                 rendered="#{xMIEncoder.encodeReady}"> 
    49                 <a4j:mediaOutput element="a" cacheable="false" 
    50                         createContent="#{xMIEncoder.downloadZip}" value="#{notUsed}" 
    51                         mimeType="application/zip"> 
    52                         <h:graphicImage id="download" url="img/download_icon.gif" 
    53                                 title="download" /> 
    54                 </a4j:mediaOutput> 
    55         </a4j:outputPanel> 
     52                <h:panelGrid columns="1"> 
     53                        <pn:panel> 
     54                                <f:facet name="header"> 
     55                                                Upload the zip package containing the xmi definition to encode   
     56                                        </f:facet> 
     57                                <h:form id="form"> 
     58                                        <script type="text/javascript"> 
     59                                                        <!-- 
     60                                                        var onfilesubmit = function (event) { 
     61                                                                var data = event.rf.data; 
     62                                                                RichFaces.log.info(jQuery("<span><b>onfilesubmit: </b>" + data.name + " " + data.state + "</span>")); 
     63                                                        }; 
     64                                                         
     65                                                        var onuploadcomplete = function (event) { 
     66                                                                var data = event.rf.data; 
     67                                                                var str = ""; 
     68                                                                RichFaces.log.info(jQuery("<b>onuploadcomplete:</b>")); 
     69                                                                for (var i in data) { 
     70                                                                        var item = data[i]; 
     71                                                                        RichFaces.log.info("    " + item.name + " " + item.state); 
     72                                                                } 
     73                                                        }; 
     74                                                        //--> 
     75                                                        </script> 
     76                                        <fu:fileUpload id="packageToEncode" acceptedTypes="zip" 
     77                                                fileUploadListener="#{xMIEncoder.xmiListener}" 
     78                                                onfilesubmit="onfilesubmit(event)" noDuplicate="false" 
     79                                                addButtonClass="left-button" uploadButtonClass="left-button"> 
     80                                        </fu:fileUpload> 
     81                                        <h:panelGroup id="gmlVersion"> 
     82                                                <fu:select defaultLabel="Select the GML version" 
     83                                                        value="#{xMIEncoder.gmlSelectedVersion}"> 
     84                                                        <f:selectItems value="#{xMIEncoder.gmlVersions}" /> 
     85                                                </fu:select> 
     86                                                <h:outputText 
     87                                                        value="Please select the GML version you want to use" /> 
     88                                        </h:panelGroup> 
     89                                </h:form> 
     90                        </pn:panel> 
     91 
     92                        <h:form id="pollForm"> 
     93                                <h:panelGroup id="poll"> 
     94                                        <a4j:poll enabled="true" interval="1000"> 
     95                                                <a4j:ajax event="timer" render="downloadResponse" /> 
     96                                        </a4j:poll> 
     97                                </h:panelGroup> 
    5698 
    5799 
    58 </h:body> 
     100                                <a4j:outputPanel id="downloadResponse"> 
     101                                        <h:panelGroup id="processing" rendered="#{xMIEncoder.processing}"> 
     102                                                <h:graphicImage value="img/AjaxProcess.gif" /> 
     103                                                <h:outputText 
     104                                                        value="The system is processing your request. Please wait...." /> 
     105                                        </h:panelGroup> 
     106                                        <a4j:mediaOutput element="a" cacheable="false" 
     107                                                createContent="#{xMIEncoder.downloadZip}" value="#{notUsed}" 
     108                                                mimeType="application/zip"> 
     109                                                <h:panelGroup id="download" rendered="#{xMIEncoder.encodeReady}"> 
     110                                                        <h:graphicImage url="img/download_icon.gif" title="download" /> 
     111                                                        <h:outputText value="Please download the system response" /> 
     112                                                </h:panelGroup> 
     113                                        </a4j:mediaOutput> 
     114                                </a4j:outputPanel> 
     115                        </h:form> 
     116 
     117 
     118                        <pn:panel> 
     119                                <f:facet name="header" style="color:#FF0000;"> 
     120                    Instructions 
     121                    </f:facet> 
     122                                <ol> 
     123                                        <li>Using the sample ZIP (see below) as reference, prepare the 
     124                                        project you want to encode.</li> 
     125                                        <li>Press the "Add" button to prepare the system to process 
     126                                        it.</li> 
     127                                        <li>Select the GML version from the drop down menu</li> 
     128                                        <li>Press the "Upload" button to process the last updated file 
     129                                        or "Clear" to remove it from the processing queue</li> 
     130                                        <li>When the system completes the transformation, a download 
     131                                        button will appear to retrieve the results.</li> 
     132                                </ol> 
     133 
     134                        </pn:panel> 
     135                        <pn:panel> 
     136                                <f:facet name="header" style="color:#FF0000;"> 
     137                    Sample ZIP 
     138                    </f:facet> 
     139                    To learn about the structure of the zip file to upload please check <a 
     140                                        href="toEncode.zip"><b>this</b></a> sample file 
     141                                                  
     142        </pn:panel> 
     143 
     144                        <pn:panel> 
     145                                <f:facet name="header" style="color:#FF0000;"> 
     146                    WARNING 
     147            </f:facet> 
     148                                <ul> 
     149                                        <li>Please upload <b>one zip at time</b></li> 
     150                                        <li>After pressing the download button the file is <b>deleted</b> 
     151                                        from the system. Consequently if you do not save it you have to 
     152                                        start a new encoding process.</li> 
     153                                        <li>A well known bug in the application is that if the page is 
     154                                        refreshed using the browser button, the upload panel stop does not 
     155                                        allow to add further file. In this case close the page and reopen 
     156                                        it.</li> 
     157                                </ul> 
     158                        </pn:panel> 
     159                </h:panelGrid> 
     160        </h:body> 
     161</f:view> 
    59162</html> 
Note: See TracChangeset for help on using the changeset viewer.