Source code: org/openorb/trader/util/HTMLGenerator.java
1 /**
2 * Redistribution and use of this software and associated
3 * documentation ("Software"), with or without modification, are
4 * permitted provided that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright statements
7 * and notices. Redistributions must also contain a copy of this
8 * document.
9 *
10 * 2. Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following
12 * disclaimer in the documentation and/or other materials provided
13 * with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Intalio Inc. For written permission, please
18 * contact info@exolab.org.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Intalio Inc. Exolab is a registered trademark of
23 * Intalio Inc.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY INTALIO AND CONTRIBUTORS ``AS IS'' AND
29 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
30 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTALIO OR
32 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
35 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
36 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
37 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
38 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 *
41 * Copyright 2000 (C) Intalio Inc. All Rights Reserved.
42 *
43 * $Id: HTMLGenerator.java,v 1.2 2002/01/15 12:05:54 jews Exp $
44 *
45 * Date Author Changes
46 */
47
48 package org.openorb.trader.util;
49
50 /**
51 * This class extracts an ServiceType description and returns it as an HTML page.
52 *
53 * @author <a href="mailto:jdaniel@intalio.com">Jerome Daniel <daniel@intalio.com></a>
54 */
55
56 public class HTMLGenerator
57 {
58 protected String type_as_string( org.omg.CORBA.TypeCode tc )
59 {
60 try
61 {
62 switch ( tc.kind().value() )
63 {
64
65 case org.omg.CORBA.TCKind._tk_boolean :
66 return "<font color=RED>boolean</font>";
67
68 case org.omg.CORBA.TCKind._tk_char :
69 return "<font color=RED>char</font>";
70
71 case org.omg.CORBA.TCKind._tk_double :
72 return "<font color=RED>double</font>";
73
74 case org.omg.CORBA.TCKind._tk_float :
75 return "<font color=RED>float</font>";
76
77 case org.omg.CORBA.TCKind._tk_long :
78 return "<font color=RED>long</font>";
79
80 case org.omg.CORBA.TCKind._tk_longdouble :
81 return "<font color=RED>long double</font>";
82
83 case org.omg.CORBA.TCKind._tk_longlong :
84 return "<font color=RED>long long</font>";
85
86 case org.omg.CORBA.TCKind._tk_objref :
87 return "<font color=RED>Object</font>";
88
89 case org.omg.CORBA.TCKind._tk_any :
90 return "<font color=RED>any</font>";
91
92 case org.omg.CORBA.TCKind._tk_octet :
93 return "<font color=RED>octet</font>";
94
95 case org.omg.CORBA.TCKind._tk_short :
96 return "<font color=RED>short</font>";
97
98 case org.omg.CORBA.TCKind._tk_ulong :
99 return "<font color=RED>unsigned long</font>";
100
101 case org.omg.CORBA.TCKind._tk_ulonglong :
102 return "<font color=RED>unsigned long long</font>";
103
104 case org.omg.CORBA.TCKind._tk_ushort :
105 return "<font color=RED>unsigned short</font>";
106
107 case org.omg.CORBA.TCKind._tk_TypeCode :
108 return "CORBA::TypeCode";
109
110 case org.omg.CORBA.TCKind._tk_string :
111
112 if ( tc.length() == 0 )
113 return "<font color=RED>string</font>";
114 else
115 return "<font color=RED>string</font><" + tc.length() + "&rt;";
116
117 case org.omg.CORBA.TCKind._tk_wstring :
118 if ( tc.length() == 0 )
119 return "<font color=RED>wstring</font>";
120 else
121 return "<font color=RED>wstring</font><" + tc.length() + "&rt;";
122
123 case org.omg.CORBA.TCKind._tk_wchar :
124 return "<font color=RED>wchar</font>";
125
126 case org.omg.CORBA.TCKind._tk_sequence :
127 if ( tc.length() == 0 )
128 return "<font color=BLUE>sequence</font><" + type_as_string( tc.content_type() ) + "&rt;";
129 else
130 return "<font color=BLUE>sequence</font><" + tc.length() + ", " + type_as_string( tc.content_type() ) + "&rt;";
131
132 case org.omg.CORBA.TCKind._tk_alias :
133 return tc.content_type().name();
134
135 case org.omg.CORBA.TCKind._tk_array :
136 return type_as_string( tc.content_type() ) + "[" + tc.length() + "]";
137
138 case org.omg.CORBA.TCKind._tk_enum :
139
140 case org.omg.CORBA.TCKind._tk_native :
141
142 case org.omg.CORBA.TCKind._tk_struct :
143
144 case org.omg.CORBA.TCKind._tk_union :
145
146 case org.omg.CORBA.TCKind._tk_value :
147
148 case org.omg.CORBA.TCKind._tk_value_box :
149 return tc.name();
150 }
151 }
152 catch ( java.lang.Exception ex )
153 { }
154
155 return "";
156 }
157
158 protected String service_to_html( org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.TypeStruct desc, String serviceName, String html )
159 {
160 html = html + "<font color=\"#0000ff\">service</font><b> " + serviceName + "</b>";
161
162 if ( desc.super_types.length != 0 )
163 {
164 html = html + " : ";
165
166 for ( int i = 0; i < desc.super_types.length; i++ )
167 {
168 html = html + "<a href=\"" + desc.super_types[ i ] + "\"><b>" + desc.super_types[ i ] + "</b></a>";
169
170 if ( i + 1 < desc.super_types.length )
171 html = html + ", ";
172 }
173 }
174
175 html = html + " {<br>";
176
177 html = html + "<br> " + "<font color=\"#0000ff\">interface</font> " + desc.if_name + ";<br>";
178
179 for ( int i = 0; i < desc.props.length; i++ )
180 {
181 html = html + "<br> ";
182
183 if ( ( desc.props[ i ].mode.value() == org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropertyMode._PROP_MANDATORY_READONLY ) ||
184 ( desc.props[ i ].mode.value() == org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropertyMode._PROP_MANDATORY ) )
185 html = html + "<font color=\"#fa6400\">mandatory</font> ";
186
187 if ( ( desc.props[ i ].mode.value() == org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropertyMode._PROP_READONLY ) ||
188 ( desc.props[ i ].mode.value() == org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropertyMode._PROP_MANDATORY_READONLY ) )
189 html = html + "<font color=\"#fa6400\">readonly</font> ";
190
191 html = html + "<font color=\"#0000ff\">property</font> " + type_as_string( desc.props[ i ].value_type ) + " " + desc.props[ i ].name + ";";
192 }
193
194 html = html + "<br>}";
195
196 return html;
197 }
198
199 public String translate_to_HTML( String serviceName, org.omg.CosTrading.Lookup lookup )
200 {
201 org.omg.CosTradingRepos.ServiceTypeRepository repository = org.omg.CosTradingRepos.ServiceTypeRepositoryHelper.narrow( lookup.type_repos() );
202
203 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.TypeStruct desc = null;
204
205 try
206 {
207 desc = repository.describe_type( serviceName );
208 }
209 catch ( java.lang.Exception ex )
210 {
211 return null;
212 }
213
214 String html = "<html><body><font size=\"2\">";
215
216 html = service_to_html( desc, serviceName, html );
217
218 return html + "</font></body></html>";
219 }
220 }