示例#1
0
 /// <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));
 }
示例#2
0
        /// <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);
                    }
                }
            }
        }
示例#3
0
 /// <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));
 }
示例#4
0
        /// <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));
            }
        }
示例#5
0
 /// <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));
 }
示例#6
0
        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);
                }
            }
        }
示例#7
0
        /// <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);
                    }
                }
            }
        }