/*
* Copyright (C) 2014 Robert Simonovsky
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cas.lib.proarc.common.export.mets;
import cz.cas.lib.proarc.common.fedora.BinaryEditor;
import cz.cas.lib.proarc.common.object.ndk.NdkPlugin;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Constants for MetsMetsExport
*
* @author Robert Simonovsky
*
*/
public class Const {
public final static String FEDORAPREFIX = "info:fedora/";
public static HashMap<String, List<String>> streamMapping;
public static List<String> allowedIdentifiers = new ArrayList<String>();
public static ArrayList<String> mandatoryStreams = new ArrayList<String>();
public static ArrayList<String> canContainPage = new ArrayList<String>();
public static HashMap<String, String> streamMappingFile = new HashMap<String, String>();
public static HashMap<String, String> streamMappingPrefix = new HashMap<String, String>();
public static final String FEDORA_CREATEDATE = "info:fedora/fedora-system:def/model#createdDate";
public static final String FEDORA_LASTMODIFIED = "info:fedora/fedora-system:def/view#lastModifiedDate";
public static final String FEDORA_LABEL = "info:fedora/fedora-system:def/model#label";
public static final String DIV_PHYSICAL_ID = "PHYSICAL";
public static final String DIV_PHYSICAL_LABEL = "Physical_structure";
public static final String DIV_LOGICAL_ID = "LOGICAL";
public static final String DIV_LOGICAL_LABEL = "Logical_structure";
public final static String PERIODICAL_ITEM_MODEL = NdkPlugin.MODEL_PERIODICALISSUE;
public final static String PERIODICAL_MODEL = NdkPlugin.MODEL_PERIODICAL;
public final static String PERIODICAL_VOLUME_MODEL = NdkPlugin.MODEL_PERIODICALVOLUME;
public final static String PAGE_MODEL = NdkPlugin.MODEL_PAGE;
public final static String MONOGRAPH_TITLE_MODEL = NdkPlugin.MODEL_MONOGRAPHTITLE;
public final static String MONOGRAPH_MODEL = NdkPlugin.MODEL_MONOGRAPHVOLUME;
public final static String PICTURE_MODEL = NdkPlugin.MODEL_PICTURE;
public final static String ARTICLE_MODEL = NdkPlugin.MODEL_ARTICLE;
public final static String CHAPTER_MODEL = NdkPlugin.MODEL_CHAPTER;
public final static String SUPPLEMENT_MODEL = "model:supplement";
public static final String VOLUME = "VOLUME";
public static final String TITLE = "TITLE";
public final static String DC_URI = "http://www.openarchives.org/OAI/2.0/oai_dc/";
public final static String NSESSS_URI = "http://www.mvcr.cz/nsesss/v2";
public final static String URNNBN = "urnnbn";
public final static String UUID = "uuid";
public final static String CCNB = "ccnb";
public final static String ISSN = "issn";
public final static String ISBN = "isbn";
public final static String ISSUE = "ISSUE";
public final static String PERIODICAL_VOLUME = "PERIODICAL_VOLUME";
public final static String PERIODICAL_TITLE = "PERIODICAL_TITLE";
public final static String PAGE = "PAGE";
public final static String MONOGRAPH = "MONOGRAPH";
public final static String MONOGRAPH_MULTIPART = "MONOGRAPH_MULTIPART";
public final static String MONOGRAPH_UNIT = "MONOGRAPH_UNIT";
public final static String PICTURE = "PICTURE";
public final static String ARTICLE = "ARTICLE";
public final static String SUPPLEMENT = "SUPPLEMENT";
public final static String CHAPTER = "CHAPTER";
public static final String HASPAGE = "kramerius:hasPage";
public static final String HASMODEL = "fedora-model:hasModel";
public static final String HASVOLUME = "kramerius:hasVolume";
public static final String HASISSUE = "kramerius:hasItem";
public static final String HASUNIT = "kramerius:hasUnit";
public static final String HASINTCOMPPART = "kramerius:hasIntCompPart";
public static final String HASMEMBER = "fedora-rels-ext:hasMember";
public static final String ISONPAGE = "kramerius:isOnPage";
public static final List<String> PSPElements = new ArrayList<String>();
public final static Map<String, String> typeMap = new HashMap<String, String>();
public final static Map<String, String> typeNameMap = new HashMap<String, String>();
public final static Map<String, String> mimeToFmtMap = new HashMap<String, String>();
// Tech MD creation constants
public final static Map<String, String> dataStreamToModel = new HashMap<String, String>();
public final static Map<String, String> dataStreamToEvent = new HashMap<String, String>();
static {
allowedIdentifiers.add("isbn");
allowedIdentifiers.add("issn");
allowedIdentifiers.add("ccnb");
allowedIdentifiers.add("urnnbn");
mimeToFmtMap.put("image/tiff", "fmt/353");
mimeToFmtMap.put("image/jp2", "fmt/151");
mimeToFmtMap.put("text/xml", "fmt/101");
mimeToFmtMap.put("application/pdf", "fmt/18");
mimeToFmtMap.put("image/jpeg", "fmt/44");
mimeToFmtMap.put("audio/wav", "fmt/141");
mimeToFmtMap.put("audio/mpeg", "fmt/134");
PSPElements.add(Const.MONOGRAPH_UNIT);
PSPElements.add(Const.ISSUE);
PSPElements.add(Const.SUPPLEMENT);
typeMap.put(FEDORAPREFIX + PERIODICAL_ITEM_MODEL, ISSUE);
typeMap.put(FEDORAPREFIX + PERIODICAL_MODEL, PERIODICAL_TITLE);
typeMap.put(FEDORAPREFIX + PERIODICAL_VOLUME_MODEL, PERIODICAL_VOLUME);
typeMap.put(FEDORAPREFIX + PAGE_MODEL, PAGE);
typeMap.put(FEDORAPREFIX + MONOGRAPH_MODEL, MONOGRAPH_UNIT);
typeMap.put(FEDORAPREFIX + MONOGRAPH_TITLE_MODEL, MONOGRAPH_MULTIPART);
typeMap.put(FEDORAPREFIX + PICTURE_MODEL, PICTURE);
typeMap.put(FEDORAPREFIX + ARTICLE_MODEL, ARTICLE);
typeMap.put(FEDORAPREFIX + SUPPLEMENT_MODEL, SUPPLEMENT);
typeMap.put(FEDORAPREFIX + NdkPlugin.MODEL_MONOGRAPHSUPPLEMENT, SUPPLEMENT);
typeMap.put(FEDORAPREFIX + NdkPlugin.MODEL_PERIODICALSUPPLEMENT, SUPPLEMENT);
typeMap.put(FEDORAPREFIX + NdkPlugin.MODEL_CARTOGRAPHIC, MONOGRAPH_UNIT);
typeMap.put(FEDORAPREFIX + NdkPlugin.MODEL_SHEETMUSIC, MONOGRAPH_UNIT);
typeMap.put(FEDORAPREFIX + CHAPTER_MODEL, CHAPTER);
typeNameMap.put(ISSUE, ISSUE);
typeNameMap.put(PERIODICAL_VOLUME, VOLUME);
typeNameMap.put(PERIODICAL_TITLE, TITLE);
typeNameMap.put(PAGE, PAGE);
typeNameMap.put(MONOGRAPH_UNIT, VOLUME);
typeNameMap.put(PICTURE, PICTURE);
typeNameMap.put(ARTICLE, "ART");
typeNameMap.put(SUPPLEMENT, "SUPPLEMENT");
typeNameMap.put(CHAPTER, CHAPTER);
typeNameMap.put(MONOGRAPH_MULTIPART, MONOGRAPH);
mandatoryStreams.add("MC_IMGGRP");
mandatoryStreams.add("UC_IMGGRP");
mandatoryStreams.add("ALTOGRP");
mandatoryStreams.add("TXTGRP");
streamMapping = new HashMap<String, List<String>>();
streamMapping.put("MC_IMGGRP", new ArrayList<String>());
streamMapping.get("MC_IMGGRP").add(BinaryEditor.NDK_ARCHIVAL_ID);
// streamMapping.get("MC_IMGGRP").add("RAW");
streamMapping.put("UC_IMGGRP", new ArrayList<String>());
streamMapping.get("UC_IMGGRP").add(BinaryEditor.NDK_USER_ID);
// streamMapping.get("UC_IMGGRP").add("FULL");
streamMapping.put("ALTOGRP", new ArrayList<String>());
streamMapping.get("ALTOGRP").add("ALTO");
streamMapping.put("TXTGRP", new ArrayList<String>());
streamMapping.get("TXTGRP").add("TEXT_OCR");
streamMapping.put("TECHMDGRP", new ArrayList<String>());
streamMapping.get("TECHMDGRP").add("FULL_AMD");
streamMappingPrefix.put("MC_IMGGRP", "MC");
streamMappingPrefix.put("UC_IMGGRP", "UC");
streamMappingPrefix.put("ALTOGRP", "ALTO");
streamMappingPrefix.put("TXTGRP", "TXT");
streamMappingPrefix.put("TECHMDGRP", "AMD_METS");
streamMappingFile.put("MC_IMGGRP", "masterCopy");
streamMappingFile.put("UC_IMGGRP", "userCopy");
streamMappingFile.put("ALTOGRP", "ALTO");
streamMappingFile.put("TXTGRP", "TXT");
streamMappingFile.put("TECHMDGRP", "amdSec");
canContainPage.add(Const.ISSUE);
canContainPage.add(Const.MONOGRAPH_MULTIPART);
canContainPage.add(Const.MONOGRAPH_UNIT);
canContainPage.add(Const.SUPPLEMENT);
canContainPage.add(Const.PERIODICAL_VOLUME);
dataStreamToModel.put("RAW", BinaryEditor.RAW_ID);
dataStreamToModel.put("MC_IMGGRP", BinaryEditor.NDK_ARCHIVAL_ID);
dataStreamToModel.put("ALTOGRP", "ALTO");
dataStreamToEvent.put("RAW", "digitization_001");
dataStreamToEvent.put("MC_IMGGRP", "MC_creation_001");
dataStreamToEvent.put("ALTOGRP", "XML_creation_001");
}
}