1
2
3
4
5
6 package org.jcr_blog.service;
7
8 import java.text.CharacterIterator;
9 import java.text.SimpleDateFormat;
10 import java.text.StringCharacterIterator;
11 import java.util.Date;
12
13
14
15
16
17 public class ResourceHelper {
18
19 private static final SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssZ");
20
21
22
23
24
25 private static final char LITERAL_PREFIX_DELIMITER = ':';
26 private static final char LITERAL_LBRACE = '[';
27 private static final char LITERAL_RBRACE = ']';
28 private static final char LITERAL_SLASH = '/';
29 private static final char LITERAL_ASTERISK = '*';
30 private static final char LITERAL_SQUOTE = '\'';
31 private static final char LITERAL_QUOTE = '"';
32 private static final char LITERAL_PIPE = '|';
33 private static final char LITERAL_DOT = '.';
34 private static final char LITERAL_EXSLAMATIONMARK = '!';
35 private static final char LITERAL_QUESTIONMARK = '?';
36 private static final char LITERAL_EQUAL = '=';
37
38
39
40
41
42
43
44
45 public static String createResourceName(Date d, String name) {
46 assert (name != null);
47 assert (d != null);
48 String str = name.trim().toLowerCase().replaceAll("(\\s)+", "-");
49 str = removeLiterals(str);
50 return new StringBuilder().append(format.format(d)).append('-').append(str).toString();
51 }
52
53 private static String removeLiterals(String parameter) {
54 final StringBuilder result = new StringBuilder();
55 final StringCharacterIterator iterator = new StringCharacterIterator(parameter);
56 char character = iterator.current();
57 while (character != CharacterIterator.DONE) {
58 switch (character) {
59 case LITERAL_PREFIX_DELIMITER:
60 case LITERAL_LBRACE:
61 case LITERAL_RBRACE:
62 case LITERAL_SLASH:
63 case LITERAL_ASTERISK:
64 case LITERAL_SQUOTE:
65 case LITERAL_QUOTE:
66 case LITERAL_PIPE:
67 case LITERAL_DOT:
68 case LITERAL_EXSLAMATIONMARK:
69 case LITERAL_QUESTIONMARK:
70 case LITERAL_EQUAL:
71
72 break;
73 default:
74
75
76 result.append(character);
77 }
78 character = iterator.next();
79 }
80 return result.toString();
81 }
82 }