001 package org.kuali.ole.describe.controller;
002
003 import java.util.HashMap;
004 import java.util.Map;
005
006 import org.kuali.ole.docstore.model.enums.DocCategory;
007 import org.kuali.ole.docstore.model.enums.DocFormat;
008 import org.kuali.ole.docstore.model.enums.DocType;
009
010 /**
011 * Creates a singleton instance of an editor based on the given parameters.
012 * User: tirumalesh.b
013 * Date: 28/12/12 Time: 12:51 PM
014 */
015 public class DocumentEditorFactory {
016 private static DocumentEditorFactory documentEditorFactory = new DocumentEditorFactory();
017
018 private Map<String, DocumentEditor> documentEditorMap = new HashMap<String, DocumentEditor>();
019
020 public static DocumentEditorFactory getInstance() {
021 return documentEditorFactory;
022 }
023
024 private DocumentEditorFactory() {
025 initDocumentEditorMap();
026 }
027
028 private void initDocumentEditorMap() {
029 String key = DocCategory.WORK.getCode() + DocType.BIB.getDescription() + DocFormat.MARC.getCode();
030 documentEditorMap.put(key, WorkBibMarcEditor.getInstance());
031
032 key = DocCategory.WORK.getCode() + DocType.INSTANCE.getCode() + DocFormat.OLEML.getCode();
033 documentEditorMap.put(key, WorkInstanceOlemlEditor.getInstance());
034
035 key = DocCategory.WORK.getCode() + DocType.HOLDINGS.getCode() + DocFormat.OLEML.getCode();
036 documentEditorMap.put(key, WorkInstanceOlemlEditor.getInstance());
037
038 key = DocCategory.WORK.getCode() + DocType.SOURCEHOLDINGS.getCode() + DocFormat.OLEML.getCode();
039 documentEditorMap.put(key, WorkInstanceOlemlEditor.getInstance());
040
041 key = DocCategory.WORK.getCode() + DocType.ITEM.getCode() + DocFormat.OLEML.getCode();
042 documentEditorMap.put(key, WorkInstanceOlemlEditor.getInstance());
043 }
044
045 public DocumentEditor getDocumentEditor(String docCategory, String docType, String docFormat) {
046 return documentEditorMap.get(docCategory + docType + docFormat);
047 }
048
049 }