/// <summary> /// Manage MarcDataField object. /// If the object is of type CustomObjectBase, /// then either insert values into, delete values from, or update values in MarcDataField. /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="value">Object of type MarcDataField.</param> /// <returns>Object of type CustomDataAccessStatus<MarcDataField>.</returns> public CustomDataAccessStatus <MarcDataField> MarcDataFieldManageAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, MarcDataField value) { return(MarcDataFieldManageAuto(sqlConnection, sqlTransaction, "BHL", value)); }
/// <summary> /// Select values from MarcDataField by primary key(s). /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="connectionKeyName">Connection key name located in config file.</param> /// <param name="marcDataFieldID"></param> /// <returns>Object of type MarcDataField.</returns> public MarcDataField MarcDataFieldSelectAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, string connectionKeyName, int marcDataFieldID) { SqlConnection connection = CustomSqlHelper.CreateConnection(CustomSqlHelper.GetConnectionStringFromConnectionStrings(connectionKeyName), sqlConnection); SqlTransaction transaction = sqlTransaction; using (SqlCommand command = CustomSqlHelper.CreateCommand("MarcDataFieldSelectAuto", connection, transaction, CustomSqlHelper.CreateInputParameter("MarcDataFieldID", SqlDbType.Int, null, false, marcDataFieldID))) { using (CustomSqlHelper <MarcDataField> helper = new CustomSqlHelper <MarcDataField>()) { CustomGenericList <MarcDataField> list = helper.ExecuteReader(command); if (list.Count > 0) { MarcDataField o = list[0]; list = null; return(o); } else { return(null); } } } }
/// <summary> /// Update values in MarcDataField. Returns an object of type MarcDataField. /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="value">Object of type MarcDataField.</param> /// <returns>Object of type MarcDataField.</returns> public MarcDataField MarcDataFieldUpdateAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, MarcDataField value) { return(MarcDataFieldUpdateAuto(sqlConnection, sqlTransaction, "BHL", value)); }
/// <summary> /// Manage MarcDataField object. /// If the object is of type CustomObjectBase, /// then either insert values into, delete values from, or update values in MarcDataField. /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="connectionKeyName">Connection key name located in config file.</param> /// <param name="value">Object of type MarcDataField.</param> /// <returns>Object of type CustomDataAccessStatus<MarcDataField>.</returns> public CustomDataAccessStatus <MarcDataField> MarcDataFieldManageAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, string connectionKeyName, MarcDataField value) { if (value.IsNew && !value.IsDeleted) { MarcDataField returnValue = MarcDataFieldInsertAuto(sqlConnection, sqlTransaction, connectionKeyName, value.MarcID, value.Tag, value.Indicator1, value.Indicator2); return(new CustomDataAccessStatus <MarcDataField>( CustomDataAccessContext.Insert, true, returnValue)); } else if (!value.IsNew && value.IsDeleted) { if (MarcDataFieldDeleteAuto(sqlConnection, sqlTransaction, connectionKeyName, value.MarcDataFieldID)) { return(new CustomDataAccessStatus <MarcDataField>( CustomDataAccessContext.Delete, true, value)); } else { return(new CustomDataAccessStatus <MarcDataField>( CustomDataAccessContext.Delete, false, value)); } } else if (value.IsDirty && !value.IsDeleted) { MarcDataField returnValue = MarcDataFieldUpdateAuto(sqlConnection, sqlTransaction, connectionKeyName, value.MarcDataFieldID, value.MarcID, value.Tag, value.Indicator1, value.Indicator2); return(new CustomDataAccessStatus <MarcDataField>( CustomDataAccessContext.Update, true, returnValue)); } else { return(new CustomDataAccessStatus <MarcDataField>( CustomDataAccessContext.NA, false, value)); } }
/// <summary> /// Insert values into MarcDataField. Returns an object of type MarcDataField. /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="connectionKeyName">Connection key name located in config file.</param> /// <param name="value">Object of type MarcDataField.</param> /// <returns>Object of type MarcDataField.</returns> public MarcDataField MarcDataFieldInsertAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, string connectionKeyName, MarcDataField value) { return(MarcDataFieldInsertAuto(sqlConnection, sqlTransaction, connectionKeyName, value.MarcID, value.Tag, value.Indicator1, value.Indicator2)); }
private void HarvestMarcData(String marcFile, int batchID, String institutionCode) { BHLProvider provider = new BHLProvider(); // Open the file and parse the data within it XmlDocument xml = new XmlDocument(); xml.Load(marcFile); XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("ns", "http://www.loc.gov/MARC21/slim"); // update the root Marc information String leader = String.Empty; XmlNode marcNode = xml.SelectSingleNode("ns:record/ns:leader", nsmgr); if (marcNode != null) { leader = marcNode.InnerText; } Marc marc = provider.MarcInsertAuto(batchID, marcFile.Replace(ConfigurationManager.AppSettings["MarcUploadDrive"], ConfigurationManager.AppSettings["MarcUploadServer"]), institutionCode, leader, null); // Insert the new Marc control information XmlNodeList controlFields = xml.SelectNodes("ns:record/ns:controlfield", nsmgr); foreach (XmlNode controlField in controlFields) { String tag = (controlField.Attributes["tag"] == null) ? String.Empty : controlField.Attributes["tag"].Value; String value = controlField.InnerText; provider.MarcControlInsertAuto(marc.MarcID, tag, value); } // Insert the new Marc data field and subfield information XmlNodeList dataFields = xml.SelectNodes("ns:record/ns:datafield", nsmgr); foreach (XmlNode dataField in dataFields) { String tag = (dataField.Attributes["tag"] == null) ? String.Empty : dataField.Attributes["tag"].Value; String indicator1 = (dataField.Attributes["ind1"] == null) ? String.Empty : dataField.Attributes["ind1"].Value; String indicator2 = (dataField.Attributes["ind2"] == null) ? String.Empty : dataField.Attributes["ind2"].Value; MarcDataField marcDataField = provider.MarcDataFieldInsertAuto(marc.MarcID, tag, indicator1, indicator2); XmlNodeList subFields = dataField.SelectNodes("ns:subfield", nsmgr); foreach (XmlNode subField in subFields) { String code = (subField.Attributes["code"] == null) ? String.Empty : subField.Attributes["code"].Value; String value = subField.InnerText; provider.MarcSubFieldInsertAuto(marcDataField.MarcDataFieldID, code, value); } } }
/// <summary> /// Update values in MarcDataField. Returns an object of type MarcDataField. /// </summary> /// <param name="sqlConnection">Sql connection or null.</param> /// <param name="sqlTransaction">Sql transaction or null.</param> /// <param name="connectionKeyName">Connection key name located in config file.</param> /// <param name="marcDataFieldID"></param> /// <param name="marcID"></param> /// <param name="tag"></param> /// <param name="indicator1"></param> /// <param name="indicator2"></param> /// <returns>Object of type MarcDataField.</returns> public MarcDataField MarcDataFieldUpdateAuto( SqlConnection sqlConnection, SqlTransaction sqlTransaction, string connectionKeyName, int marcDataFieldID, int marcID, string tag, string indicator1, string indicator2) { SqlConnection connection = CustomSqlHelper.CreateConnection(CustomSqlHelper.GetConnectionStringFromConnectionStrings(connectionKeyName), sqlConnection); SqlTransaction transaction = sqlTransaction; using (SqlCommand command = CustomSqlHelper.CreateCommand("MarcDataFieldUpdateAuto", connection, transaction, CustomSqlHelper.CreateInputParameter("MarcDataFieldID", SqlDbType.Int, null, false, marcDataFieldID), CustomSqlHelper.CreateInputParameter("MarcID", SqlDbType.Int, null, false, marcID), CustomSqlHelper.CreateInputParameter("Tag", SqlDbType.NChar, 3, false, tag), CustomSqlHelper.CreateInputParameter("Indicator1", SqlDbType.NChar, 1, false, indicator1), CustomSqlHelper.CreateInputParameter("Indicator2", SqlDbType.NChar, 1, false, indicator2), CustomSqlHelper.CreateReturnValueParameter("ReturnCode", SqlDbType.Int, null, false))) { using (CustomSqlHelper <MarcDataField> helper = new CustomSqlHelper <MarcDataField>()) { CustomGenericList <MarcDataField> list = helper.ExecuteReader(command); if (list.Count > 0) { MarcDataField o = list[0]; list = null; return(o); } else { return(null); } } } }