1 /*
2 (C) Copyright IBM Corp. 2006, 2010
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-10-12 ebak Make SBLIM client JSR48 compliant
16 * 1678807 2007-03-12 ebak Minor CIMDateTime suggestions
17 * 1849235 2008-02-11 blaschke-oss DTStringWriter.writeSigned parameter pDigits is not used
18 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
19 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
20 * 2989367 2010-04-29 blaschke-oss CIMDateTimeInterval(long) constructor range wrong
21 */
22
23 package org.metricshub.wbem.sblim.cimclient.internal.cim;
24
25 /*-
26 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27 * WBEM Java Client
28 * ჻჻჻჻჻჻
29 * Copyright 2023 - 2025 MetricsHub
30 * ჻჻჻჻჻჻
31 * Licensed under the Apache License, Version 2.0 (the "License");
32 * you may not use this file except in compliance with the License.
33 * You may obtain a copy of the License at
34 *
35 * http://www.apache.org/licenses/LICENSE-2.0
36 *
37 * Unless required by applicable law or agreed to in writing, software
38 * distributed under the License is distributed on an "AS IS" BASIS,
39 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40 * See the License for the specific language governing permissions and
41 * limitations under the License.
42 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43 */
44
45 import java.util.Arrays;
46
47 /**
48 * Class DTStringWriter helps making CIMDateTime Strings.
49 */
50 public class DTStringWriter {
51 private StringBuffer iBuf = new StringBuffer();
52
53 /**
54 * writeInt - writes an integer, the upper digits are filled with zeros
55 *
56 * @param pNum
57 * -1 means that asterisks have to be printed
58 * @param pDigits
59 */
60 public void write(int pDigits, int pNum) {
61 if (pDigits <= 0) return;
62 if (pNum == -1) {
63 char[] cA = new char[pDigits];
64 Arrays.fill(cA, '*');
65 this.iBuf.append(cA);
66 return;
67 }
68 String str = Integer.toString(pNum);
69 int paddingDigits = pDigits - str.length();
70 if (paddingDigits > 0) {
71 char[] cA = new char[paddingDigits];
72 Arrays.fill(cA, '0');
73 this.iBuf.append(cA).append(str);
74 } else this.iBuf.append(str);
75 }
76
77 /**
78 * writeSignedInt - used for utc writing
79 *
80 * @param pNum
81 * @param pDigits
82 */
83 public void writeSigned(int pDigits, int pNum) {
84 char sign;
85 if (pNum < 0) {
86 sign = '-';
87 pNum = -pNum;
88 } else sign = '+';
89 write(sign);
90 write(pDigits, pNum);
91 }
92
93 /**
94 * writeUSec
95 *
96 * @param pUSec
97 * @param pUnsignificantDigits
98 */
99 public void writeUSec(int pUSec, int pUnsignificantDigits) {
100 int digits = 6 - pUnsignificantDigits;
101 write(digits, pUSec);
102 for (int i = 0; i < pUnsignificantDigits; i++) write('*');
103 }
104
105 /**
106 * writeChar
107 *
108 * @param pChar
109 */
110 public void write(char pChar) {
111 this.iBuf.append(pChar);
112 }
113
114 /**
115 * write
116 *
117 * @param pStr
118 */
119 public void write(String pStr) {
120 this.iBuf.append(pStr);
121 }
122
123 /**
124 * @see java.lang.Object#toString()
125 */
126 @Override
127 public String toString() {
128 return this.iBuf.toString();
129 }
130 }