1 package nom.tam.fits.compression.provider.param.base;
2
3 import nom.tam.fits.BinaryTable;
4 import nom.tam.fits.BinaryTableHDU;
5 import nom.tam.fits.FitsException;
6 import nom.tam.fits.Header;
7 import nom.tam.fits.HeaderCard;
8 import nom.tam.fits.HeaderCardException;
9 import nom.tam.fits.compression.provider.param.api.ICompressColumnParameter;
10 import nom.tam.fits.compression.provider.param.api.ICompressHeaderParameter;
11 import nom.tam.fits.compression.provider.param.api.ICompressParameters;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 import static nom.tam.fits.header.Standard.TTYPEn;
45
46
47
48
49
50
51
52 public abstract class CompressParameters implements ICompressParameters, Cloneable {
53
54 @Override
55 public void addColumnsToTable(BinaryTableHDU hdu) throws FitsException {
56 for (ICompressColumnParameter parameter : columnParameters()) {
57 Object column = parameter.getColumnData();
58 if (column != null) {
59 hdu.setColumnName(hdu.addColumn(column) - 1, parameter.getName(), null);
60 }
61 }
62 }
63
64 @Override
65 protected CompressParameters clone() {
66 try {
67 return (CompressParameters) super.clone();
68 } catch (CloneNotSupportedException e) {
69 return null;
70 }
71 }
72
73 @Override
74 public void setTileIndex(int index) {
75 }
76
77 @Override
78 public void getValuesFromColumn(int index) {
79 for (ICompressColumnParameter parameter : columnParameters()) {
80 parameter.getValueFromColumn(index);
81 }
82 }
83
84 @Override
85 public void getValuesFromHeader(Header header) throws HeaderCardException {
86 for (ICompressHeaderParameter compressionParameter : headerParameters()) {
87 compressionParameter.getValueFromHeader(header);
88 }
89 }
90
91 @Override
92 public void initializeColumns(Header header, BinaryTable binaryTable, int size)
93 throws HeaderCardException, FitsException {
94 for (ICompressColumnParameter parameter : columnParameters()) {
95 parameter.setColumnData(getNullableColumn(header, binaryTable, parameter.getName()), size);
96 }
97 }
98
99 @Override
100 public void initializeColumns(int size) {
101 for (ICompressColumnParameter parameter : columnParameters()) {
102 parameter.setColumnData(null, size);
103 }
104 }
105
106 @Override
107 public void setValuesInColumn(int index) {
108 for (ICompressColumnParameter parameter : columnParameters()) {
109 parameter.setValueInColumn(index);
110 }
111 }
112
113 @Override
114 public void setValuesInHeader(Header header) throws HeaderCardException {
115 for (ICompressHeaderParameter parameter : headerParameters()) {
116 parameter.setValueInHeader(header);
117 }
118 }
119
120 private Object getNullableColumn(Header header, BinaryTable binaryTable, String columnName)
121 throws HeaderCardException, FitsException {
122 for (int i = 1; i <= binaryTable.getNCols(); i++) {
123 HeaderCard card = header.getCard(TTYPEn.n(i));
124 if (card != null) {
125 if (card.getValue().trim().equals(columnName)) {
126 return binaryTable.getColumn(i - 1);
127 }
128 }
129 }
130 return null;
131 }
132
133
134
135
136
137
138
139
140
141 protected ICompressColumnParameter[] columnParameters() {
142 return new ICompressColumnParameter[0];
143 }
144
145
146
147
148
149
150
151
152 protected abstract ICompressHeaderParameter[] headerParameters();
153 }