]> SALOME platform Git repositories - tools/siman.git/blob - Workspace/Siman-Common/src/org/splat/dal/bo/som/IDBuilder.java
Salome HOME
StepServiceImpl doesn't use Database class anymore.
[tools/siman.git] / Workspace / Siman-Common / src / org / splat / dal / bo / som / IDBuilder.java
1 package org.splat.dal.bo.som;
2 /**
3  * 
4  * @author    Daniel Brunier-Coulin
5  * @copyright OPEN CASCADE 2012
6  */
7
8 import java.text.DecimalFormat;
9 import java.text.SimpleDateFormat;
10 import java.util.Date;
11
12 import org.splat.dal.dao.som.Database;
13
14
15 public class IDBuilder {
16
17     @SuppressWarnings("unused")
18         private int  cycle;
19     private int  base;                // Number of studies created in this cycle
20
21 //  ==============================================================================================================================
22 //  Constructors
23 //  ==============================================================================================================================
24
25     protected IDBuilder () {
26     }
27     public IDBuilder (Date date) {
28 //  -------------------------------
29           SimpleDateFormat get  = new SimpleDateFormat("yyyy");
30           String           year = get.format(date);
31           cycle = Integer.valueOf(year);
32       base  = 0;
33     }
34
35 //  ==============================================================================================================================
36 //  Public member functions
37 //  ==============================================================================================================================
38
39     public String buildReference (String pattern, Study study) {
40 //  -------------------------------------------------------------
41           char[] format = pattern.toCharArray();
42           char[] ref    = new char[80];   // Better evaluate the length of the generated string
43       int    next   = base + 1;
44
45           int count = 0;
46           for (int i=0; i<format.length; i++) {
47
48 //    Insertion of attribute values               
49         if (format[i] == '%') {
50                   i += 1;
51                         
52                   if (format[i] == 'y') {     // Insertion of year in format 2 (e.g. 09) or 4 (e.g. 2009) digits
53                     int n = i;
54                     while (format[i] == 'y') {
55                           i += 1;
56                           if (i == format.length) break;
57                     }
58             SimpleDateFormat tostring = new SimpleDateFormat("yyyy");
59                         String year = tostring.format(study.getDate());
60                     year = year.substring(4-(i-n), 4);   // 4-(i-n) must be equal to either 0 or 2
61                     for (int j=0; j<year.length(); j++) {
62                           ref[count] =  year.charAt(j);
63                           count += 1;
64                     }
65                     i -= 1;  // Back to the last 'y' character
66                   } else
67                   if (format[i] == '0') {     // Insertion of the index
68                     int n = i;
69                     while (format[i] == '0') {
70                           i += 1;
71                           if (i == format.length) break;
72                     }
73                     DecimalFormat tostring = new DecimalFormat(pattern.substring(n, i));
74                     String        number   = tostring.format(next);
75                     for (int j=0; j<number.length(); j++) {
76                           ref[count] =  number.charAt(j);
77                           count += 1;
78                     }
79                     i -= 1;  // Back to the last '0' character
80                   }
81 //    Keep the character                  
82                 } else {
83                   ref[count] = format[i];
84                   count += 1;             
85                 }
86           }
87 //    Incrementation of the number of study
88           base = next;
89           Database.getSession().update(this);
90           return String.copyValueOf(ref, 0, count);
91     }
92 }