1 /*
2 * Copyright 2011 The Kuali Foundation.
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.ole.select.service.impl;
17
18 import org.kuali.ole.select.businessobject.BibInfoBean;
19 import org.kuali.ole.select.service.BibMarcXMLGenerationService;
20
21 import java.util.HashMap;
22
23 public class BibMarcXMLGenerationServiceImpl implements BibMarcXMLGenerationService {
24 private static BibMarcXMLGenerationServiceImpl bibMarcXMLGenerationServiceImpl;
25 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BibMarcXMLGenerationServiceImpl.class);
26
27
28 private String buildXmlString(BibInfoBean bibInfoBean, HashMap dataMap) throws Exception {
29 //StringBuffer xmlString = new StringBuffer();
30 StringBuilder xmlString = new StringBuilder();
31 //xmlString.append("<?xml version=\"1.0\"?>");
32 xmlString.append("<collection>");
33 xmlString.append("<record>");
34 xmlString.append("<leader>" + bibInfoBean.getLeader() + "</leader>");
35 xmlString.append("<controlfield tag=\"001\"></controlfield>");
36 xmlString.append("<controlfield tag=\"008\">" + bibInfoBean.getControlField() + "</controlfield>");
37 if (bibInfoBean.getStandardNumber() != null && !bibInfoBean.getStandardNumber().isEmpty()) {
38 xmlString.append("<datafield tag=\"020\" >");
39 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getStandardNumber()).append("</subfield>");
40 xmlString.append("</datafield>");
41 }
42 if (bibInfoBean.getAuthor() != null && !bibInfoBean.getAuthor().isEmpty()) {
43 xmlString.append("<datafield tag=\"100\" >");
44 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getAuthor()).append("</subfield>");
45 xmlString.append("</datafield>");
46 }
47 if (bibInfoBean.getTitle() != null && !bibInfoBean.getTitle().isEmpty()) {
48 xmlString.append("<datafield tag=\"245\" >");
49 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getTitle()).append("</subfield>");
50 xmlString.append("</datafield>");
51 }
52 if (bibInfoBean.getEdition() != null && !bibInfoBean.getEdition().isEmpty()) {
53 xmlString.append("<datafield tag=\"250\" >");
54 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getEdition()).append("</subfield>");
55 xmlString.append("</datafield>");
56 }
57 if ((bibInfoBean.getPlaceOfPublication() != null && !bibInfoBean.getPlaceOfPublication().isEmpty()) || (bibInfoBean.getPublisher() != null && !bibInfoBean.getPublisher().isEmpty()) || (bibInfoBean.getYearOfPublication() != null && !bibInfoBean.getYearOfPublication().isEmpty())) {
58 xmlString.append("<datafield tag=\"260\" >");
59 //if (bibInfoBean.getPlaceOfPublication() != null)
60 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getPlaceOfPublication()).append("</subfield>");
61 //if (bibInfoBean.getPublisher() != null)
62 xmlString.append("<subfield code=\"b\">").append(bibInfoBean.getPublisher()).append("</subfield>");
63 //if (bibInfoBean.getYearOfPublication() != null)
64 xmlString.append("<subfield code=\"c\">").append(bibInfoBean.getYearOfPublication()).append("</subfield>");
65 xmlString.append("</datafield>");
66 }
67 if (bibInfoBean.getSeriesOfStatement() != null && !bibInfoBean.getSeriesOfStatement().isEmpty()) {
68 xmlString.append("<datafield tag=\"490\" >");
69 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getSeriesOfStatement()).append("</subfield>");
70 xmlString.append("</datafield>");
71 }
72 /*if ((bibInfoBean.getFundCode() != null && !bibInfoBean.getFundCode().isEmpty()) || ((bibInfoBean.getLocation() != null)&& !bibInfoBean.getLocation().isEmpty())) {
73 xmlString.append("<datafield tag=\"960\" >");
74 //if (bibInfoBean.getFundCode() != null)
75 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getFundCode()).append("</subfield>");
76 //if (bibInfoBean.getLocation() != null)
77 xmlString.append("<subfield code=\"h\">").append(bibInfoBean.getLocation()).append("</subfield>");
78 xmlString.append("</datafield>");
79 }
80 if (bibInfoBean.getRequestersNotes() != null && !bibInfoBean.getRequestersNotes().isEmpty() ) {
81 xmlString.append("<datafield tag=\"961\" >");
82 xmlString.append("<subfield code=\"d\">").append(bibInfoBean.getRequestersNotes()).append("</subfield>");
83 xmlString.append("</datafield>");
84 }
85 if (dataMap.containsKey("unitPrice") || dataMap.containsKey("itemQuantity")) {
86 xmlString.append("<datafield tag=\"980\" >");
87 //if (dataMap.containsKey("unitPrice"))
88 xmlString.append("<subfield code=\"b\">").append(dataMap.get("unitPrice")).append("</subfield>");
89 //if (dataMap.containsKey("itemQuantity"))
90 xmlString.append("<subfield code=\"q\">").append(dataMap.get("itemQuantity")).append("</subfield>");
91 xmlString.append("</datafield>");
92 }
93 if (dataMap.containsKey("ybpOrderKey") || dataMap.containsKey("subAccountNo") || dataMap.containsKey("binding") || dataMap.containsKey("initials")) {
94 xmlString.append("<datafield tag=\"982\" >");
95 //if (dataMap.containsKey("ybpOrderKey"))
96 xmlString.append("<subfield code=\"a\">").append(dataMap.get("ybpOrderKey")).append("</subfield>");
97 //if (dataMap.containsKey("subAccountNo"))
98 xmlString.append("<subfield code=\"b\">").append(dataMap.get("subAccountNo")).append("</subfield>");
99 //if (dataMap.containsKey("binding"))
100 xmlString.append("<subfield code=\"d\">").append(dataMap.get("binding")).append("</subfield>");
101 //if (dataMap.containsKey("initials"))
102 xmlString.append("<subfield code=\"f\">").append(dataMap.get("initials")).append("</subfield>");
103 xmlString.append("</datafield>");
104 }
105 if (dataMap.containsKey("dateOrdered") || dataMap.containsKey("vendorCode")) {
106 xmlString.append("<datafield tag=\"984\" >");
107 //if (dataMap.containsKey("dateOrdered"))
108 if ((bibInfoBean.getFundCode() != null && !bibInfoBean.getFundCode().isEmpty()) || ((bibInfoBean.getLocation() != null)&& !bibInfoBean.getLocation().isEmpty())) {
109 xmlString.append("<datafield tag=\"960\" >");
110 //if (bibInfoBean.getFundCode() != null)
111 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getFundCode()).append("</subfield>");
112 //if (bibInfoBean.getLocation() != null)
113 xmlString.append("<subfield code=\"h\">").append(bibInfoBean.getLocation()).append("</subfield>");
114 xmlString.append("</datafield>");
115 }
116 if (bibInfoBean.getRequestersNotes() != null && !bibInfoBean.getRequestersNotes().isEmpty() ) {
117 xmlString.append("<datafield tag=\"961\" >");
118 xmlString.append("<subfield code=\"d\">").append(bibInfoBean.getRequestersNotes()).append("</subfield>");
119 xmlString.append("</datafield>");
120 }
121 if (dataMap.containsKey("unitPrice") || dataMap.containsKey("itemQuantity")) {
122 xmlString.append("<datafield tag=\"980\" >");
123 //if (dataMap.containsKey("unitPrice"))
124 xmlString.append("<subfield code=\"b\">").append(dataMap.get("unitPrice")).append("</subfield>");
125 //if (dataMap.containsKey("itemQuantity"))
126 xmlString.append("<subfield code=\"q\">").append(dataMap.get("itemQuantity")).append("</subfield>");
127 xmlString.append("</datafield>");
128 }
129 if (dataMap.containsKey("ybpOrderKey") || dataMap.containsKey("subAccountNo") || dataMap.containsKey("binding") || dataMap.containsKey("initials")) {
130 xmlString.append("<datafield tag=\"982\" >");
131 //if (dataMap.containsKey("ybpOrderKey"))
132 xmlString.append("<subfield code=\"a\">").append(dataMap.get("ybpOrderKey")).append("</subfield>");
133 //if (dataMap.containsKey("subAccountNo"))
134 xmlString.append("<subfield code=\"b\">").append(dataMap.get("subAccountNo")).append("</subfield>");
135 //if (dataMap.containsKey("binding"))
136 xmlString.append("<subfield code=\"d\">").append(dataMap.get("binding")).append("</subfield>");
137 //if (dataMap.containsKey("initials"))
138 xmlString.append("<subfield code=\"f\">").append(dataMap.get("initials")).append("</subfield>");
139 xmlString.append("</datafield>");
140 }
141 if (dataMap.containsKey("dateOrdered") || dataMap.containsKey("vendorCode")) {
142 xmlString.append("<datafield tag=\"984\" >");
143 //if (dataMap.containsKey("dateOrdered"))
144 xmlString.append("<subfield code=\"a\">").append(dataMap.get("dateOrdered")).append("</subfield>");
145 //if (dataMap.containsKey("vendorCode"))
146 xmlString.append("<subfield code=\"c\">").append(dataMap.get("vendorCode")).append("</subfield>");
147 xmlString.append("</datafield>");
148 }
149 if (dataMap.containsKey("ybpUID")) {
150 xmlString.append("<datafield tag=\"987\" >");
151 xmlString.append("<subfield code=\"a\">").append(dataMap.get("ybpUID")).append("</subfield>");
152 xmlString.append("</datafield>");
153 }
154 if (bibInfoBean.getSeries() != null && !bibInfoBean.getSeries().isEmpty()) {
155 xmlString.append("<datafield tag=\"993\" >");
156 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getSeries()).append("</subfield>");
157 xmlString.append("</datafield>");
158 } xmlString.append("<subfield code=\"a\">").append(dataMap.get("dateOrdered")).append("</subfield>");
159 //if (dataMap.containsKey("vendorCode"))
160 xmlString.append("<subfield code=\"c\">").append(dataMap.get("vendorCode")).append("</subfield>");
161 xmlString.append("</datafield>");
162 }
163 if (dataMap.containsKey("ybpUID")) {
164 xmlString.append("<datafield tag=\"987\" >");
165 xmlString.append("<subfield code=\"a\">").append(dataMap.get("ybpUID")).append("</subfield>");
166 xmlString.append("</datafield>");
167 }
168 if (bibInfoBean.getSeries() != null && !bibInfoBean.getSeries().isEmpty()) {
169 xmlString.append("<datafield tag=\"993\" >");
170 xmlString.append("<subfield code=\"a\">").append(bibInfoBean.getSeries()).append("</subfield>");
171 xmlString.append("</datafield>");
172 }*/
173 xmlString.append("</record>");
174 xmlString.append("</collection>");
175 if (LOG.isDebugEnabled())
176 LOG.debug("xmlString----------->" + xmlString.toString());
177 return xmlString.toString();
178 }
179
180 public String getMarcXML(BibInfoBean bibInfoBean, HashMap dataMap) throws Exception {
181 return buildXmlString(bibInfoBean, dataMap);
182 }
183
184 /* public static void main(String args[]){
185 try{
186 writeToXMLFile();
187 }catch(Exception e){
188 e.printStackTrace();
189 }
190 }*/
191 }