View Javadoc
1   package org.opentrafficsim.editor;
2   
3   import org.w3c.dom.DOMException;
4   import org.w3c.dom.Document;
5   import org.w3c.dom.NamedNodeMap;
6   import org.w3c.dom.Node;
7   import org.w3c.dom.NodeList;
8   import org.w3c.dom.UserDataHandler;
9   
10  /**
11   * Singleton at {@code XiIncludeNode.XI_INCLUDE} to use for xi:include nodes in an {@code XsdTreeNode}. Most methods return
12   * {@code null} or do nothing. The attributes contain one attribute named 'File' and one named 'Fallback'.
13   * <p>
14   * Copyright (c) 2023-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
15   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
16   * </p>
17   * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
18   */
19  public final class XiIncludeNode implements Node
20  {
21  
22      /** Singleton instance for xi:include nodes. */
23      public static final Node XI_INCLUDE = new XiIncludeNode();
24  
25      /** Child node that represents the 'File' attribute. */
26      private static final Node FILE_CHILD = new FileNode(new Attributes("File"));
27  
28      /** Child node that represents the 'Fallback' attribute. */
29      private static final Node FALLBACK_CHILD = new FileNode(new Attributes("Fallback"));
30  
31      /**
32       * Private constructor.
33       */
34      private XiIncludeNode()
35      {
36  
37      }
38  
39      @Override
40      public String getNodeName()
41      {
42          return "xi:include";
43      }
44  
45      @Override
46      public String getNodeValue() throws DOMException
47      {
48          return null;
49      }
50  
51      @Override
52      public void setNodeValue(final String nodeValue) throws DOMException
53      {
54      }
55  
56      @Override
57      public short getNodeType()
58      {
59          return Node.TEXT_NODE;
60      }
61  
62      @Override
63      public Node getParentNode()
64      {
65          return null;
66      }
67  
68      @Override
69      public NodeList getChildNodes()
70      {
71          return new NodeList()
72          {
73              @Override
74              public Node item(final int index)
75              {
76                  if (index == 0)
77                  {
78                      return FILE_CHILD;
79                  }
80                  if (index == 1)
81                  {
82                      return FALLBACK_CHILD;
83                  }
84                  return null;
85              }
86  
87              @Override
88              public int getLength()
89              {
90                  return 2;
91              }
92          };
93      }
94  
95      @Override
96      public Node getFirstChild()
97      {
98          return FILE_CHILD;
99      }
100 
101     @Override
102     public Node getLastChild()
103     {
104         return FALLBACK_CHILD;
105     }
106 
107     @Override
108     public Node getPreviousSibling()
109     {
110         return null;
111     }
112 
113     @Override
114     public Node getNextSibling()
115     {
116         return null;
117     }
118 
119     @Override
120     public NamedNodeMap getAttributes()
121     {
122         return null;
123     }
124 
125     @Override
126     public Document getOwnerDocument()
127     {
128         return null;
129     }
130 
131     @Override
132     public Node insertBefore(final Node newChild, final Node refChild) throws DOMException
133     {
134         return null;
135     }
136 
137     @Override
138     public Node replaceChild(final Node newChild, final Node oldChild) throws DOMException
139     {
140         return null;
141     }
142 
143     @Override
144     public Node removeChild(final Node oldChild) throws DOMException
145     {
146         return null;
147     }
148 
149     @Override
150     public Node appendChild(final Node newChild) throws DOMException
151     {
152         return null;
153     }
154 
155     @Override
156     public boolean hasChildNodes()
157     {
158         return true;
159     }
160 
161     @Override
162     public Node cloneNode(final boolean deep)
163     {
164         return null;
165     }
166 
167     @Override
168     public void normalize()
169     {
170     }
171 
172     @Override
173     public boolean isSupported(final String feature, final String version)
174     {
175         return false;
176     }
177 
178     @Override
179     public String getNamespaceURI()
180     {
181         return null;
182     }
183 
184     @Override
185     public String getPrefix()
186     {
187         return null;
188     }
189 
190     @Override
191     public void setPrefix(final String prefix) throws DOMException
192     {
193     }
194 
195     @Override
196     public String getLocalName()
197     {
198         return null;
199     }
200 
201     @Override
202     public boolean hasAttributes()
203     {
204         return false;
205     }
206 
207     @Override
208     public String getBaseURI()
209     {
210         return null;
211     }
212 
213     @Override
214     public short compareDocumentPosition(final Node other) throws DOMException
215     {
216         return 0;
217     }
218 
219     @Override
220     public String getTextContent() throws DOMException
221     {
222         return null;
223     }
224 
225     @Override
226     public void setTextContent(final String textContent) throws DOMException
227     {
228     }
229 
230     @Override
231     public boolean isSameNode(final Node other)
232     {
233         return false;
234     }
235 
236     @Override
237     public String lookupPrefix(final String namespaceURI)
238     {
239         return null;
240     }
241 
242     @Override
243     public boolean isDefaultNamespace(final String namespaceURI)
244     {
245         return false;
246     }
247 
248     @Override
249     public String lookupNamespaceURI(final String prefix)
250     {
251         return null;
252     }
253 
254     @Override
255     public boolean isEqualNode(final Node arg)
256     {
257         return false;
258     }
259 
260     @Override
261     public Object getFeature(final String feature, final String version)
262     {
263         return null;
264     }
265 
266     @Override
267     public Object setUserData(final String key, final Object data, final UserDataHandler handler)
268     {
269         return null;
270     }
271 
272     @Override
273     public Object getUserData(final String key)
274     {
275         return null;
276     }
277 
278     /**
279      * Implementation of {@code Node} to provide the 'File' attribute child node.
280      * <p>
281      * Copyright (c) 2023-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
282      * <br>
283      * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
284      * </p>
285      * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
286      */
287     private static class FileNode implements Node
288     {
289 
290         /** Attributes. */
291         private final Attributes attributes;
292 
293         /**
294          * Constructor.
295          * @param attributes attributes.
296          */
297         public FileNode(final Attributes attributes)
298         {
299             this.attributes = attributes;
300         }
301 
302         @Override
303         public String getNodeName()
304         {
305             return "xsd:attribute";
306         }
307 
308         @Override
309         public String getNodeValue() throws DOMException
310         {
311             return null;
312         }
313 
314         @Override
315         public void setNodeValue(final String nodeValue) throws DOMException
316         {
317         }
318 
319         @Override
320         public short getNodeType()
321         {
322             return Node.ATTRIBUTE_NODE;
323         }
324 
325         @Override
326         public Node getParentNode()
327         {
328             return null;
329         }
330 
331         @Override
332         public NodeList getChildNodes()
333         {
334             return null;
335         }
336 
337         @Override
338         public Node getFirstChild()
339         {
340             return null;
341         }
342 
343         @Override
344         public Node getLastChild()
345         {
346             return null;
347         }
348 
349         @Override
350         public Node getPreviousSibling()
351         {
352             return null;
353         }
354 
355         @Override
356         public Node getNextSibling()
357         {
358             return null;
359         }
360 
361         @Override
362         public NamedNodeMap getAttributes()
363         {
364             return this.attributes;
365         }
366 
367         @Override
368         public Document getOwnerDocument()
369         {
370             return null;
371         }
372 
373         @Override
374         public Node insertBefore(final Node newChild, final Node refChild) throws DOMException
375         {
376             return null;
377         }
378 
379         @Override
380         public Node replaceChild(final Node newChild, final Node oldChild) throws DOMException
381         {
382             return null;
383         }
384 
385         @Override
386         public Node removeChild(final Node oldChild) throws DOMException
387         {
388             return null;
389         }
390 
391         @Override
392         public Node appendChild(final Node newChild) throws DOMException
393         {
394             return null;
395         }
396 
397         @Override
398         public boolean hasChildNodes()
399         {
400             return false;
401         }
402 
403         @Override
404         public Node cloneNode(final boolean deep)
405         {
406             return null;
407         }
408 
409         @Override
410         public void normalize()
411         {
412         }
413 
414         @Override
415         public boolean isSupported(final String feature, final String version)
416         {
417             return false;
418         }
419 
420         @Override
421         public String getNamespaceURI()
422         {
423             return null;
424         }
425 
426         @Override
427         public String getPrefix()
428         {
429             return null;
430         }
431 
432         @Override
433         public void setPrefix(final String prefix) throws DOMException
434         {
435         }
436 
437         @Override
438         public String getLocalName()
439         {
440             return null;
441         }
442 
443         @Override
444         public boolean hasAttributes()
445         {
446             return true;
447         }
448 
449         @Override
450         public String getBaseURI()
451         {
452             return null;
453         }
454 
455         @Override
456         public short compareDocumentPosition(final Node other) throws DOMException
457         {
458             return 0;
459         }
460 
461         @Override
462         public String getTextContent() throws DOMException
463         {
464             return null;
465         }
466 
467         @Override
468         public void setTextContent(final String textContent) throws DOMException
469         {
470         }
471 
472         @Override
473         public boolean isSameNode(final Node other)
474         {
475             return false;
476         }
477 
478         @Override
479         public String lookupPrefix(final String namespaceURI)
480         {
481             return null;
482         }
483 
484         @Override
485         public boolean isDefaultNamespace(final String namespaceURI)
486         {
487             return false;
488         }
489 
490         @Override
491         public String lookupNamespaceURI(final String prefix)
492         {
493             return null;
494         }
495 
496         @Override
497         public boolean isEqualNode(final Node arg)
498         {
499             return false;
500         }
501 
502         @Override
503         public Object getFeature(final String feature, final String version)
504         {
505             return null;
506         }
507 
508         @Override
509         public Object setUserData(final String key, final Object data, final UserDataHandler handler)
510         {
511             return null;
512         }
513 
514         @Override
515         public Object getUserData(final String key)
516         {
517             return null;
518         }
519 
520     }
521 
522     /**
523      * Implementation of {@code NamedNodeMap} to provide the 'File' attribute.
524      * <p>
525      * Copyright (c) 2023-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
526      * <br>
527      * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
528      * </p>
529      * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
530      */
531     private static class Attributes implements NamedNodeMap
532     {
533 
534         /** Attribute name in GUI. */
535         private final String name;
536 
537         /**
538          * Constructor.
539          * @param name attribute name in GUI.
540          */
541         public Attributes(final String name)
542         {
543             this.name = name;
544         }
545 
546         /** File node. */
547         private Node file = new Node()
548         {
549 
550             @Override
551             public String getNodeName()
552             {
553                 return null;
554             }
555 
556             @Override
557             public String getNodeValue() throws DOMException
558             {
559                 return Attributes.this.name;
560             }
561 
562             @Override
563             public void setNodeValue(final String nodeValue) throws DOMException
564             {
565             }
566 
567             @Override
568             public short getNodeType()
569             {
570                 return 0;
571             }
572 
573             @Override
574             public Node getParentNode()
575             {
576                 return null;
577             }
578 
579             @Override
580             public NodeList getChildNodes()
581             {
582                 return null;
583             }
584 
585             @Override
586             public Node getFirstChild()
587             {
588                 return null;
589             }
590 
591             @Override
592             public Node getLastChild()
593             {
594                 return null;
595             }
596 
597             @Override
598             public Node getPreviousSibling()
599             {
600                 return null;
601             }
602 
603             @Override
604             public Node getNextSibling()
605             {
606                 return null;
607             }
608 
609             @Override
610             public NamedNodeMap getAttributes()
611             {
612                 return null;
613             }
614 
615             @Override
616             public Document getOwnerDocument()
617             {
618                 return null;
619             }
620 
621             @Override
622             public Node insertBefore(final Node newChild, final Node refChild) throws DOMException
623             {
624                 return null;
625             }
626 
627             @Override
628             public Node replaceChild(final Node newChild, final Node oldChild) throws DOMException
629             {
630                 return null;
631             }
632 
633             @Override
634             public Node removeChild(final Node oldChild) throws DOMException
635             {
636                 return null;
637             }
638 
639             @Override
640             public Node appendChild(final Node newChild) throws DOMException
641             {
642                 return null;
643             }
644 
645             @Override
646             public boolean hasChildNodes()
647             {
648                 return false;
649             }
650 
651             @Override
652             public Node cloneNode(final boolean deep)
653             {
654                 return null;
655             }
656 
657             @Override
658             public void normalize()
659             {
660             }
661 
662             @Override
663             public boolean isSupported(final String feature, final String version)
664             {
665                 return false;
666             }
667 
668             @Override
669             public String getNamespaceURI()
670             {
671                 return null;
672             }
673 
674             @Override
675             public String getPrefix()
676             {
677                 return null;
678             }
679 
680             @Override
681             public void setPrefix(final String prefix) throws DOMException
682             {
683             }
684 
685             @Override
686             public String getLocalName()
687             {
688                 return null;
689             }
690 
691             @Override
692             public boolean hasAttributes()
693             {
694                 return false;
695             }
696 
697             @Override
698             public String getBaseURI()
699             {
700                 return null;
701             }
702 
703             @Override
704             public short compareDocumentPosition(final Node other) throws DOMException
705             {
706                 return 0;
707             }
708 
709             @Override
710             public String getTextContent() throws DOMException
711             {
712                 return null;
713             }
714 
715             @Override
716             public void setTextContent(final String textContent) throws DOMException
717             {
718             }
719 
720             @Override
721             public boolean isSameNode(final Node other)
722             {
723                 return false;
724             }
725 
726             @Override
727             public String lookupPrefix(final String namespaceURI)
728             {
729                 return null;
730             }
731 
732             @Override
733             public boolean isDefaultNamespace(final String namespaceURI)
734             {
735                 return false;
736             }
737 
738             @Override
739             public String lookupNamespaceURI(final String prefix)
740             {
741                 return null;
742             }
743 
744             @Override
745             public boolean isEqualNode(final Node arg)
746             {
747                 return false;
748             }
749 
750             @Override
751             public Object getFeature(final String feature, final String version)
752             {
753                 return null;
754             }
755 
756             @Override
757             public Object setUserData(final String key, final Object data, final UserDataHandler handler)
758             {
759                 return null;
760             }
761 
762             @Override
763             public Object getUserData(final String key)
764             {
765                 return null;
766             }
767 
768         };
769 
770         @Override
771         public Node getNamedItem(final String name)
772         {
773             if (name.equals("name"))
774             {
775                 return this.file;
776             }
777             return null;
778         }
779 
780         @Override
781         public Node setNamedItem(final Node arg) throws DOMException
782         {
783             return null;
784         }
785 
786         @Override
787         public Node removeNamedItem(final String name) throws DOMException
788         {
789             return null;
790         }
791 
792         @Override
793         public Node item(final int index)
794         {
795             if (index == 0)
796             {
797                 return this.file;
798             }
799             return null;
800         }
801 
802         @Override
803         public int getLength()
804         {
805             return 1;
806         }
807 
808         @Override
809         public Node getNamedItemNS(final String namespaceURI, final String localName) throws DOMException
810         {
811             return null;
812         }
813 
814         @Override
815         public Node setNamedItemNS(final Node arg) throws DOMException
816         {
817             return null;
818         }
819 
820         @Override
821         public Node removeNamedItemNS(final String namespaceURI, final String localName) throws DOMException
822         {
823             return null;
824         }
825 
826     }
827 
828 }