KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > micronova > util > codec > CodecString


1 /*
2
3 Copyright 2003-2007 MicroNova (R)
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or
7 without modification, are permitted provided that the following
8 conditions are met:
9
10     * Redistributions of source code must retain the above copyright
11     notice, this list of conditions and the following disclaimer.
12
13     * Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17     * Neither the name of MicroNova nor the names of its contributors
18     may be used to endorse or promote products derived from this
19     software without specific prior written permission.
20
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 POSSIBILITY OF SUCH DAMAGE.
32
33 */

34
35
36 package com.micronova.util.codec;
37
38 import java.util.*;
39 import java.io.*;
40 import java.util.regex.*;
41 import com.micronova.util.*;
42
43 /** String codecs */
44
45 public class CodecString extends Codec
46 {
47     /** compiles pattern if patternSpec is a String */
48
49     protected static Pattern getPattern(Object JavaDoc patternSpec)
50     {
51         Pattern pattern = null;
52
53         if (patternSpec instanceof Pattern)
54         {
55             pattern = (Pattern)patternSpec;
56         }
57         else if (patternSpec != null)
58         {
59             pattern = Pattern.compile(patternSpec.toString());
60         }
61
62         return pattern;
63     }
64
65     /** replace all substrings matching pattern with replacement */
66
67     public static final Object JavaDoc replaceAll(Object JavaDoc object, Object JavaDoc pattern, Object JavaDoc replacement)
68     {
69         if (object != null)
70         {
71             object = object.toString().replaceAll(pattern.toString(), replacement.toString());
72         }
73
74         return object;
75     }
76
77     /** replace first substring matching with pattern with replacement */
78
79     public static final Object JavaDoc replaceFirst(Object JavaDoc object, Object JavaDoc pattern, Object JavaDoc replacement)
80     {
81         if (object != null)
82         {
83             object = object.toString().replaceFirst(pattern.toString(), replacement.toString());
84         }
85
86         return object;
87     }
88
89     /** return list of matching groups */
90
91     public static final Object JavaDoc matchingGroups(Object JavaDoc object, Object JavaDoc patternSpec)
92     {
93         if (object != null)
94         {
95             object = StringUtil.matchingGroups(object.toString(), TypeUtil.isPattern(patternSpec));
96         }
97
98         return object;
99     }
100
101     /**
102
103     // splits string at pattern into List of strings
104
105     public static final Object split(Object object, Object pattern)
106     {
107         if (object != null)
108         {
109             object = TypeUtil.isList(object.toString().split(pattern.toString()));
110         }
111
112         return object;
113     }
114
115     // splits string at ","
116
117     public static final Object split(Object object)
118     {
119         return split(object, ",");
120     }
121
122     */

123
124     /** trims string */
125
126     public static final Object JavaDoc trim(Object JavaDoc object)
127     {
128         if (object != null)
129         {
130             object = object.toString().trim();
131         }
132
133         return object;
134     }
135
136     /** converts to upper case */
137
138     public static final Object JavaDoc toUpperCase(Object JavaDoc object)
139     {
140         if (object != null)
141         {
142             object = object.toString().toUpperCase();
143         }
144
145         return object;
146     }
147
148     /** converts to lower case */
149
150     public static final Object JavaDoc toLowerCase(Object JavaDoc object)
151     {
152         if (object != null)
153         {
154             object = object.toString().toLowerCase();
155         }
156
157         return object;
158     }
159
160     /** capitalize */
161
162     public static final Object JavaDoc capitalize(Object JavaDoc object)
163     {
164         if (object != null)
165         {
166             object = StringUtil.capitalize(object.toString());
167         }
168
169         return object;
170     }
171
172     /** reverse */
173
174     public static final Object JavaDoc reverse(Object JavaDoc object)
175     {
176         if (object != null)
177         {
178             object = StringUtil.reverse(object.toString());
179         }
180
181         return object;
182     }
183
184     /** multiply */
185
186     public static final Object JavaDoc multiply(Object JavaDoc object, Object JavaDoc countSpec)
187     {
188         if (object != null)
189         {
190             Integer JavaDoc countInteger = TypeUtil.isInteger(countSpec);
191
192             int count = (countInteger != null) ? countInteger.intValue() : 0;
193
194             object = StringUtil.multiply(object.toString(), count);
195         }
196
197         return object;
198     }
199
200     /** append; if object is an instance of Writer, then simply writes to it. */
201
202     public static final Object JavaDoc append(Object JavaDoc object, Object JavaDoc appended) throws Exception JavaDoc
203     {
204         if (object == null)
205         {
206             object = appended;
207         }
208         else
209         {
210             if (appended != null)
211             {
212                 String JavaDoc appendedString = appended.toString();
213
214                 if (object instanceof Writer)
215                 {
216                     ((Writer)object).write(appendedString);
217                 }
218                 else if (object instanceof OutputStream)
219                 {
220                     ((OutputStream)object).write(appendedString.getBytes("ISO-8859-1"));
221                 }
222                 else
223                 {
224                     object = object.toString() + appendedString;
225                 }
226             }
227         }
228
229         return object;
230     }
231
232     /** prepend; if prepended is an instance of Writer, then simply writes to it. */
233
234     public static final Object JavaDoc prepend(Object JavaDoc object, Object JavaDoc prepended) throws Exception JavaDoc
235     {
236         if (object != null)
237         {
238             if (prepended != null)
239             {
240                 String JavaDoc objectString = object.toString();
241
242                 if (prepended instanceof Writer)
243                 {
244                     ((Writer)prepended).write(objectString);
245                 }
246                 else if (prepended instanceof OutputStream)
247                 {
248                     ((OutputStream)prepended).write(objectString.getBytes("ISO-8859-1"));
249                 }
250                 else
251                 {
252                     object = prepended.toString() + objectString;
253                 }
254             }
255         }
256         else
257         {
258             object = prepended;
259         }
260
261         return object;
262     }
263
264     /** returns substring from start to end */
265
266     public static final Object JavaDoc substring(Object JavaDoc object, Object JavaDoc start, Object JavaDoc end)
267     {
268         if (object != null)
269         {
270             String JavaDoc string = object.toString();
271
272             int length = string.length();
273
274             int startIndex = TypeUtil.isInteger(start).intValue();
275             int endIndex = TypeUtil.isInteger(end).intValue();
276
277             object = StringUtil.substring(string, startIndex, endIndex);
278         }
279
280         return object;
281     }
282
283     /** returns substring starting at start */
284
285     public static final Object JavaDoc substring(Object JavaDoc object, Object JavaDoc start)
286     {
287         if (object != null)
288         {
289             String JavaDoc string = object.toString();
290
291             int startIndex = TypeUtil.isInteger(start).intValue();
292
293             object = StringUtil.substring(string, startIndex);
294         }
295
296         return object;
297     }
298
299     /** finds index of given substring */
300
301     public static final Object JavaDoc indexOf(Object JavaDoc object, Object JavaDoc sub)
302     {
303         if ((object != null) && (sub != null))
304         {
305             object = new Integer JavaDoc(object.toString().indexOf(sub.toString()));
306         }
307
308         return object;
309     }
310
311     /** finds last index of given substring */
312
313     public static final Object JavaDoc lastIndexOf(Object JavaDoc object, Object JavaDoc sub)
314     {
315         if ((object != null) && (sub != null))
316         {
317             object = new Integer JavaDoc(object.toString().lastIndexOf(sub.toString()));
318         }
319
320         return object;
321     }
322
323     /** returns string length */
324
325     public static final Object JavaDoc length(Object JavaDoc object)
326     {
327         if (object != null)
328         {
329             return new Integer JavaDoc(object.toString().length());
330         }
331         
332         return object;
333     }
334
335     /** converts String into Character list */
336
337     public static final Object JavaDoc toCharacterList(Object JavaDoc object)
338     {
339         if (object != null)
340         {
341             return TypeUtil.isList(object.toString().toCharArray());
342         }
343
344         return object;
345     }
346
347     /** converts List of Characters to String */
348
349     public static final Object JavaDoc fromCharacterList(Object JavaDoc object)
350     {
351         if (object != null)
352         {
353             List list = (List)TypeUtil.isList(object);
354
355             int length = list.size();
356             
357             char[] array = new char[length];
358
359             for (int i = length; --i >= 0;)
360             {
361                 array[i] = ((Character JavaDoc)(list.get(i))).charValue();
362             }
363
364             object = new String JavaDoc(array);
365         }
366
367         return object;
368     }
369
370
371     /** split by patterns */
372
373     public static final Object JavaDoc split(Object JavaDoc object, Object JavaDoc patternSpec, Object JavaDoc groupSpec)
374     {
375         if (object != null)
376         {
377             Pattern pattern = getPattern(patternSpec);
378
379             int groupIndex = 0;
380
381             Integer JavaDoc groupIndexInteger = TypeUtil.isInteger(groupSpec);
382
383             if (groupIndexInteger != null)
384             {
385                 groupIndex = groupIndexInteger.intValue();
386             }
387
388             object = StringUtil.split(object.toString(), pattern, groupIndex);
389         }
390
391         return object;
392     }
393
394     /** split by pattern */
395
396     public static final Object JavaDoc split(Object JavaDoc object, Object JavaDoc patternSpec)
397     {
398         return split(object, patternSpec, null);
399     }
400
401     /** split by pattern */
402
403     public static final Object JavaDoc split(Object JavaDoc object)
404     {
405         return split(object, ",");
406     }
407
408     /** list matching patterns */
409
410     public static final Object JavaDoc matchAll(Object JavaDoc object, Object JavaDoc patternSpec, Object JavaDoc groupSpec)
411     {
412         if (object != null)
413         {
414             Pattern pattern = getPattern(patternSpec);
415
416             int groupIndex = 0;
417
418             Integer JavaDoc groupIndexInteger = TypeUtil.isInteger(groupSpec);
419
420             if (groupIndexInteger != null)
421             {
422                 groupIndex = groupIndexInteger.intValue();
423             }
424
425             object = StringUtil.matchAll(object.toString(), pattern, groupIndex);
426         }
427
428         return object;
429     }
430
431     /** list matching patterns */
432
433     public static final Object JavaDoc matchAll(Object JavaDoc object, Object JavaDoc patternSpec)
434     {
435         return matchAll(object, patternSpec, null);
436     }
437
438     /** decompose by pattern */
439
440     public static final Object JavaDoc decompose(Object JavaDoc object, Object JavaDoc patternSpec, Object JavaDoc groupSpec)
441     {
442         if (object != null)
443         {
444             Pattern pattern = getPattern(patternSpec);
445
446             int groupIndex = 0;
447
448             Integer JavaDoc groupIndexInteger = TypeUtil.isInteger(groupSpec);
449
450             if (groupIndexInteger != null)
451             {
452                 groupIndex = groupIndexInteger.intValue();
453             }
454
455             object = StringUtil.decompose(object.toString(), pattern, groupIndex);
456         }
457
458         return object;
459     }
460
461     /** decompose by pattern */
462
463     public static final Object JavaDoc decompose(Object JavaDoc object, Object JavaDoc patternSpec)
464     {
465         return decompose(object, patternSpec, null);
466     }
467
468
469     /** returns the matching group, or null */
470
471     public static final Object JavaDoc match(Object JavaDoc object, Object JavaDoc patternSpec, Object JavaDoc groupSpec)
472     {
473         if (object != null)
474         {
475             Pattern pattern = getPattern(patternSpec);
476
477             int groupIndex = 0;
478
479             Integer JavaDoc groupIndexInteger = TypeUtil.isInteger(groupSpec);
480
481             if (groupIndexInteger != null)
482             {
483                 groupIndex = groupIndexInteger.intValue();
484             }
485
486             object = StringUtil.match(object.toString(), pattern, groupIndex);
487         }
488
489         return object;
490     }
491
492     /** match the first one or null */
493
494     public static final Object JavaDoc match(Object JavaDoc object, Object JavaDoc patternSpec)
495     {
496         return match(object, patternSpec, null);
497     }
498
499     /** joins elements of sequence object using glue */
500
501     public static final Object JavaDoc join(Object JavaDoc object, Object JavaDoc glue)
502     {
503         if (object != null)
504         {
505             List list = TypeUtil.isList(object);
506
507             if ((list != null) && (glue != null))
508             {
509                 object = StringUtil.join(list, glue.toString());
510             }
511             else
512             {
513                 object = null;
514             }
515         }
516         
517         return object;
518     }
519     
520     /** join elements of sequence object using "," */
521
522     public static final Object JavaDoc join(Object JavaDoc object)
523     {
524         return join(object, ",");
525     }
526
527     /** converts to byte array with specific encoding */
528
529     public static final Object JavaDoc toByteArray(Object JavaDoc object, Object JavaDoc encoding) throws Exception JavaDoc
530     {
531         if (object != null)
532         {
533             String JavaDoc string = object.toString();
534
535             if (encoding != null)
536             {
537                 object = string.getBytes(encoding.toString());
538             }
539             else
540             {
541                 object = string.getBytes();
542             }
543         }
544
545         return object;
546     }
547
548     /** converts from byte array with specific encoding */
549
550     public static final Object JavaDoc fromByteArray(Object JavaDoc object, Object JavaDoc encoding) throws Exception JavaDoc
551     {
552         if (object != null)
553         {
554             byte[] byteArray = (byte[])object;
555             
556             if (encoding != null)
557             {
558                 object = new String JavaDoc(byteArray, encoding.toString());
559             }
560             else
561             {
562                 object = new String JavaDoc(byteArray);
563             }
564         }
565         
566         return object;
567     }
568
569     /** word counts */
570
571     public static final Object JavaDoc countWords(Object JavaDoc object, Object JavaDoc pattern)
572     {
573         if (object != null)
574         {
575             object = StringUtil.countWords(object.toString(), getPattern(pattern.toString()));
576         }
577
578         return object;
579     }
580
581     /** word counts using default splitting pattern ([ ]+) */
582     
583     public static final Object JavaDoc countWords(Object JavaDoc object)
584     {
585         return countWords(object, "[ ]+");
586     }
587
588     /** replaces characts */
589
590     public static final Object JavaDoc replaceCharacters(Object JavaDoc object, Object JavaDoc from, Object JavaDoc to)
591     {
592         if (object != null)
593         {
594             object = StringUtil.replaceCharacters(object.toString(), from.toString().toCharArray(), to.toString().toCharArray());
595         }
596
597         return object;
598     }
599
600     /** split a string as CSV into a list of lists of strings. "spec" optionally specifies the following: "separator" (default ","), "quote (default "\n"), "newline" (default "\n"). "spec" values can be backslash-encoded. */
601
602     public static final Object JavaDoc splitCSV(Object JavaDoc object, Object JavaDoc spec) throws Exception JavaDoc
603     {
604         if (object != null)
605         {
606             NestedMap specMap = TypeUtil.isNestedMap(spec);
607             String JavaDoc separator = StringUtil.decodeBackslash(specMap.getString("separator", ","));
608             String JavaDoc quote = StringUtil.decodeBackslash(specMap.getString("quote", "\""));
609             String JavaDoc newline = StringUtil.decodeBackslash(specMap.getString("newline", "\n"));
610
611             object = StringUtil.splitCSV(new StringReader(object.toString()), separator.charAt(0), quote.charAt(0), newline.charAt(0));
612         }
613
614         return object;
615     }
616
617     public static final Object JavaDoc splitCSV(Object JavaDoc object) throws Exception JavaDoc
618     {
619         return splitCSV(object, null);
620     }
621
622     /** escapes unicode characters in given range (default all). "controlSpec" specifies a map with "minCode" (default 128) and "maxCode" (default 65535). */
623
624     public static final Object JavaDoc escapeUnicode(Object JavaDoc object, Object JavaDoc controlSpec)
625     {
626         if (object != null)
627         {
628             NestedMap controlMap = TypeUtil.isNestedMap(controlSpec);
629             long minCode = controlMap.getLong("minCode", 128L);
630             long maxCode = controlMap.getLong("maxCode", 65535L);
631             object = StringUtil.escapeUnicode(object.toString(), minCode, maxCode);
632         }
633
634         return object;
635     }
636
637     public static final Object JavaDoc escapeUnicode(Object JavaDoc object)
638     {
639         return escapeUnicode(object, null);
640     }
641 }
642
643
Popular Tags