1 package jspecview.source;
2 
3 import javajs.util.Lst;
4 
5 /**
6  * could be a spectrum or a source
7  *
8  * @author Bob Hanson
9  *
10  */
11 public class JDXHeader {
12 
13   public String title = "";
14   public String jcampdx = "5.01";
15   public String dataType = "";
16   public String dataClass = "";
17   public String origin = "";
18   public String owner = "PUBLIC DOMAIN";
19   public String longDate = "";
20   public String date = "";
21   public String time = "";
22 
23 
24   /**
25    * Sets the title of the spectrum
26    *
27    * @param title
28    *        the spectrum title
29    */
setTitle(String title)30   public void setTitle(String title) {
31     this.title = title;
32   }
33 
34   /**
35    * Sets the JCAMP-DX version number
36    *
37    * @param versionNum
38    *        the JCAMP-DX version number
39    */
setJcampdx(String versionNum)40   public void setJcampdx(String versionNum) {
41     this.jcampdx = versionNum;
42   }
43 
44   /**
45    * Sets the data type
46    *
47    * @param dataType
48    *        the data type
49    */
setDataType(String dataType)50   public void setDataType(String dataType) {
51     this.dataType = dataType;
52   }
53 
54   /**
55    * Sets the data class
56    *
57    * @param dataClass
58    *        the data class
59    */
setDataClass(String dataClass)60   public void setDataClass(String dataClass) {
61     this.dataClass = dataClass;
62   }
63 
64   /**
65    * Sets the origin of the JCAMP-DX spectrum
66    *
67    * @param origin
68    *        the origin
69    */
setOrigin(String origin)70   public void setOrigin(String origin) {
71     this.origin = origin;
72   }
73 
74   /**
75    * Sets the owner
76    *
77    * @param owner
78    *        the owner
79    */
setOwner(String owner)80   public void setOwner(String owner) {
81     this.owner = owner;
82   }
83 
84   /**
85    * Sets the long date of when the file was created
86    *
87    * @param longDate
88    *        String
89    */
setLongDate(String longDate)90   public void setLongDate(String longDate) {
91     this.longDate = longDate;
92   }
93 
94   /**
95    * Sets the date the file was created
96    *
97    * @param date
98    *        String
99    */
setDate(String date)100   public void setDate(String date) {
101     this.date = date;
102   }
103 
104   /**
105    * Sets the time the file was created
106    *
107    * @param time
108    *        String
109    */
setTime(String time)110   public void setTime(String time) {
111     this.time = time;
112   }
113 
114 
115   /**
116    * Getter for property title.
117    *
118    * @return Value of property title.
119    */
getTitle()120   public String getTitle() {
121     return title;
122   }
123 
124   final static String[] typeNames = {
125   	"ND NMR SPECTRUM   NMR",
126   	"NMR SPECTRUM      NMR",
127   	"INFRARED SPECTRUM IR",
128   	"MASS SPECTRUM     MS",
129   	"RAMAN SPECTRUM    RAMAN",
130   	"GAS CHROMATOGRAM  GC",
131   	"UV/VIS SPECTRUM   UV/VIS"
132   };
133 
134   private String qualifiedType;
135 
getTypeName(String type)136   static String getTypeName(String type) {
137   	type = type.toUpperCase();
138   	for (int i = 0; i < typeNames.length; i++)
139   		if (typeNames[i].startsWith(type)) {
140   			return typeNames[i].substring(18);
141   		}
142   	return type;
143   }
144 
getQualifiedDataType()145   public String getQualifiedDataType() {
146   	return (qualifiedType == null ? (qualifiedType = getTypeName(dataType)) : qualifiedType);
147   }
148   /**
149    * Getter for property jcampdx.
150    *
151    * @return Value of property jcampdx.
152    */
getJcampdx()153   public String getJcampdx() {
154     return jcampdx;
155   }
156 
157   /**
158    * Getter for property dataType.
159    *
160    * @return Value of property dataType.
161    */
getDataType()162   public String getDataType() {
163     return dataType;
164   }
165 
166   /**
167    * Getter for property origin.
168    *
169    * @return Value of property origin.
170    */
getOrigin()171   public String getOrigin() {
172     return origin;
173   }
174 
175   /**
176    * Getter for property owner.
177    *
178    * @return Value of property owner.
179    */
getOwner()180   public String getOwner() {
181     return owner;
182   }
183 
184   /**
185    * Getter for property longDate.
186    *
187    * @return Value of property longDate.
188    */
getLongDate()189   public String getLongDate() {
190     return longDate;
191   }
192 
193   /**
194    * Getter for property date.
195    *
196    * @return Value of property date.
197    */
getDate()198   public String getDate() {
199     return date;
200   }
201 
202   /**
203    * Getter for property time.
204    *
205    * @return Value of property time.
206    */
getTime()207   public String getTime() {
208     return time;
209   }
210 
211   /**
212    * Returns the data class
213    * spectrum only
214    * @return the data class
215    */
getDataClass()216   public String getDataClass() {
217     return dataClass;
218   }
219 
220   // Table of header variables specific to the jdx source or spectrum
221   protected Lst<String[]> headerTable = new Lst<String[]>();
222 
223   /**
224    * Sets the headerTable for this Source or spectrum
225    *
226    * @param table
227    *        the header table
228    */
setHeaderTable(Lst<String[]> table)229   public void setHeaderTable(Lst<String[]> table) {
230     headerTable = table;
231   }
232 
233   /**
234    * Returns the table of headers
235    *
236    * @return the table of headers
237    */
getHeaderTable()238   public Lst<String[]> getHeaderTable() {
239     return headerTable;
240   }
241 
getHeaderRowDataAsArray(boolean addDataClass, int nMore)242   public String[][] getHeaderRowDataAsArray(boolean addDataClass, int nMore) {
243 
244     String[][] rowData = new String[(addDataClass ? 6 : 5) + headerTable.size() + nMore][];
245 
246     int i = 0;
247     rowData[i++] = new String[] { "##TITLE", title };
248     rowData[i++] = new String[] { "##JCAMP-DX", jcampdx };
249     rowData[i++] = new String[] { "##DATA TYPE", dataType };
250     if (addDataClass)
251       rowData[i++] = new String[] { "##DATA CLASS", dataClass };
252     rowData[i++] = new String[] { "##ORIGIN", origin };
253     rowData[i++] = new String[] { "##OWNER", owner };
254 
255     for(int j = 0; j < headerTable.size(); j++)
256       rowData[i++] = getRow(j);
257 
258     return rowData;
259   }
260 
getRow(int j)261 	private String[] getRow(int j) {
262 		String[] s = headerTable.get(j);
263 		/**
264 		 * @j2sNative
265 		 *
266 		 * return [s[0], javajs.util.PT.rep(s[1], "<", "&lt;")];
267 		 *
268 		 */
269 		{
270 			return s;
271 		}
272 	}
273 
274 
275 
276 }
277