001: /*
002: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
003: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
004: */
005:
006: package com.sun.portal.search.rdm;
007:
008: import com.sun.portal.search.soif.*;
009:
010: import java.util.*;
011:
012: /** RDM Query
013: *
014: * Valid SOIF Attribute names for @RDMQUERY objects:
015: * Scope REQUIRED
016: * Mode OPTIONAL
017: * View-Attributes OPTIONAL
018: * View-Hits OPTIONAL
019: * View-Order OPTIONAL
020: * View-Template OPTIONAL
021: */
022: public class RDMQuery {
023:
024: SOIF soif;
025:
026: public RDMQuery(String scope) {
027: soif = new SOIF(RDM.A_SN_RDM_QRY, null);
028: if (scope != null)
029: setScope(scope);
030: }
031:
032: public RDMQuery(SOIFInputStream ss) throws Exception {
033: this ((String) null);
034: SOIF s = ss.readSOIF();
035: if (s == null)
036: return; // EOS - some requests don't require RDMQuery
037: if (!s.getSchemaName().equalsIgnoreCase(RDM.A_SN_RDM_QRY))
038: throw new Exception("Expected Query, got: "
039: + s.getSchemaName());
040: soif.merge(s);
041: // Validate header
042: //if (getScope() == null)
043: // throw new Exception("INVALID_SCOPE"); // XXX
044: }
045:
046: /** Macros for accessing @RDMQUERY values
047: * Use prototype: char *RDMQuery_GetXXX(RDMQuery *q).
048: */
049: public String getScope() {
050: return soif.getValue(RDM.A_RDM_SCOPE);
051: }
052:
053: public String getMode() {
054: return soif.getValue(RDM.A_RDM_MODE);
055: }
056:
057: public String getViewAttr() {
058: return soif.getValue(RDM.A_RDM_VIEWATT);
059: }
060:
061: public String getViewHits() {
062: return soif.getValue(RDM.A_RDM_VIEWHIT);
063: }
064:
065: public String getViewOrder() {
066: return soif.getValue(RDM.A_RDM_VIEWORD);
067: }
068:
069: public String getDatabase() {
070: return soif.getValue(RDM.A_RDM_DATABASE);
071: }
072:
073: public String getSearchCategory() {
074: return soif.getValue(RDM.A_RDM_SEARCH_CATEGORY);
075: }
076:
077: public String getHighlight() {
078: return soif.getValue(RDM.A_RDM_HIGHLIGHT);
079: }
080:
081: public String getHighlightTags() {
082: return soif.getValue(RDM.A_RDM_HIGHLIGHT_TAGS);
083: }
084:
085: public String getHighlightTagsField() {
086: return soif.getValue(RDM.A_RDM_HIGHLIGHT_TAGS_FIELD);
087: }
088:
089: public String getPassageContext() {
090: return soif.getValue(RDM.A_RDM_PASSAGE_CONTEXT);
091: }
092:
093: public String getMaxPassages() {
094: return soif.getValue(RDM.A_RDM_MAX_PASSAGES);
095: }
096:
097: public SOIF getSOIF() {
098: return soif;
099: }
100:
101: /** Macros for defining @RDMQUERY values
102: * Use prototype: int RDMQuery_SetXXX(RDMQuery *q, char *newvalue).
103: */
104: public void setScope(String s) {
105: soif.replace(RDM.A_RDM_SCOPE, s);
106: }
107:
108: public void setMode(String s) {
109: soif.replace(RDM.A_RDM_MODE, s);
110: }
111:
112: public void setViewAttr(String s) {
113: soif.replace(RDM.A_RDM_VIEWATT, s);
114: }
115:
116: public void setViewHits(String s) {
117: soif.replace(RDM.A_RDM_VIEWHIT, s);
118: }
119:
120: public void setViewOrder(String s) {
121: soif.replace(RDM.A_RDM_VIEWORD, s);
122: }
123:
124: public void setSearchCategory(String s) {
125: soif.replace(RDM.A_RDM_SEARCH_CATEGORY, s);
126: }
127:
128: public void setDatabase(String s) {
129: soif.replace(RDM.A_RDM_DATABASE, s);
130: }
131:
132: public void setHighlight(String s) {
133: soif.replace(RDM.A_RDM_HIGHLIGHT, s);
134: }
135:
136: public void setHighlightTags(String s) {
137: soif.replace(RDM.A_RDM_HIGHLIGHT_TAGS, s);
138: }
139:
140: public void setHighlightTagsField(String s) {
141: soif.replace(RDM.A_RDM_HIGHLIGHT_TAGS_FIELD, s);
142: }
143:
144: public void setPassageContext(String s) {
145: soif.replace(RDM.A_RDM_PASSAGE_CONTEXT, s);
146: }
147:
148: public void setMaxPassages(String s) {
149: soif.replace(RDM.A_RDM_MAX_PASSAGES, s);
150: }
151:
152: }
|