1 package fr.in2p3.jsaga.impl.context.attrs;
2
3 import fr.in2p3.jsaga.impl.attributes.Attribute;
4 import fr.in2p3.jsaga.impl.attributes.AttributeScalar;
5 import fr.in2p3.jsaga.impl.context.ContextImpl;
6 import fr.in2p3.jsaga.impl.monitoring.MetricMode;
7 import fr.in2p3.jsaga.impl.monitoring.MetricType;
8 import org.ogf.saga.error.*;
9
10 import java.util.regex.Pattern;
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class UrlPrefixAttribute implements AttributeScalar {
25 private static final Pattern PATTERN = Pattern.compile("[\\p{Alpha}][\\p{Alpha}\\p{Digit}-]*");
26 private String m_value;
27
28 public UrlPrefixAttribute() {
29 m_value = null;
30 }
31
32 public String getKey() {
33 return ContextImpl.URL_PREFIX;
34 }
35
36 public String getDescription() {
37 return "by adding this prefix at the beginning of URL, you can use any protocol without configuring it";
38 }
39
40 public boolean isReadOnly() {
41 return false;
42 }
43
44 public MetricMode getMetricMode() {
45 return MetricMode.Final;
46 }
47
48 public MetricType getMetricType() {
49 return MetricType.String;
50 }
51
52 public Attribute clone() throws CloneNotSupportedException {
53 UrlPrefixAttribute clone = new UrlPrefixAttribute();
54 clone.m_value = m_value;
55 return clone;
56 }
57
58 public void setValue(String value) throws NotImplementedException, IncorrectStateException, PermissionDeniedException, BadParameterException {
59 if (PATTERN.matcher(value).matches()) {
60 m_value = value;
61 } else {
62 throw new BadParameterException("UrlPrefix '"+value+"' does not match regular expression: "+PATTERN.pattern());
63 }
64 }
65
66 public String getValue() throws NotImplementedException, IncorrectStateException, NoSuccessException {
67 return m_value;
68 }
69 }