1 /*
2 (C) Copyright IBM Corp. 2006, 2009
3
4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7
8 You can obtain a current copy of the Eclipse Public License from
9 http://www.opensource.org/licenses/eclipse-1.0.php
10
11 @author : Endre Bak, ebak@de.ibm.com
12 *
13 * Flag Date Prog Description
14 * -------------------------------------------------------------------------------
15 * 1565892 2006-11-05 ebak Make SBLIM client JSR48 compliant
16 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
17 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
18 */
19
20 package org.metricshub.wbem.sblim.cimclient.internal.uri;
21
22 /*-
23 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
24 * WBEM Java Client
25 * ჻჻჻჻჻჻
26 * Copyright 2023 - 2025 MetricsHub
27 * ჻჻჻჻჻჻
28 * Licensed under the Apache License, Version 2.0 (the "License");
29 * you may not use this file except in compliance with the License.
30 * You may obtain a copy of the License at
31 *
32 * http://www.apache.org/licenses/LICENSE-2.0
33 *
34 * Unless required by applicable law or agreed to in writing, software
35 * distributed under the License is distributed on an "AS IS" BASIS,
36 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37 * See the License for the specific language governing permissions and
38 * limitations under the License.
39 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
40 */
41
42 import org.metricshub.wbem.javax.cim.CIMDateTime;
43 import org.metricshub.wbem.javax.cim.CIMDateTimeAbsolute;
44 import org.metricshub.wbem.javax.cim.CIMDateTimeInterval;
45 import org.metricshub.wbem.sblim.cimclient.internal.util.MOF;
46
47 /**
48 * Class DateTimeValue is parses and encapsulates a datetime.
49 *
50 */
51 public class DateTimeValue extends Value implements QuotedValue {
52 private CIMDateTime iDateTime;
53
54 /**
55 * datetimeValue = // quoted datetime string
56 *
57 * @param pStrVal
58 * - the dateTime string in an unquoted form
59 * @param pThrow
60 * @return <code>Value</code> or <code>null</code> if parsing failed and
61 * <code>pThrow</code> is <code>false</code>
62 * @throws IllegalArgumentException
63 * if parsing failed and pThrow is true.
64 */
65 public static Value parse(String pStrVal, boolean pThrow) throws IllegalArgumentException {
66 CIMDateTime dateTime;
67 try {
68 dateTime = new CIMDateTimeAbsolute(pStrVal);
69 } catch (IllegalArgumentException e0) {
70 try {
71 dateTime = new CIMDateTimeInterval(pStrVal);
72 } catch (IllegalArgumentException e1) {
73 if (pThrow) {
74 String msg =
75 "Value=" +
76 pStrVal +
77 "\nFailed to parse as DateTimeAbsolute!:\n" +
78 e0.getMessage() +
79 "\nFailed to parse as DateTimeInterval!:\n" +
80 e1.getMessage();
81 throw new IllegalArgumentException(msg);
82 }
83 return null;
84 }
85 }
86 return new DateTimeValue(dateTime);
87 }
88
89 /**
90 * @see #parse(String, boolean)
91 * @param pStrVal
92 * @return a Value or null if parsing failed.
93 */
94 public static Value parse(String pStrVal) {
95 return parse(pStrVal, false);
96 }
97
98 private DateTimeValue(CIMDateTime pDateTime) {
99 this.iDateTime = pDateTime;
100 }
101
102 /**
103 * getDateTime
104 *
105 * @return CIMDateTime
106 */
107 public CIMDateTime getDateTime() {
108 return this.iDateTime;
109 }
110
111 /**
112 * @see java.lang.Object#toString()
113 */
114 @Override
115 public String toString() {
116 return this.iDateTime.toString();
117 }
118
119 /**
120 * @see QuotedValue#toQuotedString()
121 */
122 public String toQuotedString() {
123 return "\"" + this.iDateTime.toString() + '"';
124 }
125
126 /**
127 * @see Value#getTypeInfo()
128 */
129 @Override
130 public String getTypeInfo() {
131 return MOF.DT_DATETIME;
132 }
133 }