1 package com.sri.emo.wizard.creation;
2
3 import java.io.*;
4 import java.util.*;
5
6 import com.jcorporate.expresso.core.db.*;
7 import com.jcorporate.expresso.core.dbobj.*;
8 import com.sri.emo.wizard.*;
9 import com.sri.emo.wizard.creation.model.*;
10 import com.sri.emo.wizard.defaults.*;
11 import com.sri.emo.wizard.expressoimpl.*;
12
13
14 /***
15 * <p>Title: </p>
16 *
17 * <p>Description: </p>
18 *
19 * <p>Copyright: Copyright (c) 2003</p>
20 *
21 * <p>Company: </p>
22 *
23 * @author not attributable
24 * @version 1.0
25 */
26 public class SearchListPage extends EmoWizardPage {
27 /***
28 * The prefix of all ids that this class culls from the parameters. They are
29 * of the form of WIZ_DATA_ID + "_" + SomeNumber
30 */
31 public static final String PARAM_PREFIX = WizardController.WIZ_DATA_ID;
32
33 SearchResultBean searchBean;
34 String nodeType;
35 Serializable sourcePageId;
36
37 public SearchListPage(Integer newId, PageMetadata pageMetadata, ValidValue[] optionalMenu) {
38 super(newId, pageMetadata, null);
39 SearchResultBean bean = new SearchResultBean();
40 bean.setPageId(newId);
41 searchBean = new SearchResultBean();
42 }
43
44 public void setData(final Serializable newData) throws WizardException {
45 System.out.println("SearchListPage.setData(" + newData + ")");
46 if (newData == null) {
47 super.setData(newData);
48 return;
49 }
50 if (!(newData instanceof Map)) {
51 throw new IllegalArgumentException(
52 "Internal Error: Incoming data was: " +
53 newData.getClass().getName() +
54 " and we needed a java.util.Map");
55 }
56 searchBean.clearSelectedSearchResults();
57
58 HashSet prunedData = null;
59 if (newData == null) {
60 prunedData = new HashSet();
61 } else {
62 final Map givenData = (Map) newData;
63 final String searchPrefix = PARAM_PREFIX + "_";
64
65 prunedData = new HashSet(givenData.size());
66 for (Iterator i = givenData.keySet().iterator(); i.hasNext(); ) {
67 String oneKey = (String) i.next();
68 if (oneKey.startsWith(searchPrefix)) {
69 System.out.println("data = " + givenData.get(oneKey));
70 prunedData.add(givenData.get(oneKey));
71 try {
72 searchBean.setSelectedNode(Integer.parseInt((String)
73 givenData.get(oneKey)));
74 } catch (NumberFormatException ex) {
75 throw new IllegalArgumentException("Invalid integer found within the search list");
76 } catch (DBException ex) {
77 ex.printStackTrace();
78 }
79 }
80 }
81
82 MinMaxPageMetadata metadata = (MinMaxPageMetadata) getMetadata();
83
84 if (metadata.getMaxEntries() != null
85 && metadata.getMaxEntries().intValue() < prunedData.size()) {
86 this.addError("Please only choose a maximum of: " +
87 metadata.getMaxEntries().toString() + " choices");
88 }
89 }
90 super.setData(prunedData);
91 }
92
93 public SearchResultBean getSearchBean() {
94 return searchBean;
95 }
96
97 public String getNodeType() {
98 return nodeType;
99 }
100
101 public Serializable getSourcePageId() {
102 return sourcePageId;
103 }
104
105 public void setSearchBean(SearchResultBean searchBean) {
106 this.searchBean = searchBean;
107 }
108
109 /***
110 * setNodeType
111 *
112 * @param string String
113 */
114 public void setNodeType(String nodeType) {
115 this.nodeType = nodeType;
116 }
117
118 public void setSourcePageId(Serializable sourcePageId) {
119 this.sourcePageId = sourcePageId;
120 }
121 }