/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package biblivre3.cataloging.bibliographic;
import biblivre3.enums.Database;
import biblivre3.enums.MaterialType;
import biblivre3.enums.RecordStatus;
import biblivre3.cataloging.holding.HoldingBO;
import biblivre3.enums.Availability;
import biblivre3.marcutils.MarcReader;
import biblivre3.utils.ApplicationConstants;
import org.apache.commons.lang.StringUtils;
import org.marc4j_2_3_1.marc.Record;
public class FreeMarcBO extends BiblioBO {
public final RecordDTO insert(final String freeMarc, final Database base, final String materialType) {
RecordDTO dto = checkAndSave(freeMarc, base, materialType, null);
return dto;
}
private RecordDTO checkAndSave(final String marc, final Database base, final String materialType, final String[] ex_auto) {
MaterialType mt = MaterialType.getByCode(materialType);
final Record record = MarcReader.marcToRecord(marc, mt, RecordStatus.NEW);
RecordDTO dto = super.insert(record, base, mt);
if (ex_auto != null) {
new HoldingBO().createAutomaticHolding(record, base, dto.getRecordSerial(), Availability.AVAILABLE, ex_auto);
}
return dto;
}
public final boolean importRecords(final String records, final Database base, final String materialType, final String[] ex_auto) {
final String[] aRecords = records.split(ApplicationConstants.FREEMARC_RECORD_SEPARATOR);
for (final String marc : aRecords) {
if (StringUtils.isNotBlank(marc)) {
this.checkAndSave(marc, base, materialType, ex_auto);
}
}
return true;
}
}