Revision 3510 trunk/applications/appCatalogYNomenclatorClient/src/es/gva/cit/catalogClient/csw/filters/CSWFilter.java
CSWFilter.java | ||
---|---|---|
40 | 40 |
*/ |
41 | 41 |
package es.gva.cit.catalogClient.csw.filters; |
42 | 42 |
|
43 |
import es.gva.cit.catalogClient.filters.AbstractFilter; |
|
43 | 44 |
import es.gva.cit.catalogClient.filters.AdditionalClauses; |
44 |
import es.gva.cit.catalogClient.filters.IFilter; |
|
45 | 45 |
import es.gva.cit.catalogClient.languages.FilterEncoding; |
46 | 46 |
import es.gva.cit.catalogClient.querys.Query; |
47 | 47 |
import es.gva.cit.catalogClient.schemas.DublinCoreSchema; |
... | ... | |
58 | 58 |
* |
59 | 59 |
* @author Jorge Piera Llodra (piera_jor@gva.es) |
60 | 60 |
*/ |
61 |
public class CSWFilter extends Query implements IFilter {
|
|
62 |
ISchemas equiv = null; |
|
63 |
|
|
61 |
public class CSWFilter extends AbstractFilter {
|
|
62 |
private ISchemas equiv = null;
|
|
63 |
|
|
64 | 64 |
public CSWFilter(Query query) { |
65 |
super(query.getTitle(), query.getTitleFilter(), query.getAbstract(), |
|
66 |
query.getThemeKey(), query.getTopic(), query.getScale(), |
|
67 |
query.getProvider(), query.getDateFrom(), query.getDateTo(), |
|
68 |
query.getCoordenates(), query.getCoordenatesFilter(),query.getTranslator()); |
|
69 |
setMinimized(query.isMinimized()); |
|
70 |
setCoordinatesClicked(query.isCoordinatesClicked()); |
|
71 |
} |
|
72 |
|
|
65 |
super(query); |
|
66 |
} |
|
73 | 67 |
|
74 | 68 |
/** |
75 | 69 |
* Return a CQL-Text query |
... | ... | |
81 | 75 |
|
82 | 76 |
setProfile(profile); |
83 | 77 |
|
84 |
FilterEncoding query = new FilterEncoding("ogc:", "*", "?", "\\",
|
|
78 |
FilterEncoding filter = new FilterEncoding("ogc:", "*", "?", "\\",
|
|
85 | 79 |
"xmlns:ogc=\"http://www.opengis.net/ogc\""); |
80 |
|
|
81 |
addAdditionalClauses(filter); |
|
86 | 82 |
|
87 |
addAdditionalClauses(query); |
|
88 |
|
|
89 |
if (getTitle() != null) { |
|
90 |
query.addClauses(equiv.getTitle(), equiv.getTitleValue(getTitle(),getTitleFilter()), getTitleFilter(), |
|
83 |
if (query.getTitle() != null) { |
|
84 |
filter.addClauses(equiv.getTitle(), equiv.getTitleValue(query.getTitle(),query.getTitleFilter()), query.getTitleFilter(), |
|
91 | 85 |
"PropertyIsLike", "L", "And"); |
92 | 86 |
} |
93 | 87 |
|
94 | 88 |
String operator = "And"; |
95 |
if (isMinimized()) |
|
89 |
|
|
90 |
if (query.isMinimized()) |
|
96 | 91 |
operator = "Or"; |
97 | 92 |
|
98 | 93 |
|
99 |
if (getAbstract() != null) { |
|
100 |
query.addClauses(equiv.getAbstract(), Strings.addAsteriscsFromAnArray(getAbstract()),
|
|
94 |
if (query.getAbstract() != null) {
|
|
95 |
filter.addClauses(equiv.getAbstract(), Strings.addAsteriscsFromAnArray(query.getAbstract()),
|
|
101 | 96 |
"Y", "PropertyIsLike", "L", operator); |
102 | 97 |
} |
103 | 98 |
|
104 |
if (getThemeKey() != null) { |
|
105 |
query.addClauses(equiv.getThemeKey(), getThemeKey(), "Y",
|
|
99 |
if (query.getThemeKey() != null) {
|
|
100 |
filter.addClauses(equiv.getThemeKey(), query.getThemeKey(), "Y",
|
|
106 | 101 |
"PropertyIsLike", "L", "And"); |
107 | 102 |
} |
108 | 103 |
|
109 |
if ((getTopic() != null) && (!getTopic().equals(this.getTranslator().getText("cathegoryAny")))) {
|
|
110 |
query.addClauses(equiv.getTopic(), equiv.getTopicValue(getTopic()),
|
|
104 |
if ((query.getTopic() != null) && (!query.getTopic().equals(query.getTranslator().getText("cathegoryAny")))) {
|
|
105 |
filter.addClauses(equiv.getTopic(), equiv.getTopicValue(query.getTopic()),
|
|
111 | 106 |
"E", "PropertyIsEqualTo", "L", "And"); |
112 | 107 |
} |
113 | 108 |
|
... | ... | |
117 | 112 |
} |
118 | 113 |
*/ |
119 | 114 |
|
120 |
if (getProvider() != null) { |
|
121 |
query.addClauses(equiv.getProvider(), equiv.getProviderValue(getProvider()),
|
|
115 |
if (query.getProvider() != null) {
|
|
116 |
filter.addClauses(equiv.getProvider(), equiv.getProviderValue(query.getProvider()),
|
|
122 | 117 |
"E", "PropertyIsEqualTo" , "L", "And"); |
123 | 118 |
} |
124 | 119 |
|
125 |
if (this.getDateFrom() != null) {
|
|
126 |
query.addClauses(equiv.getDateFrom(), this.getDateFrom(), "E", "PropertyIsGeaterThan" ,"L", "And");
|
|
120 |
if (query.getDateFrom() != null) {
|
|
121 |
filter.addClauses(equiv.getDateFrom(), query.getDateFrom(), "E", "PropertyIsGeaterThan" ,"L", "And");
|
|
127 | 122 |
} |
128 | 123 |
|
129 |
if (this.getDateTo() != null) {
|
|
130 |
query.addClauses(equiv.getDateTo(), this.getDateTo(), "E", "PropertyIsLessThan", "L", "And");
|
|
124 |
if (query.getDateTo() != null) {
|
|
125 |
filter.addClauses(equiv.getDateTo(), query.getDateTo(), "E", "PropertyIsLessThan", "L", "And");
|
|
131 | 126 |
} |
132 | 127 |
|
133 |
if ((getCoordenates() != null) && (isCoordinatesClicked())){
|
|
134 |
query.addBoundingBox(getCoordenates(), equiv.getCoordinates(), getCoordinatesOption(getCoordenatesFilter()));
|
|
128 |
if ((query.getCoordenates() != null) && (query.isCoordinatesClicked())){
|
|
129 |
filter.addBoundingBox(query.getCoordenates(), equiv.getCoordinates(), getCoordinatesOption(query.getCoordenatesFilter()));
|
|
135 | 130 |
} |
136 | 131 |
|
137 |
pregunta = query.toString();
|
|
132 |
pregunta = filter.toString();
|
|
138 | 133 |
|
139 | 134 |
return pregunta; |
140 | 135 |
} |
... | ... | |
146 | 141 |
* @return |
147 | 142 |
*/ |
148 | 143 |
public boolean getCoordinatesOption(String coordinatesOption){ |
149 |
if ((coordinatesOption.equals(getTranslator().getText("coordinatesEqual"))) || |
|
150 |
(coordinatesOption.equals(getTranslator().getText("coordinatesContains"))) || |
|
151 |
(coordinatesOption.equals(getTranslator().getText("coordinatesEnclose")))) |
|
144 |
if ((coordinatesOption.equals(query.getTranslator().getText("coordinatesEqual"))) ||
|
|
145 |
(coordinatesOption.equals(query.getTranslator().getText("coordinatesContains"))) ||
|
|
146 |
(coordinatesOption.equals(query.getTranslator().getText("coordinatesEnclose"))))
|
|
152 | 147 |
return false; |
153 | 148 |
|
154 | 149 |
return true; |
... | ... | |
172 | 167 |
* It adds the aditional clauses (for each profile) |
173 | 168 |
* @param query |
174 | 169 |
*/ |
175 |
public void addAdditionalClauses(FilterEncoding query) {
|
|
170 |
public void addAdditionalClauses(FilterEncoding filter) {
|
|
176 | 171 |
AdditionalClauses[] ac = equiv.getAdditionalClauses(null); |
177 | 172 |
|
178 | 173 |
for (int i = 0; i < ac.length; i++) |
179 |
query.addClauses(ac[i].getProperty(), ac[i].getValue(),
|
|
174 |
filter.addClauses(ac[i].getProperty(), ac[i].getValue(),
|
|
180 | 175 |
ac[i].getConcorancia(), ac[i].getRelationship(), ac[i].getType(),"And"); |
181 | 176 |
} |
182 | 177 |
|
Also available in: Unified diff