WAFHarvest: patch.txt

File patch.txt, 25.2 KB (added by kliu, 5 years ago)
Line 
1Index: web/pom.xml
2===================================================================
3--- web/pom.xml (revision 8189)
4+++ web/pom.xml (working copy)
5@@ -306,12 +306,20 @@
6       <artifactId>opendap</artifactId>
7       <version>2.1</version>
8     </dependency>
9+
10+    <dependency>
11+           <groupId>org.jsoup</groupId>
12+           <artifactId>jsoup</artifactId>
13+           <version>0.2.2</version>
14+       </dependency>
15+
16                <dependency>
17       <groupId>${project.groupId}</groupId>
18       <artifactId>geonetwork-client</artifactId>
19       <version>${project.version}</version>
20       <scope>provided</scope>
21     </dependency>
22+
23   </dependencies>
24   
25   <build>
26Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java
27===================================================================
28--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java     (revision 8189)
29+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java     (working copy)
30@@ -26,11 +26,13 @@
31 import jeeves.resources.dbms.Dbms;
32 import jeeves.server.UserSession;
33 import jeeves.server.context.ServiceContext;
34+import jeeves.utils.Log;
35 import jeeves.utils.Xml;
36 
37 import org.fao.geonet.GeonetContext;
38 import org.fao.geonet.constants.Geonet;
39 import org.fao.geonet.kernel.DataManager;
40+import org.fao.geonet.kernel.SchemaManager;
41 import org.fao.geonet.kernel.harvest.harvester.CategoryMapper;
42 import org.fao.geonet.kernel.harvest.harvester.GroupMapper;
43 import org.fao.geonet.kernel.harvest.harvester.Privileges;
44@@ -62,6 +64,7 @@
45 
46                GeonetContext gc = (GeonetContext) context.getHandlerContext(Geonet.CONTEXT_NAME);
47                dataMan = gc.getDataManager();
48+               schemaMan = gc.getSchemamanager ();
49        }
50 
51        //---------------------------------------------------------------------------
52@@ -72,7 +75,14 @@
53 
54        public WebDavResult harvest() throws Exception {
55                log.debug("Retrieving remote metadata information for : "+ params.name);
56-               RemoteRetriever rr = new WebDavRetriever();
57+               
58+               RemoteRetriever rr = null;             
59+               if(params.subtype.equals("webdav"))
60+                       rr = new WebDavRetriever();
61+               else if(params.subtype.equals("waf"))
62+                       rr = new WAFRetriever();
63+               
64+               Log.info(Log.SERVICE, "webdav harvest subtype : "+params.subtype);             
65                rr.init(log, context, params);
66                List<RemoteFile> files = rr.retrieve();
67                log.debug("Remote files found : "+ files.size());
68@@ -153,7 +163,14 @@
69                log.debug("  - Setting uuid for metadata with remote path : "+ rf.getPath());
70 
71                //--- set uuid inside metadata and get new xml
72-               md = dataMan.setUUID(schema, uuid, md);
73+               try
74+               {
75+                       md = dataMan.setUUID(schema, uuid, md);
76+               }
77+               catch(Exception e)
78+               {
79+                       return;
80+               }
81 
82                log.debug("  - Adding metadata with remote path : "+ rf.getPath());
83 
84@@ -185,7 +202,7 @@
85        private Element retrieveMetadata(RemoteFile rf) {
86                try {
87                        log.debug("Getting remote file : "+ rf.getPath());
88-                       Element md = rf.getMetadata();
89+                       Element md = rf.getMetadata(schemaMan);
90                        log.debug("Record got:\n"+ Xml.getString(md));
91 
92                        String schema = dataMan.autodetectSchema(md);
93@@ -324,6 +341,7 @@
94        private GroupMapper localGroups;
95        private UriMapper localUris;
96        private WebDavResult result;
97+       private SchemaManager  schemaMan;
98 }
99 
100 //=============================================================================
101@@ -339,7 +357,7 @@
102 interface RemoteFile {
103        public String  getPath();
104        public String  getChangeDate();
105-       public Element getMetadata() throws JDOMException, IOException, Exception;
106+       public Element getMetadata(SchemaManager  schemaMan) throws JDOMException, IOException, Exception;
107        public boolean isMoreRecentThan(String localDate);
108 }
109 
110Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRemoteFile.java
111===================================================================
112--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRemoteFile.java (revision 0)
113+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRemoteFile.java (revision 0)
114@@ -0,0 +1,172 @@
115+//=============================================================================
116+//===  Copyright (C) 2001-2007 Food and Agriculture Organization of the
117+//===  United Nations (FAO-UN), United Nations World Food Programme (WFP)
118+//===  and United Nations Environment Programme (UNEP)
119+//===
120+//===  This program is free software; you can redistribute it and/or modify
121+//===  it under the terms of the GNU General Public License as published by
122+//===  the Free Software Foundation; either version 2 of the License, or (at
123+//===  your option) any later version.
124+//===
125+//===  This program is distributed in the hope that it will be useful, but
126+//===  WITHOUT ANY WARRANTY; without even the implied warranty of
127+//===  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
128+//===  General Public License for more details.
129+//===
130+//===  You should have received a copy of the GNU General Public License
131+//===  along with this program; if not, write to the Free Software
132+//===  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
133+//===
134+//===  Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
135+//===  Rome - Italy. email: geonetwork@osgeo.org
136+//==============================================================================
137+
138+package org.fao.geonet.kernel.harvest.harvester.webdav;
139+
140+import jeeves.utils.Util;
141+import jeeves.utils.Xml;
142+import org.apache.commons.httpclient.HttpException;
143+import org.apache.webdav.lib.WebdavResource;
144+import org.fao.geonet.constants.Geonet;
145+import org.fao.geonet.kernel.SchemaManager;
146+import org.jdom.Element;
147+import java.net.URL;
148+import java.util.HashMap;
149+import java.util.Map;
150+
151+//=============================================================================
152+
153+class WAFRemoteFile implements RemoteFile {
154+       
155+       public class WXS{
156+               public static final String WMS = "SERVICE=WMS";
157+               public static final String WCS = "SERVICE=WCS";
158+               public static final String WFS = "SERVICE=WFS";
159+               public static final String WPS = "SERVICE=WPS";
160+       }
161+       
162+       //---------------------------------------------------------------------------
163+       //---
164+       //--- Constructor
165+       //---
166+       //---------------------------------------------------------------------------
167+
168+       public WAFRemoteFile(String path) {
169+               this.path = path;
170+       }
171+
172+       //---------------------------------------------------------------------------
173+       //---
174+       //--- RemoteFile interface
175+       //---
176+       //---------------------------------------------------------------------------
177+
178+       public Element getMetadata(SchemaManager  schemaMan) throws Exception {
179+               try {   
180+                       String type = WAFRetriever.getFileType(this.path);
181+                       if(type.equals(WAFRetriever.type_GetCapabilities))
182+                               return getMdFromService(path, schemaMan);
183+                       else if(type.equals(WAFRetriever.type_xml))
184+                               return Xml.loadFile(new URL(path));             
185+                       else
186+                               return null;
187+               }
188+               catch (HttpException x) {
189+                       throw new Exception("HTTPException : " + x.getMessage());
190+               }
191+       }
192+
193+
194+       
195+       //---------------------------------------------------------------------------
196+       //---
197+       //--- Get Metadata from GetCapabilities file (Service)
198+       //---
199+       //---------------------------------------------------------------------------   
200+       
201+       private Element getMdFromService(String url, SchemaManager  schemaMan) throws Exception
202+       {
203+               Element el = null;
204+               String styleSheet = getStyleSheet(url, schemaMan);
205+               if(styleSheet == null)
206+                       return null;
207+        try {
208+                       Element xml = Xml.loadFile(new URL(url));
209+                       
210+                       // md5 the full capabilities URL
211+                       String uuid = Util.scramble (url); // is the service identifier
212+                       
213+                       Map<String, String> param = new HashMap<String, String>();
214+                       param.put("uuid", uuid);
215+                       
216+                       el = Xml.transform (xml, styleSheet, param);           
217+               } catch (HttpException x) {
218+                       // TODO Auto-generated catch block
219+                       throw new Exception("HTTPException : " + x.getMessage());
220+               }
221+               return el;
222+       }
223+       
224+       private String getStyleSheet(String url, SchemaManager  schemaMan)
225+       {
226+               String serviceType = getServiceType(url);
227+               if(serviceType == null)
228+                       return null;
229+               String styleSheet = schemaMan.getSchemaDir(outputSchema) +
230+                       Geonet.Path.CONVERT_STYLESHEETS
231+                       + "/OGCWxSGetCapabilitiesto19119/"
232+                       + "/OGC"
233+                       + serviceType
234+                       + "GetCapabilities-to-ISO19119_ISO19139.xsl";
235+               return styleSheet;
236+       }
237+       
238+       //---------------------------------------------------------------------------
239+       //---
240+       //--- Get Service Type
241+       //---
242+       //---------------------------------------------------------------------------
243+       
244+       private String getServiceType(String url)
245+       {
246+               if(url.toUpperCase().contains(WXS.WMS))
247+                       return "WMS";
248+               else if(url.toUpperCase().contains(WXS.WCS))
249+                       return "WCS";
250+               else if(url.toUpperCase().contains(WXS.WFS))
251+                       return "WFS";
252+               else if(url.toUpperCase().contains(WXS.WPS))
253+                       return "WPS";
254+               else
255+                       return null;
256+       }
257+       
258+       //---------------------------------------------------------------------------
259+
260+       public boolean isMoreRecentThan(String localChangeDate) {
261+               return true;
262+       }
263+
264+       //---------------------------------------------------------------------------
265+       //---
266+       //--- Variables
267+       //---
268+       //---------------------------------------------------------------------------
269+       
270+       private String path;
271+       private static String outputSchema = "iso19139";
272+       @Override
273+       public String getPath() {
274+               // TODO Auto-generated method stub
275+               return path;
276+       }
277+
278+       @Override
279+       public String getChangeDate() {
280+               // TODO Auto-generated method stub
281+               return null;
282+       }
283+       
284+}
285+
286+//=============================================================================
287\ No newline at end of file
288Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRetriever.java
289===================================================================
290--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRetriever.java  (revision 0)
291+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WAFRetriever.java  (revision 0)
292@@ -0,0 +1,114 @@
293+//=============================================================================
294+//===  Copyright (C) 2001-2007 Food and Agriculture Organization of the
295+//===  United Nations (FAO-UN), United Nations World Food Programme (WFP)
296+//===  and United Nations Environment Programme (UNEP)
297+//===
298+//===  This program is free software; you can redistribute it and/or modify
299+//===  it under the terms of the GNU General Public License as published by
300+//===  the Free Software Foundation; either version 2 of the License, or (at
301+//===  your option) any later version.
302+//===
303+//===  This program is distributed in the hope that it will be useful, but
304+//===  WITHOUT ANY WARRANTY; without even the implied warranty of
305+//===  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
306+//===  General Public License for more details.
307+//===
308+//===  You should have received a copy of the GNU General Public License
309+//===  along with this program; if not, write to the Free Software
310+//===  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
311+//===
312+//===  Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
313+//===  Rome - Italy. email: geonetwork@osgeo.org
314+//==============================================================================
315+
316+package org.fao.geonet.kernel.harvest.harvester.webdav;
317+
318+import jeeves.interfaces.Logger;
319+import jeeves.server.context.ServiceContext;
320+import org.jsoup.Jsoup;
321+import org.jsoup.nodes.Document;
322+import org.jsoup.nodes.Element;
323+import org.jsoup.select.Elements;
324+
325+import java.io.IOException;
326+import java.net.URL;
327+import java.util.ArrayList;
328+import java.util.List;
329+
330+class WAFRetriever implements RemoteRetriever {
331+       //--------------------------------------------------------------------------
332+       //---
333+       //--- RemoteRetriever interface
334+       //---
335+       //--------------------------------------------------------------------------
336+
337+       public void init(Logger log, ServiceContext context, WebDavParams params) {
338+               this.log    = log;
339+               this.params = params;
340+       }
341+
342+       //---------------------------------------------------------------------------
343+
344+       public List<RemoteFile> retrieve() throws Exception {
345+               
346+               files.clear();
347+               retrieveFiles(params.url);
348+               return files;
349+       }
350+
351+       //---------------------------------------------------------------------------
352+
353+       public void destroy() {
354+               return;
355+       }
356+
357+       //---------------------------------------------------------------------------
358+
359+       private void retrieveFiles(String wafurl) throws IOException {
360+               
361+               log.debug("Scanning resource : "+ wafurl);
362+               
363+        Document doc = Jsoup.parse(new URL(wafurl),3000);
364+        Elements links = doc.select("a[href]");
365+        for (Element link : links) {
366+            String url = link.attr("abs:href");
367+            if(getFileType(url) != null)
368+               files.add(new WAFRemoteFile(url));
369+            else
370+               continue;
371+        }
372+                       
373+       }
374+       
375+       //---------------------------------------------------------------------------
376+       //---
377+       //--- check type if url is a xml file or GetCapabilities file
378+       //---
379+       //---------------------------------------------------------------------------
380+       
381+       public static String getFileType(String path)
382+       {
383+               if(path.toUpperCase().contains("REQUEST=GETCAPABILITIES"))
384+                       return type_GetCapabilities;
385+               else if(path.toUpperCase().endsWith(".XML"))
386+                       return  type_xml;
387+               else
388+                       return null;
389+       }
390+
391+       //---------------------------------------------------------------------------
392+       //---
393+       //--- Variables
394+       //---
395+       //---------------------------------------------------------------------------
396+
397+       private Logger         log;
398+       private WebDavParams   params;
399+       private List<RemoteFile> files = new ArrayList<RemoteFile>();
400+       
401+       public static final String type_GetCapabilities = "GetCapabilities";
402+       public static final String type_xml = "xml";
403+       
404+}
405+
406+//=============================================================================
407\ No newline at end of file
408Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java
409===================================================================
410--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java       (revision 8189)
411+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java       (working copy)
412@@ -121,6 +121,7 @@
413                settingMan.add(dbms, "id:"+siteId, "icon", params.icon);
414                settingMan.add(dbms, "id:"+optionsId, "validate", params.validate);
415                settingMan.add(dbms, "id:"+optionsId, "recurse",  params.recurse);
416+               settingMan.add(dbms, "id:"+optionsId, "subtype", params.subtype);
417        }
418 
419        //---------------------------------------------------------------------------
420Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java
421===================================================================
422--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java  (revision 8189)
423+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java  (working copy)
424@@ -63,6 +63,8 @@
425 
426                validate = Util.getParam(opt, "validate", false);
427                recurse  = Util.getParam(opt, "recurse",  false);
428+               
429+               subtype  = Util.getParam(opt, "subtype","");
430        }
431 
432        //---------------------------------------------------------------------------
433@@ -83,6 +85,8 @@
434 
435                validate = Util.getParam(opt, "validate", validate);
436                recurse  = Util.getParam(opt, "recurse",  recurse);
437+               
438+               subtype  = Util.getParam(opt, "subtype",  subtype);
439        }
440 
441        //---------------------------------------------------------------------------
442@@ -102,6 +106,8 @@
443                copy.validate = validate;
444                copy.recurse  = recurse;
445 
446+               copy.subtype = subtype;
447+               
448                return copy;
449        }
450 
451@@ -116,6 +122,8 @@
452 
453        public boolean validate;
454        public boolean recurse;
455+       
456+       public String subtype;
457 }
458 
459 //=============================================================================
460Index: web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavRemoteFile.java
461===================================================================
462--- web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavRemoteFile.java      (revision 8189)
463+++ web/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavRemoteFile.java      (working copy)
464@@ -26,6 +26,7 @@
465 import jeeves.utils.Xml;
466 import org.apache.commons.httpclient.HttpException;
467 import org.apache.webdav.lib.WebdavResource;
468+import org.fao.geonet.kernel.SchemaManager;
469 import org.fao.geonet.util.ISODate;
470 import org.jdom.Element;
471 
472@@ -56,7 +57,7 @@
473 
474        //---------------------------------------------------------------------------
475 
476-       public Element getMetadata() throws Exception {
477+       public Element getMetadata(SchemaManager  schemaMan) throws Exception {
478                try {
479                        wr.setPath(path);
480             return Xml.loadStream(wr.getMethodData());
481Index: web/src/main/webapp/loc/ar/xml/harvesting.xml
482===================================================================
483--- web/src/main/webapp/loc/ar/xml/harvesting.xml       (revision 8189)
484+++ web/src/main/webapp/loc/ar/xml/harvesting.xml       (working copy)
485@@ -24,7 +24,7 @@
486       
487        <info type="webdav">
488                <short>Web DAV</short>
489-               <long>Web DAV server</long>
490+               <long>Web Access Folder/Web DAV server</long>
491        </info>
492       
493        <info type="csw">
494Index: web/src/main/webapp/loc/ca/xml/harvesting.xml
495===================================================================
496--- web/src/main/webapp/loc/ca/xml/harvesting.xml       (revision 8189)
497+++ web/src/main/webapp/loc/ca/xml/harvesting.xml       (working copy)
498@@ -24,7 +24,7 @@
499       
500        <info type="webdav">
501                <short>Web DAV</short>
502-               <long>Servidor Web DAV</long>
503+               <long>Web Access Folder/Web DAV server</long>
504        </info>
505       
506        <info type="csw">
507Index: web/src/main/webapp/loc/cn/xml/harvesting.xml
508===================================================================
509--- web/src/main/webapp/loc/cn/xml/harvesting.xml       (revision 8189)
510+++ web/src/main/webapp/loc/cn/xml/harvesting.xml       (working copy)
511@@ -24,7 +24,7 @@
512       
513        <info type="webdav">
514                <short>Web DAV</short>
515-               <long>Web DAV server</long>
516+               <long>Web Access Folder/Web DAV server</long>
517        </info>
518       
519        <info type="csw">
520Index: web/src/main/webapp/loc/de/xml/harvesting.xml
521===================================================================
522--- web/src/main/webapp/loc/de/xml/harvesting.xml       (revision 8189)
523+++ web/src/main/webapp/loc/de/xml/harvesting.xml       (working copy)
524@@ -24,7 +24,7 @@
525       
526        <info type="webdav">
527                <short>Web DAV</short>
528-               <long>Web DAV Server</long>
529+               <long>Web Access Folder/Web DAV server</long>
530        </info>
531       
532        <info type="csw">
533Index: web/src/main/webapp/loc/en/xml/harvesting.xml
534===================================================================
535--- web/src/main/webapp/loc/en/xml/harvesting.xml       (revision 8189)
536+++ web/src/main/webapp/loc/en/xml/harvesting.xml       (working copy)
537@@ -24,7 +24,7 @@
538       
539        <info type="webdav">
540                <short>Web DAV</short>
541-               <long>Web DAV server</long>
542+               <long>Web Access Folder/Web DAV server</long>
543        </info>
544       
545        <info type="csw">
546Index: web/src/main/webapp/loc/es/xml/harvesting.xml
547===================================================================
548--- web/src/main/webapp/loc/es/xml/harvesting.xml       (revision 8189)
549+++ web/src/main/webapp/loc/es/xml/harvesting.xml       (working copy)
550@@ -24,7 +24,7 @@
551       
552        <info type="webdav">
553                <short>Web DAV</short>
554-               <long>Servidor Web DAV server</long>
555+               <long>Web Access Folder/Servidor Web DAV server</long>
556        </info>
557       
558        <info type="csw">
559Index: web/src/main/webapp/loc/fi/xml/harvesting.xml
560===================================================================
561--- web/src/main/webapp/loc/fi/xml/harvesting.xml       (revision 8189)
562+++ web/src/main/webapp/loc/fi/xml/harvesting.xml       (working copy)
563@@ -24,7 +24,7 @@
564       
565        <info type="webdav">
566                <short>Web DAV</short>
567-               <long>Web DAV server</long>
568+               <long>Web Access Folder/Web DAV server</long>
569        </info>
570       
571        <info type="csw">
572Index: web/src/main/webapp/loc/fr/xml/harvesting.xml
573===================================================================
574--- web/src/main/webapp/loc/fr/xml/harvesting.xml       (revision 8189)
575+++ web/src/main/webapp/loc/fr/xml/harvesting.xml       (working copy)
576@@ -24,7 +24,7 @@
577       
578        <info type="webdav">
579                <short>Web DAV</short>
580-               <long>Serveur Web DAV</long>
581+               <long>Web Access Folder/Serveur Web DAV</long>
582        </info>
583       
584        <info type="csw">
585Index: web/src/main/webapp/loc/nl/xml/harvesting.xml
586===================================================================
587--- web/src/main/webapp/loc/nl/xml/harvesting.xml       (revision 8189)
588+++ web/src/main/webapp/loc/nl/xml/harvesting.xml       (working copy)
589@@ -24,7 +24,7 @@
590       
591        <info type="webdav">
592                <short>WebDAV</short>
593-               <long>WebDAV server</long>
594+               <long>Web Access Folder/WebDAV server</long>
595        </info>
596       
597        <info type="csw">
598Index: web/src/main/webapp/loc/no/xml/harvesting.xml
599===================================================================
600--- web/src/main/webapp/loc/no/xml/harvesting.xml       (revision 8189)
601+++ web/src/main/webapp/loc/no/xml/harvesting.xml       (working copy)
602@@ -24,7 +24,7 @@
603       
604        <info type="webdav">
605                <short>Web DAV</short>
606-               <long>Web DAV server</long>
607+               <long>Web Access Folder/Web DAV server</long>
608        </info>
609       
610        <info type="csw">
611Index: web/src/main/webapp/loc/pt/xml/harvesting.xml
612===================================================================
613--- web/src/main/webapp/loc/pt/xml/harvesting.xml       (revision 8189)
614+++ web/src/main/webapp/loc/pt/xml/harvesting.xml       (working copy)
615@@ -24,7 +24,7 @@
616       
617        <info type="webdav">
618                <short>Web DAV</short>
619-               <long> Servidor Web DAV</long>
620+               <long> Web Access Folder/Servidor Web DAV</long>
621        </info>
622       
623        <info type="csw">
624Index: web/src/main/webapp/loc/ru/xml/harvesting.xml
625===================================================================
626--- web/src/main/webapp/loc/ru/xml/harvesting.xml       (revision 8189)
627+++ web/src/main/webapp/loc/ru/xml/harvesting.xml       (working copy)
628@@ -24,7 +24,7 @@
629 
630        <info type="webdav">
631                <short>Web DAV</short>
632-               <long>Сервер Web DAV</long>
633+               <long>Web Access Folder/Сервер Web DAV</long>
634        </info>
635 
636        <info type="csw">
637Index: web/src/main/webapp/scripts/harvesting/webdav/model.js
638===================================================================
639--- web/src/main/webapp/scripts/harvesting/webdav/model.js      (revision 8189)
640+++ web/src/main/webapp/scripts/harvesting/webdav/model.js      (working copy)
641@@ -117,6 +117,7 @@
642 '      <every>{EVERY}</every>'+
643 '      <oneRunOnly>{ONE_RUN_ONLY}</oneRunOnly>'+
644 '      <recurse>{RECURSE}</recurse>'+
645+'      <subtype>{SUBTYPE}</subtype>'+
646 '      <validate>{VALIDATE}</validate>'+
647 '    </options>'+
648 
649Index: web/src/main/webapp/scripts/harvesting/webdav/view.js
650===================================================================
651--- web/src/main/webapp/scripts/harvesting/webdav/view.js       (revision 8189)
652+++ web/src/main/webapp/scripts/harvesting/webdav/view.js       (working copy)
653@@ -44,6 +44,7 @@
654                { id:'wd.name',        type:'length',   minSize :1,  maxSize :200 },
655                { id:'wd.url',         type:'length',   minSize :1,  maxSize :200 },
656                { id:'wd.url',         type:'url' },
657+               { id:'wd.subtype',     type:'length',   minSize :1,  maxSize :200 },
658                { id:'wd.username',    type:'length',   minSize :0,  maxSize :200 },
659                { id:'wd.password',    type:'length',   minSize :0,  maxSize :200 },
660                { id:'wd.every.days',  type:'integer',  minValue:0, maxValue:99 },
661@@ -91,6 +92,7 @@
662        hvutil.setOption(site,    'icon',     'wd.icon');
663        hvutil.setOption(options, 'validate', 'wd.validate');
664        hvutil.setOption(options, 'recurse',  'wd.recurse');
665+       hvutil.setOption(options, 'subtype',  'wd.subtype');
666       
667        //--- add privileges entries
668       
669@@ -116,7 +118,7 @@
670        data.ICON     = $F('wd.icon');
671        data.VALIDATE = $('wd.validate').checked;
672        data.RECURSE  = $('wd.recurse') .checked;
673-       
674+       data.SUBTYPE  = $F('wd.subtype');
675        //--- retrieve privileges and categories information
676       
677        data.PRIVILEGES = this.getPrivileges();
678Index: web/src/main/webapp/xsl/harvesting/webdav/webdav.xsl
679===================================================================
680--- web/src/main/webapp/xsl/harvesting/webdav/webdav.xsl        (revision 8189)
681+++ web/src/main/webapp/xsl/harvesting/webdav/webdav.xsl        (working copy)
682@@ -26,6 +26,17 @@
683                <h1 align="left"><xsl:value-of select="/root/gui/harvesting/site"/></h1>
684       
685                <table border="0">
686+
687+                       <tr>
688+                               <td class="padded" valign="bottom">Subtype</td>
689+                               <td class="padded">
690+                                       <select id="wd.subtype" class="content" name="subytpe" size="1">
691+                                               <option  value="waf">Web Access Folder(WAF)</option>
692+                                               <option  value="webdav">Web DAV Server(WebDAV)</option>                                   
693+                                       </select>
694+                               </td>
695+                       </tr>
696+                       
697                        <tr>
698                                <td class="padded"><xsl:value-of select="/root/gui/harvesting/name"/></td>
699                                <td class="padded"><input id="wd.name" class="content" type="text" value="" size="30"/></td>
700@@ -75,6 +86,7 @@
701                <h1 align="left"><xsl:value-of select="/root/gui/harvesting/options"/></h1>
702 
703                <table border="0">
704+                       
705                        <tr>
706                                <td class="padded"><xsl:value-of select="/root/gui/harvesting/every"/></td>
707                                <td class="padded">
708Index: web/src/main/webapp/xsl/xml/harvesting/webdav.xsl
709===================================================================
710--- web/src/main/webapp/xsl/xml/harvesting/webdav.xsl   (revision 8189)
711+++ web/src/main/webapp/xsl/xml/harvesting/webdav.xsl   (working copy)
712@@ -20,6 +20,7 @@
713        <xsl:template match="*" mode="options">
714                <validate><xsl:value-of  select="validate/value" /></validate>
715                <recurse><xsl:value-of select="recurse/value" /></recurse>
716+               <subtype><xsl:value-of select="subtype/value" /></subtype>
717        </xsl:template>
718 
719        <!-- ============================================================================================= -->