source: trunk/gsdl3/src/java/org/greenstone/gsdl3/util/CGIArgConverter.java@ 3362

Last change on this file since 3362 was 3362, checked in by kjdon, 22 years ago

more utils

  • Property svn:keywords set to Author Date Id Revision
File size: 2.8 KB
Line 
1package org.greenstone.gsdl3.util;
2
3import java.util.HashMap;
4import org.w3c.dom.Element;
5
6public class CGIArgConverter {
7
8 protected HashMap long_map_=null;
9 protected HashMap short_map_=null;
10
11 public CGIArgConverter() {
12 long_map_ = new HashMap();
13 short_map_ = new HashMap();
14
15 // initialize with the ones we know about
16 long_map_.put("case", "k");
17 short_map_.put("k", "case");
18
19 long_map_.put("stem", "s");
20 short_map_.put("s", "stem");
21
22 long_map_.put("queryLevel", "ql");
23 short_map_.put("ql", "queryLevel");
24
25 long_map_.put("index", "i");
26 short_map_.put("i", "index");
27
28 long_map_.put("matchMode", "mm");
29 short_map_.put("mm", "matchMode");
30
31 long_map_.put("sortBy", "sb");
32 short_map_.put("sb", "sortBy");
33
34 long_map_.put("maxDocs", "md");
35 short_map_.put("md", "maxDocs");
36 // add in short names for the ones that are used, but dont need logn names
37 short_map_.put("a", "a");
38 short_map_.put("sa", "sa");
39 short_map_.put("c", "c");
40 short_map_.put("l", "l");
41
42 }
43
44 public boolean toLong(Element param_list) {
45
46 if (!param_list.getNodeName().equals("paramList")) {
47 System.out.println("wrong element to CGIArgConverter:toLong");
48 return false;
49 }
50
51 Element param = (Element)param_list.getFirstChild();
52 while (param!=null) {
53 String name = param.getAttribute("name");
54 param.setAttribute("name", toLong(name));
55 param = (Element)param.getNextSibling();
56 }
57 return true;
58
59 }
60 public boolean addShortNames(Element param_list) {
61 if (!param_list.getNodeName().equals("paramList")) {
62 System.out.println("wrong element to CGIArgConverter:toShort");
63 return false;
64 }
65
66 Element param = (Element)param_list.getFirstChild();
67 while (param!=null) {
68 String name = param.getAttribute("name");
69 param.setAttribute("shortname", toShort(name));
70 param = (Element)param.getNextSibling();
71 }
72 return true;
73
74 }
75
76
77 public String toLong(String short_name) {
78
79
80 if (short_map_.containsKey(short_name)) {
81 return (String)short_map_.get(short_name);
82 }
83 System.err.println("CGIArgConverter: short name not found in map!");
84 return short_name; // just return the original
85 }
86
87 public String toShort(String long_name) {
88
89 if (long_map_.containsKey(long_name)) {
90 return (String)long_map_.get(long_name);
91 }
92
93 // else need to create a new mapping
94 String short_name = newShortName(long_name);
95 long_map_.put(long_name, short_name);
96 short_map_.put(short_name, long_name);
97 return short_name;
98 }
99
100 protected String newShortName(String long_name) {
101
102 // for now, try the first letter, then first two etc.
103 int i=1;
104 String short_try= long_name.substring(0,1);
105 while(short_map_.containsKey(short_try)&& i<long_name.length()) {
106 i++;
107 short_try = long_name.substring(0, i);
108 }
109 if (i==long_name.length()) {
110 return ""; // couldn't find one
111 }
112 return short_try;
113 }
114}
Note: See TracBrowser for help on using the repository browser.