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.admin;
007:
008: import java.io.IOException;
009: import java.net.URL;
010: import java.util.logging.Logger;
011:
012: import com.iplanet.jato.view.RequestHandlingTiledViewBase;
013: import com.iplanet.jato.view.View;
014: import com.iplanet.jato.view.ViewBean;
015: import com.iplanet.jato.view.ViewBeanBase;
016: import com.iplanet.jato.view.TiledView;
017: import com.iplanet.jato.RequestHandler;
018: import com.iplanet.jato.model.*;
019: import com.iplanet.jato.view.event.DisplayEvent;
020: import com.iplanet.jato.view.event.RequestInvocationEvent;
021: import com.iplanet.jato.view.event.TiledViewRequestInvocationEvent;
022: import com.iplanet.jato.view.event.ChildDisplayEvent;
023: import com.iplanet.jato.view.html.StaticTextField;
024: import com.iplanet.jato.view.html.ComboBox;
025: import com.iplanet.jato.view.html.TextField;
026: import com.iplanet.jato.view.html.OptionList;
027: import com.iplanet.jato.view.html.CheckBox;
028: import com.iplanet.jato.model.DatasetModel;
029: import javax.servlet.http.HttpServletRequest;
030: import javax.servlet.http.HttpServletResponse;
031:
032: import com.sun.portal.search.robot.FilterRule;
033: import com.sun.portal.search.robot.StringFilter;
034: import com.sun.portal.search.admin.resources.SearchResource;
035: import com.iplanet.am.console.components.view.html.IPlanetButton;
036:
037: import com.sun.portal.search.admin.model.StringFilterListModel;
038: import com.sun.portal.log.common.PortalLogger;
039:
040: public class StringFilterListView extends RequestHandlingTiledViewBase
041: implements TiledView, RequestHandler {
042: public static final String FILTER_SRC_COMBO = "FilterSrc";
043: public static final String FILTER_BY_COMBO = "FilterBy";
044: public static final String PATTERN_TEXT = "Pattern";
045: public static final String DELETE_BUTTON = "DelButton";
046: public static final String DEL_CHECKBOX = "Delete";
047:
048: public String ruleID = null;
049: private StringFilterListModel model = null;
050:
051: // Create a Logger for this class
052: private static Logger debugLogger = PortalLogger
053: .getLogger(StringFilterListView.class);
054:
055: public StringFilterListView(View parent, String name) {
056: super (parent, name);
057: setPrimaryModelClass(StringFilterListModel.class);
058: registerChildren();
059: }
060:
061: protected void registerChildren() {
062: registerChild(FILTER_SRC_COMBO, ComboBox.class);
063: registerChild(FILTER_BY_COMBO, ComboBox.class);
064: registerChild(PATTERN_TEXT, TextField.class);
065: registerChild(DEL_CHECKBOX, CheckBox.class);
066: registerChild(DELETE_BUTTON, IPlanetButton.class);
067: }
068:
069: protected View createChild(String name) {
070: if (name.equals(FILTER_SRC_COMBO)) {
071: ComboBox child = new ComboBox(this , getModel(),
072: FILTER_SRC_COMBO,
073: StringFilterListModel.FIELD_FILTERSRC, "", null);
074: CSViewBeanBase pvb = (CSViewBeanBase) getParentViewBean();
075: OptionList srcOptions = new OptionList(
076: pvb.getLocalizedStringArray("filter.src.options",
077: ","), FilterRule.filter_srcs);
078: child.setOptions(srcOptions);
079: return child;
080: }
081: if (name.equals(FILTER_BY_COMBO)) {
082: ComboBox child = new ComboBox(this , getModel(),
083: FILTER_BY_COMBO,
084: StringFilterListModel.FIELD_FILTERBY, "", null);
085: CSViewBeanBase pvb = (CSViewBeanBase) getParentViewBean();
086: OptionList byOptions = new OptionList(pvb
087: .getLocalizedStringArray("filter.method.options",
088: ","), FilterRule.filter_methods);
089: child.setOptions(byOptions);
090: return child;
091: }
092: if (name.equals(PATTERN_TEXT)) {
093: return new TextField(this , getModel(), PATTERN_TEXT,
094: StringFilterListModel.FIELD_PATTERN, "", null);
095: }
096: if (name.equals(DELETE_BUTTON)) {
097: return new IPlanetButton(this , DELETE_BUTTON, "Delete");
098: }
099: if (name.equals(DEL_CHECKBOX)) {
100: return new CheckBox(this , getModel(), DEL_CHECKBOX,
101: StringFilterListModel.FIELD_DELETE, "true",
102: "false", false, null);
103: }
104: throw new IllegalArgumentException("Invalid child name: "
105: + name);
106: }
107:
108: /**
109: *
110: *
111: */
112: public void beginDisplay(DisplayEvent event)
113: throws ModelControlException {
114: // Ensure the primary model is non-null; if null, it would cause
115: // havoc with the various methods dependent on the primary model
116: StringFilterListModel model = (StringFilterListModel) getPrimaryModel();
117: if (model == null) {
118: debugLogger.finer("PSSH_CSPSA0023");
119: throw new ModelControlException("Primary model is null");
120: }
121:
122: // The model will be executed automatically here by the base class
123: super .beginDisplay(event);
124:
125: resetTileIndex();
126: }
127:
128: public boolean beginDelButtonDisplay(ChildDisplayEvent event)
129: throws ModelControlException {
130: return (getPrimaryModel().getSize() > 1);
131: }
132:
133: /**
134: *
135: *
136: */
137: public Model[] getWebActionModels(int modelType) {
138: // Mark the BasicCustomModel instance we're bound to as auto-retrieving.
139: // This means it will automatically be executed via its retrieve()
140: // method when the tiled view begins display.
141:
142: switch (modelType) {
143: case MODEL_TYPE_RETRIEVE:
144: case MODEL_TYPE_DELETE:
145: case MODEL_TYPE_UPDATE:
146: case MODEL_TYPE_INSERT:
147: StringFilterListModel model = getModel();
148: model.setID(ruleID);
149: return new Model[] { model };
150: }
151:
152: return new Model[0];
153: }
154:
155: /**
156: *
157: *
158: */
159: public StringFilterListModel getModel() {
160: if (model == null) {
161: model = (StringFilterListModel) getRequestContext()
162: .getModelManager().getModel(
163: StringFilterListModel.class);
164: }
165: return model;
166: }
167:
168: public void handleDelButtonRequest(RequestInvocationEvent event)
169: throws ModelControlException {
170: TiledViewRequestInvocationEvent tiledEvent = (TiledViewRequestInvocationEvent) event;
171: int selRow = tiledEvent.getTileNumber();
172: String delRow = Integer.toString(selRow);
173: ViewBean viewBean = getParentViewBean();
174: viewBean.setPageSessionAttribute("FilterDelete", delRow);
175: viewBean.forwardTo(getRequestContext());
176: }
177:
178: }
|