Revision 3510 trunk/applications/appCatalogYNomenclatorClient/src/es/gva/cit/catalogClient/z3950/filters/Z3950Filter.java
Z3950Filter.java | ||
---|---|---|
40 | 40 |
*/ |
41 | 41 |
package es.gva.cit.catalogClient.z3950.filters; |
42 | 42 |
|
43 |
import es.gva.cit.catalogClient.filters.IFilter;
|
|
43 |
import es.gva.cit.catalogClient.filters.AbstractFilter;
|
|
44 | 44 |
import es.gva.cit.catalogClient.languages.BasicEncodingRules; |
45 | 45 |
import es.gva.cit.catalogClient.querys.Query; |
46 | 46 |
|
... | ... | |
48 | 48 |
/** |
49 | 49 |
* @author Jorge Piera Llodra (piera_jor@gva.es) |
50 | 50 |
*/ |
51 |
public class Z3950Filter extends Query implements IFilter {
|
|
51 |
public class Z3950Filter extends AbstractFilter {
|
|
52 | 52 |
public Z3950Filter(Query query) { |
53 |
super(query.getTitle(), query.getTitleFilter(), query.getAbstract(), |
|
54 |
query.getThemeKey(), query.getTopic(), query.getScale(), |
|
55 |
query.getProvider(), query.getDateFrom(), query.getDateTo(), |
|
56 |
query.getCoordenates(), query.getCoordenatesFilter(),query.getTranslator()); |
|
57 |
setMinimized(query.isMinimized()); |
|
58 |
setCoordinatesClicked(query.isCoordinatesClicked()); |
|
53 |
super(query); |
|
59 | 54 |
} |
60 | 55 |
|
61 | 56 |
public String getQuery(String profile) { |
62 | 57 |
// Create a RemoteBooleanQuery |
63 |
BasicEncodingRules query = new BasicEncodingRules();
|
|
58 |
BasicEncodingRules filter = new BasicEncodingRules();
|
|
64 | 59 |
|
65 | 60 |
//Title (title, 4), Word List (6) |
66 |
if (getTitle() != null) { |
|
67 |
query.addClauses("4", "6", "3", this.getTitle(),
|
|
68 |
this.getTitleFilter(),"and");
|
|
61 |
if (query.getTitle() != null) {
|
|
62 |
filter.addClauses("4", "6", "3", query.getTitle(),
|
|
63 |
query.getTitleFilter(),"and");
|
|
69 | 64 |
} |
70 | 65 |
|
71 | 66 |
String operator = "and"; |
72 |
if (isMinimized()) |
|
67 |
if (query.isMinimized())
|
|
73 | 68 |
operator = "or"; |
74 | 69 |
|
75 | 70 |
//Abstract (abstract, 62), Word List (6) |
76 |
if (getAbstract() != null) { |
|
77 |
query.addClauses("62", "6", "3", this.getAbstract(), "E", operator);
|
|
71 |
if (query.getAbstract() != null) {
|
|
72 |
filter.addClauses("62", "6", "3", query.getAbstract(), "E", operator);
|
|
78 | 73 |
} |
79 | 74 |
|
80 | 75 |
//Theme Keyword (themekey, 2002), Word List (6) |
81 |
if (getThemeKey() != null) { |
|
82 |
query.addClauses("2002", "6", "3", this.getThemeKey(), "Y","and");
|
|
76 |
if (query.getThemeKey() != null) {
|
|
77 |
filter.addClauses("2002", "6", "3", query.getThemeKey(), "Y","and");
|
|
83 | 78 |
} |
84 | 79 |
|
85 | 80 |
//Source Scale Denominator (srcscale, 1024), Numeric String (109) |
86 |
if (getScale() != null) { |
|
87 |
if (getMinScale() != null){ |
|
88 |
query.addClauses("1024", "109", "4", getMinScale(),"E","and");
|
|
81 |
if (query.getScale() != null) {
|
|
82 |
if (query.getMinScale() != null){
|
|
83 |
filter.addClauses("1024", "109", "4", query.getMinScale(),"E","and");
|
|
89 | 84 |
} |
90 |
if (getMaxScale() != null){ |
|
91 |
query.addClauses("1024", "109", "2", getMaxScale(),"E","and");
|
|
85 |
if (query.getMaxScale() != null){
|
|
86 |
filter.addClauses("1024", "109", "2", query.getMaxScale(),"E","and");
|
|
92 | 87 |
} |
93 | 88 |
} |
94 | 89 |
|
95 |
if (getProvider() != null) { |
|
96 |
query.addClauses("1005", "6", "3", this.getProvider(), "E","and");
|
|
90 |
if (query.getProvider() != null) {
|
|
91 |
filter.addClauses("1005", "6", "3", query.getProvider(), "E","and");
|
|
97 | 92 |
} |
98 | 93 |
|
99 | 94 |
//Beginning Date (begdate, 2072), Date(210) |
100 |
if (getDateFrom() != null) { |
|
101 |
query.addClauses("2072", "210", "4", this.getDateFrom(), "E","and");
|
|
95 |
if (query.getDateFrom() != null) {
|
|
96 |
filter.addClauses("2072", "210", "4", query.getDateFrom(), "E","and");
|
|
102 | 97 |
} |
103 | 98 |
|
104 | 99 |
//Ending Date (enddate, 2073), Date(210) |
105 |
if (getDateTo() != null) { |
|
106 |
query.addClauses("2073", "210", "2", this.getDateTo(), "E","and");
|
|
100 |
if (query.getDateTo() != null) {
|
|
101 |
filter.addClauses("2073", "210", "2", query.getDateTo(), "E","and");
|
|
107 | 102 |
} |
108 | 103 |
|
109 |
if ((getCoordenates() != null) && (isCoordinatesClicked())){
|
|
110 |
String sNorth = this.getCoordenates().getUly();
|
|
111 |
String sWest = this.getCoordenates().getUlx();
|
|
112 |
String sSouth = this.getCoordenates().getBry();
|
|
113 |
String sEast = this.getCoordenates().getBrx();
|
|
104 |
if ((query.getCoordenates() != null) && (query.isCoordinatesClicked())){
|
|
105 |
String sNorth = query.getCoordenates().getUly();
|
|
106 |
String sWest = query.getCoordenates().getUlx();
|
|
107 |
String sSouth = query.getCoordenates().getBry();
|
|
108 |
String sEast = query.getCoordenates().getBrx();
|
|
114 | 109 |
String sBounding = sNorth + " " + sWest + " " + sSouth + " " + |
115 | 110 |
sEast; |
116 |
String sRelation = getRelation(this.getCoordenatesFilter());
|
|
111 |
String sRelation = getRelation(query.getCoordenatesFilter());
|
|
117 | 112 |
|
118 | 113 |
// Bounding Coordinates (bounding, 2060), Coordinate String (201) |
119 |
query.addClauses("2060", "201", sRelation, sBounding, "E","and");
|
|
114 |
filter.addClauses("2060", "201", sRelation, sBounding, "E","and");
|
|
120 | 115 |
} |
121 | 116 |
|
122 | 117 |
//return query |
123 |
return query.toString();
|
|
118 |
return filter.toString();
|
|
124 | 119 |
} |
125 | 120 |
|
126 | 121 |
/** |
... | ... | |
140 | 135 |
* 3 -> equals |
141 | 136 |
*/ |
142 | 137 |
private String getRelation(String relacion) { |
143 |
if (relacion.equals(getTranslator().getText("coordinatesEqual"))) { |
|
138 |
if (relacion.equals(query.getTranslator().getText("coordinatesEqual"))) {
|
|
144 | 139 |
return "3"; |
145 | 140 |
} |
146 |
if (relacion.equals(getTranslator().getText("coordinatesContains"))) { |
|
141 |
if (relacion.equals(query.getTranslator().getText("coordinatesContains"))) {
|
|
147 | 142 |
return "7"; |
148 | 143 |
} |
149 |
if (relacion.equals(getTranslator().getText("coordinatesEnclose"))) { |
|
144 |
if (relacion.equals(query.getTranslator().getText("coordinatesEnclose"))) {
|
|
150 | 145 |
return "9"; |
151 | 146 |
} else { |
152 | 147 |
return "10"; |
Also available in: Unified diff