private ConstantTableItem findOrCreateLocationByCode(String locCode) { if (locCode == null || locCode.length() == 0) return null; if (locations == null) { locations = ConstantPool.getInstance().findConstantTableByName(ConstantTables.LOCATION); } ConstantTableItem result = locations.findItemByCode(locCode); if (result == null) { try { result = new ConstantTableItem(); result.setCode(locCode); result.setConstantTableDefinition(locations.getId()); result.setEnable(true); result.setEnglishItemName("Rasa auto generated location for code: " + locCode); locations.getTableItems().add(result); locations = ConstantPool.getInstance().saveConstantTableDefinition(locations); result = locations.findItemByCode(locCode); } catch (Exception e) { e.printStackTrace(); } if (result != null) logger.info("A new location item has been generated for code: " + locCode, null); else logger.error("Could not create or find location item for code:" + locCode, null); } return result; }
private void makeMaregdRecord( int databaseType, Record record, String controlNumber, CustomStorageRecord storageRecord) { // making latin record String entryTag = StorageUtils.findEntryTagForAuthority((AuthorityRecord) storageRecord); String entryRelatedTag = "7" + entryTag.substring(1); record = storageRecord.getRecord(); Record engRecord = MarcUtils.parseContent(storageRecord.getContent()); engRecord.getControlField(Tags.ID).setData("0"); // exchanging fields DataField df200 = engRecord.getDataField(entryTag); DataField df700 = engRecord.getDataField(entryRelatedTag); if (df700 != null) { df700.setTag(entryTag); if (df200 != null) { df200.setTag(entryRelatedTag); df200.add(new Subfield('3', String.valueOf(storageRecord.getId()))); } CustomStorageRecord engStorageRecord = StorageUtils.createNewStorageRecord( StorageUtils.getStorageClassByClassType(databaseType)); engStorageRecord.setId(0); engStorageRecord.setContent(MarcUtils.marshalContent(engRecord)); engStorageRecord.setLanguageOfCataloging(MarcConsts.LANG_ENGLISH); engStorageRecord.setCharacterSets("50"); engStorageRecord.setSubfieldRangeData(Tags.GENERAL_PROCESSING_DATA, 'a', "ba", 21, 22); engStorageRecord.setSubfieldRangeData(Tags.GENERAL_PROCESSING_DATA, 'a', "0", 23, 23); engStorageRecord.setSubfieldData(Tags.LANGUAGE_OF_THE_ITEM, 'a', MarcConsts.LANG_PERSIAN); try { engStorageRecord = save(engStorageRecord); logger.info(" ^^ english record added.", null); df700 = record.getDataField(entryRelatedTag); if (df700 != null) { df700.add(new Subfield('3', String.valueOf(engStorageRecord.getId()))); storageRecord.setContent(MarcUtils.marshalContent(record)); storageRecord = save(storageRecord); logger.info(" ^^ farsi record changed.", null); } } catch (Exception ex) { logger.error("error: RecordNo = " + controlNumber + " english making error!! **", ex); } } }
public boolean importRecord( AbstractWorkGroup workGroup, Class<CustomStorageRecord> persistentClass, TempDatabankDefinition storageDatabak, Record record, boolean isFromDos, boolean addToNews, int NewsDuration) { String controlNumber = ""; ControlField cf = record.getControlField(Tags.ID); if (cf == null) { cf = new ControlField(Tags.ID, "0"); record.getControlFieldList().add(0, cf); } controlNumber = String.copyValueOf(cf.getData()); if (controlNumber == null || controlNumber.length() == 0) { controlNumber = "0"; } // CustomStorageRecord storageRecord = StorageUtils // .createNewStorageRecord(StorageUtils // .getStorageClassByClassType(databaseType)); // storageRecord.setContent(MarcUtils.marshalContent(record)); // if (isFromDos) { UniBibUtils.setCharacterSets(record, "50"); // storageRecord.setCharacterSets("50"); // String docType = UniBibUtils.getLocalDocType(record); // if ("AF".equals(docType)) { // String file = MarcUtils.getSubfieldData(record, Tags.BIB_ELECTRONICAL_LOCATION, 0, // 'd', 0); // if (file != null && file.length() != 0) // MarcUtils.setSubfieldData(record, Tags.CUSTOM_CATEGORY, 'a', "G"); // } // } /** @todo move to server */ // storageRecord.setDateEnterdOnFile(insertDate); // storageRecord.setId(0); try { List holdings = generateHoldings(record); CustomStorageRecord storageRecord = (CustomStorageRecord) StorageUtils.createNewStorageRecord(persistentClass); if (storageRecord instanceof TempDatabankRecord) { ((TempDatabankRecord) storageRecord).setDatabank(storageDatabak); } if (storageRecord instanceof BaseBibliographicRecord) { storageRecord.setWorkGroup(workGroup); } storageRecord.setContent(MarcUtils.marshalContent(record)); long id = saveFast(storageRecord, holdings); logger.info("Saved: New record no. = " + id, null); if (holdings.size() > 0) logger.info(holdings.size() + " holding(s) has been attached to record no. " + id, null); } catch (Exception ex) { logger.error("Not saved!: Old recordNo = " + controlNumber, ex); } return true; }