001package org.kuali.ole.docstore.document.rdbms; 002 003import org.kuali.ole.docstore.document.DocumentManager; 004import org.kuali.ole.docstore.model.enums.DocCategory; 005import org.kuali.ole.docstore.model.enums.DocFormat; 006import org.kuali.ole.docstore.model.enums.DocType; 007import org.kuali.ole.docstore.model.xmlpojo.ingest.RequestDocument; 008 009import java.util.HashMap; 010import java.util.Map; 011 012/** 013 * Creates the suitable implementation of DocumentManager for the given document category, type and format. 014 * 015 * @author tirumalesh.b 016 * @version %I%, %G% 017 * Date: 28/8/12 Time: 12:52 PM 018 */ 019public class RdbmsDocumentManagerFactory { 020 private static RdbmsDocumentManagerFactory documentManagerFactory = new RdbmsDocumentManagerFactory(); 021 private Map<String, DocumentManager> documentManagerMap = new HashMap<String, DocumentManager>(); 022 023 public static RdbmsDocumentManagerFactory getInstance() { 024 return documentManagerFactory; 025 } 026 027 private RdbmsDocumentManagerFactory() { 028 initDocumentManagerMap(); 029 } 030 031 private void initDocumentManagerMap() { 032 String key = DocCategory.WORK.getCode() + DocType.BIB.getCode() + DocFormat.MARC.getCode(); 033 documentManagerMap.put(key, RdbmsWorkBibMarcDocumentManager.getInstance()); 034 035 key = DocCategory.WORK.getCode() + DocType.BIB.getCode() + DocFormat.DUBLIN_CORE.getCode(); 036 documentManagerMap.put(key, RdbmsWorkBibDocumentManager.getInstance()); 037 038 key = DocCategory.WORK.getCode() + DocType.BIB.getCode() + DocFormat.DUBLIN_UNQUALIFIED.getCode(); 039 documentManagerMap.put(key, RdbmsWorkBibDocumentManager.getInstance()); 040 041 key = DocCategory.WORK.getCode() + DocType.INSTANCE.getCode() + DocFormat.OLEML.getCode(); 042 documentManagerMap.put(key, RdbmsWorkInstanceDocumentManager.getInstance()); 043 044 key = DocCategory.WORK.getCode() + DocType.ITEM.getCode() + DocFormat.OLEML.getCode(); 045 documentManagerMap.put(key, RdbmsWorkItemDocumentManager.getInstance()); 046 047 key = DocCategory.WORK.getCode() + DocType.HOLDINGS.getCode() + DocFormat.OLEML.getCode(); 048 documentManagerMap.put(key, RdbmsWorkHoldingsDocumentManager.getInstance()); 049 050 key = DocCategory.WORK.getCode() + DocType.EINSTANCE.getCode() + DocFormat.OLEML.getCode(); 051 documentManagerMap.put(key, RdbmsWorkEInstanceDocumentManager.getInstance()); 052 053 key = DocCategory.WORK.getCode() + DocType.EHOLDINGS.getCode() + DocFormat.OLEML.getCode(); 054 documentManagerMap.put(key, RdbmsWorkEHoldingsDocumentManager.getInstance()); 055 056 } 057 058 public DocumentManager getDocumentManager(String docCategory, String docType, String docFormat) { 059 return documentManagerMap.get(docCategory + docType + docFormat); 060 } 061 062 public DocumentManager getDocumentManager(RequestDocument requestDocument) { 063 return documentManagerMap 064 .get(requestDocument.getCategory() + requestDocument.getType() + requestDocument.getFormat()); 065 } 066}