1 package org.apache.maven.search.request;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Map;
23 import java.util.Objects;
24
25 import static java.util.Objects.requireNonNull;
26
27
28
29
30 public abstract class Field
31 {
32 private final String fieldName;
33
34 private final boolean searchable;
35
36 private Field( String fieldName, boolean searchable )
37 {
38 this.fieldName = requireNonNull( fieldName );
39 this.searchable = searchable;
40 }
41
42
43
44
45 public String getFieldName()
46 {
47 return fieldName;
48 }
49
50
51
52
53 public boolean isSearchable()
54 {
55 return searchable;
56 }
57
58
59
60
61
62 public abstract Object getFieldValue( Map<Field, Object> record );
63
64 @Override
65 public boolean equals( Object o )
66 {
67 if ( this == o )
68 {
69 return true;
70 }
71 if ( o == null || getClass() != o.getClass() )
72 {
73 return false;
74 }
75 Field fieldName1 = (Field) o;
76 return Objects.equals( getFieldName(), fieldName1.getFieldName() );
77 }
78
79 @Override
80 public int hashCode()
81 {
82 return Objects.hash( getFieldName() );
83 }
84
85 @Override
86 public String toString()
87 {
88 return fieldName;
89 }
90
91 public static class StringField extends Field
92 {
93 public StringField( String fieldName, boolean searchable )
94 {
95 super( fieldName, searchable );
96 }
97
98 @Override
99 public String getFieldValue( Map<Field, Object> record )
100 {
101 return (String) record.get( this );
102 }
103 }
104
105 public static class NumberField extends Field
106 {
107 public NumberField( String fieldName, boolean searchable )
108 {
109 super( fieldName, searchable );
110 }
111
112 @Override
113 public Number getFieldValue( Map<Field, Object> record )
114 {
115 return (Number) record.get( this );
116 }
117 }
118
119 public static class BooleanField extends Field
120 {
121 public BooleanField( String fieldName, boolean searchable )
122 {
123 super( fieldName, searchable );
124 }
125
126 @Override
127 public Boolean getFieldValue( Map<Field, Object> record )
128 {
129 return (Boolean) record.get( this );
130 }
131 }
132 }