1 package org.apache.commons.digester3;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static java.lang.String.format;
23
24 import org.xml.sax.Attributes;
25
26
27
28
29 final class PatternRuleMatcher
30 implements RuleMatcher
31 {
32
33 private final String pattern;
34
35 private String namespaceURI;
36
37 public PatternRuleMatcher( String pattern )
38 {
39 this( pattern, null );
40 }
41
42 public PatternRuleMatcher( String pattern,
43 {
44 if ( pattern == null )
45 {
46 throw new IllegalArgumentException( "Input pattern must be not null" );
47 }
48
49 this.pattern = pattern;
50 this.namespaceURI = namespaceURI;
51 }
52
53
54
55
56 public boolean match( String namespace, String pattern, String name, Attributes attributes )
57 {
58 if ( namespaceURI != null && !namespace.equals( namespaceURI ) )
59 {
60 return false;
61 }
62 return this.pattern.equals( pattern );
63 }
64
65 public String getPattern()
66 {
67 return pattern;
68 }
69
70 public String getNamespaceURI()
71 {
72 return namespaceURI;
73 }
74
75
76
77
78 @Override
79 public int hashCode()
80 {
81 final int prime = 31;
82 int result = 1;
83 result = prime * result + ( ( namespaceURI == null ) ? 0 : namespaceURI.hashCode() );
84 result = prime * result + pattern.hashCode();
85 return result;
86 }
87
88 @Override
89 public boolean equals( Object obj )
90 {
91 if ( this == obj )
92 {
93 return true;
94 }
95
96 if ( obj == null )
97 {
98 return false;
99 }
100
101 if ( getClass() != obj.getClass() )
102 {
103 return false;
104 }
105
106 PatternRuleMatcher other = (PatternRuleMatcher) obj;
107 if ( namespaceURI == null )
108 {
109 if ( other.getNamespaceURI() != null )
110 {
111 return false;
112 }
113 }
114 else if ( !namespaceURI.equals( other.getNamespaceURI() ) )
115 {
116 return false;
117 }
118
119 if ( !pattern.equals( other.getPattern() ) )
120 {
121 return false;
122 }
123
124 return true;
125 }
126
127
128
129
130 @Override
131 public String toString()
132 {
133 return format( "%s (%s)", pattern, namespaceURI );
134 }
135
136 }