1 package org.kuali.ole.editor.bo;
2
3 import org.kuali.ole.BibliographicRecordHandler;
4 import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.ControlField;
5 import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.DataField;
6 import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.SubField;
7 import org.kuali.ole.editor.form.MarcEditorForm;
8 import org.kuali.ole.pojo.bib.BibliographicRecord;
9 import org.kuali.rice.krad.web.form.UifFormBase;
10
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.List;
14 import java.util.StringTokenizer;
15
16
17
18
19 public class MarcEditorFormDataHandler {
20
21
22
23
24
25
26 public String buildBibRecordForDocStore(UifFormBase uifFormBase){
27 MarcEditorForm marcEditorForm = (MarcEditorForm) uifFormBase;
28 BibliographicRecord bibliographicRecord = new BibliographicRecord();
29 bibliographicRecord.setLeader(marcEditorForm.getLeader());
30 bibliographicRecord.setControlfields(buldBibliographicContrlFields(marcEditorForm.getControlFields()));
31 bibliographicRecord.setDatafields(buildBibliographicDataFields(marcEditorForm.getDataFields()));
32 String content = new BibliographicRecordHandler().generateXML(bibliographicRecord);
33 return content;
34 }
35
36
37
38
39
40
41
42 private List<DataField> buildBibliographicDataFields(List<MarcEditorDataField> dataFields) {
43 String marcEditorDataFieldValue;
44 List<DataField> marcDataFieldList = new ArrayList<DataField>();
45 for (int i = 0; i < dataFields.size(); i++) {
46 DataField marcDataField = new DataField();
47 List<SubField> marcSubFieldList = new ArrayList<SubField>();
48 marcEditorDataFieldValue = dataFields.get(i).getValue();
49 StringTokenizer str = new StringTokenizer(marcEditorDataFieldValue, "|");
50 while (str.hasMoreTokens()) {
51 SubField marcSubField = new SubField();
52 String dataFieldTokenizedVal = str.nextToken();
53 String code = Character.toString(dataFieldTokenizedVal.charAt(0));
54 marcSubField.setCode(code);
55 String value = dataFieldTokenizedVal.substring(1, dataFieldTokenizedVal.length());
56 marcSubField.setValue(value);
57 marcSubFieldList.add(marcSubField);
58 }
59 marcDataField.setSubFields(marcSubFieldList);
60 marcDataField.setTag(dataFields.get(i).getTag());
61 marcDataField.setInd1(dataFields.get(i).getInd1());
62 marcDataField.setInd2(dataFields.get(i).getInd2());
63 marcDataFieldList.add(marcDataField);
64 }
65 return marcDataFieldList;
66 }
67
68
69
70
71
72
73
74 private List<ControlField> buldBibliographicContrlFields(List<MarcEditorControlField> controlFields) {
75 List<ControlField> marcControlFieldList = new ArrayList<ControlField>();
76 for (int i = 0; i < controlFields.size(); i++) {
77 ControlField marcControlField = new ControlField();
78 marcControlField.setTag(controlFields.get(i).getTag());
79 marcControlField.setValue(controlFields.get(i).getValue());
80 marcControlFieldList.add(marcControlField);
81 }
82 return marcControlFieldList;
83 }
84
85
86
87
88
89
90
91 public List<MarcEditorControlField> buildMarcEditorControlFields(List<ControlField> controlFields) {
92 List<MarcEditorControlField> marcControlFieldList = new ArrayList<MarcEditorControlField>();
93 for (int i = 0; i < controlFields.size(); i++) {
94 MarcEditorControlField marcEditorControlField = new MarcEditorControlField();
95 marcEditorControlField.setTag(controlFields.get(i).getTag());
96 marcEditorControlField.setValue(controlFields.get(i).getValue());
97 marcControlFieldList.add(marcEditorControlField);
98 }
99 return marcControlFieldList;
100 }
101
102
103
104
105
106
107
108 public List<MarcEditorDataField> buildMarcEditorDataFields(List<DataField> dataFields) {
109 List<MarcEditorDataField> marcEditorDataFields = new ArrayList<MarcEditorDataField>();
110 for (int i = 0; i < dataFields.size(); i++) {
111 MarcEditorDataField marcEditorDataField = new MarcEditorDataField();
112 marcEditorDataField.setTag(dataFields.get(i).getTag());
113 marcEditorDataField.setInd1(dataFields.get(i).getInd1());
114 marcEditorDataField.setInd2(dataFields.get(i).getInd2());
115 List<SubField> subFields = dataFields.get(i).getSubFields();
116 String subFieldVal = null;
117 for (int j = 0; j < subFields.size(); j++) {
118 String code = subFields.get(j).getCode();
119 String value = subFields.get(j).getValue();
120 if (subFieldVal != null)
121 subFieldVal = subFieldVal + "|" + code + value;
122 else
123 subFieldVal = "|" + code + value;
124 }
125 marcEditorDataField.setValue(subFieldVal);
126 marcEditorDataFields.add(marcEditorDataField);
127 }
128 return marcEditorDataFields;
129 }
130
131
132
133
134
135
136
137
138 public String getUUIDFromForm(UifFormBase uifFormBase) {
139 MarcEditorForm form = (MarcEditorForm) uifFormBase;
140 List<MarcEditorControlField> controlFields = form.getControlFields();
141 for (Iterator<MarcEditorControlField> iterator = controlFields.iterator(); iterator.hasNext(); ) {
142 MarcEditorControlField controlField = iterator.next();
143 if(controlField.getTag().equals("001")){
144 return controlField.getValue();
145 }
146 }
147 return null;
148 }
149 }