1
2
3
4 package net.sf.flatpack.xml;
5
6 import java.util.Collections;
7 import java.util.HashMap;
8 import java.util.Iterator;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Map.Entry;
12
13 import net.sf.flatpack.structure.ColumnMetaData;
14 import net.sf.flatpack.util.FPConstants;
15
16
17
18
19
20 public class MetaData {
21 private List<ColumnMetaData> columnsNames;
22 private Map columnIndexMap;
23 private final Map<String, XMLRecordElement> xmlRecordElements;
24
25 public MetaData(final List<ColumnMetaData> columnNames, final Map columnIndexMap) {
26 this.columnsNames = Collections.unmodifiableList(columnNames);
27 this.columnIndexMap = Collections.unmodifiableMap(columnIndexMap);
28 this.xmlRecordElements = new HashMap();
29 }
30
31 MetaData(final List<ColumnMetaData> columnNames, final Map columnIndexMap, final Map<String, XMLRecordElement> xmlRecordElements) {
32 this.columnsNames = Collections.unmodifiableList(columnNames);
33 this.columnIndexMap = columnIndexMap;
34 this.xmlRecordElements = xmlRecordElements;
35 }
36
37 public List<ColumnMetaData> getColumnsNames() {
38 return columnsNames;
39 }
40
41 public Map getColumnIndexMap() {
42 return columnIndexMap;
43 }
44
45 public void setColumnIndexMap(final Map columnIndexMap) {
46 this.columnIndexMap = columnIndexMap;
47 }
48
49 public void setColumnsNames(final List<ColumnMetaData> columnsNames) {
50 this.columnsNames = Collections.unmodifiableList(columnsNames);
51 }
52
53 public boolean isAnyRecordFormatSpecified() {
54 return xmlRecordElements != null && !xmlRecordElements.isEmpty();
55 }
56
57 public Iterator<Entry<String, XMLRecordElement>> xmlRecordIterator() {
58 return xmlRecordElements.entrySet().iterator();
59 }
60
61 public List<ColumnMetaData> getListColumnsForRecord(final String key) {
62 return xmlRecordElements.get(key).getColumns();
63 }
64
65 public int getColumnIndex(final String key, final String columnName) {
66 int idx = -1;
67 if (key != null && !key.equals(FPConstants.DETAIL_ID) && !key.equals(FPConstants.COL_IDX)) {
68 idx = xmlRecordElements.get(key).getColumnIndex(columnName);
69 } else if (key == null || key.equals(FPConstants.DETAIL_ID)) {
70 final Integer i = (Integer) columnIndexMap.get(columnName);
71 if (i != null) {
72
73 idx = i.intValue();
74 }
75 }
76 return idx;
77 }
78
79 @Override
80 public String toString() {
81 final StringBuilder buf = new StringBuilder();
82 buf.append("Col Names:").append(columnsNames).append(System.lineSeparator());
83 buf.append("Col Index Map:").append(columnIndexMap).append(System.lineSeparator());
84 buf.append("XML Record Elements:").append(xmlRecordElements).append(System.lineSeparator());
85 return buf.toString();
86 }
87 }