public List<AlbumInfo_ReturnType> GetAlbumInformation(string albumName) { AlbumInfo_ReturnType albumRC = new AlbumInfo_ReturnType(); List<AlbumInfo_ReturnType> list = new List<AlbumInfo_ReturnType>(); try { ObjectCache cache = MemoryCache.Default; if (!string.IsNullOrEmpty(albumName)) { albumName = albumName.Trim(); albumRC.AlbumName = albumName; } else throw new Exception(@"Missing AlbumName value."); if (cache[albumName] != null && cache.Contains(albumName)) { list = (List<AlbumInfo_ReturnType>)cache.Get(albumName); } else { list = manageAlbumInfo(albumName, "album"); if (list.Count > 0) { CacheItemPolicy cachePolicy = new CacheItemPolicy(); cachePolicy.AbsoluteExpiration = DateTime.Now.AddHours(1); cache.Add(albumName, list, cachePolicy); } } } catch (Exception e) { albumRC.Status = -1; albumRC.StatusDescription = @"Excetion::" + e.TargetSite + " - " + e.Message; } return list; }
private static SongApplication_ReturnType manageSongRecord(string albumName, string songName, string songLength, string trackNumber, string genre, string tagName, string action, ref string songId, string albumId) { SongApplication_ReturnType dataRC = new SongApplication_ReturnType(); List<AlbumInfo_ReturnType> updateData = new List<AlbumInfo_ReturnType>(); AlbumInfo_ReturnType record = new AlbumInfo_ReturnType(); DataSet dataSet = new DataSet(); string connectDB = string.Empty; Random rand = new Random(); //0 = SQL, 1 = XML try { if (ConfigurationManager.AppSettings[@"connectionString"] != null) connectDB = Convert.ToString(ConfigurationManager.AppSettings[@"connectionString"]); ObjectCache updateCache = MemoryCache.Default; if (action.Equals(@"update")) { if (rand.Next(2) == 0) { //sql dataSet = SongApplicationDataAccess.GetDataSet(2, connectDB, albumId, songId, songName, songLength, trackNumber, genre); dataRC.StatusDescription = "Update Song was successful."; dataRC.Status = 0; } else { //xml SongApplicationDataAccess.UpdateXMLSongInfo(songId, albumId, songName, songLength, trackNumber, genre, tagName); dataRC.Status = 0; dataRC.StatusDescription = "Update request was successful"; } if (updateCache.Contains(albumName)) { updateData = (List<AlbumInfo_ReturnType>)updateCache.Get(albumName); if (updateData != null && updateData.Count > 0) { for (int i = 0; i < updateData.Count; i++) { if (updateData[i].SongId.ToString().Equals(songId) && updateData[i].AlbumId.ToString().Equals(albumId)) { updateData[i].SongName = songName; updateData[i].Length = songLength; updateData[i].TrackNumber = trackNumber; updateData[i].Genre = genre; } } } CacheItemPolicy cachePolicy = new CacheItemPolicy(); cachePolicy.AbsoluteExpiration = DateTime.Now.AddHours(1); updateCache.Set(albumName, updateData, cachePolicy); } } else if (action.Equals(@"insert")) { if (rand.Next(2) == 0) { //sql dataSet = SongApplicationDataAccess.GetDataSet(1, connectDB, albumId, albumName, songName, songLength, trackNumber, genre); if (dataSet != null && dataSet.Tables != null && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows != null && dataSet.Tables[0].Rows.Count > 0) { if (Convert.IsDBNull(dataSet.Tables[0].Rows[0][@"SongId"]) != null) songId = Convert.IsDBNull(dataSet.Tables[0].Rows[0][@"SongId"]).ToString(); } } else { //xml SongApplicationDataAccess.insertXMLSongInfo(albumName, albumId, songName, songLength, trackNumber, genre, tagName, ref songId); if (string.IsNullOrEmpty(songId)) { dataRC.StatusDescription = "Failed to insert record in XML Data source. This can be due to albumn record does not exsits."; dataRC.Status = -1; } } if (string.IsNullOrEmpty(songId)) { dataRC.StatusDescription = "Failed to insert song."; dataRC.Status = -1; } else { dataRC.StatusDescription = "Tnsert song request was succesful."; dataRC.Status = 0; if (updateCache.Contains(albumName)) { updateData = (List<AlbumInfo_ReturnType>)updateCache.Get(albumName); if (updateCache != null) { record.AlbumId = Convert.ToInt32(albumId); record.AlbumName = albumName; record.SongId = Convert.ToInt32(songId); record.SongName = songName; record.Length = songLength; record.TrackNumber = trackNumber; record.Genre = genre; updateData.Add(record); } CacheItemPolicy cachePolicy = new CacheItemPolicy(); cachePolicy.AbsoluteExpiration = DateTime.Now.AddHours(1); updateCache.Set(albumName, updateData, cachePolicy); } } } } catch (Exception e) { dataRC.Status = -1; dataRC.StatusDescription = @"Excetion::" + e.TargetSite + " - " + e.Message; } return dataRC; }
private static List<AlbumInfo_ReturnType> manageAlbumInfo(string albumName, string tagName) { AlbumInfo_ReturnType dataRC = null; DataTable data = new DataTable(); DataSet dataSet = new DataSet(); string artist = string.Empty; string connectDB = string.Empty; List<AlbumInfo_ReturnType> list = new List<AlbumInfo_ReturnType>(); try { if ((Convert.ToDateTime(ConfigurationManager.AppSettings[@"recentXMLDataSourceModify"].ToString()) - (Convert.ToDateTime(ConfigurationManager.AppSettings[@"recentSQLDataSourceModify"].ToString()))).TotalMinutes < 0) { //sql if (ConfigurationManager.AppSettings[@"connectionString"] != null) connectDB = Convert.ToString(ConfigurationManager.AppSettings[@"connectionString"]); dataSet = SongApplicationDataAccess.GetDataSet(0, connectDB, albumName); if (dataSet != null && dataSet.Tables != null && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows != null && dataSet.Tables[0].Rows.Count > 0) { data = dataSet.Tables[0]; } } else { data = SongApplicationDataAccess.GetXMLAlbumData(albumName, tagName, ref artist); } if (data != null && data.Rows.Count > 0) { for (int rec = 0; rec < data.Rows.Count; rec++) { dataRC = new AlbumInfo_ReturnType(); dataRC.AlbumId = (!Convert.IsDBNull(data.Rows[rec][@"albumId"])) ? Convert.ToInt32(data.Rows[rec][@"albumId"]) : 0; dataRC.SongId = (!Convert.IsDBNull(data.Rows[rec][@"songId"])) ? Convert.ToInt32(data.Rows[rec][@"songId"]) : 0; dataRC.AlbumName = (!Convert.IsDBNull(data.Rows[rec][@"albumName"])) ? Convert.ToString(data.Rows[rec][@"albumName"]) : string.Empty; dataRC.Artist = (!Convert.IsDBNull(data.Rows[rec][@"artistName"])) ? Convert.ToString(data.Rows[rec][@"artistName"]) : string.Empty; dataRC.SongName = (!Convert.IsDBNull(data.Rows[rec][@"songName"])) ? Convert.ToString(data.Rows[rec].ItemArray[data.Columns[@"songName"].Ordinal]) : string.Empty; dataRC.Length = (!Convert.IsDBNull(data.Rows[rec][@"length"])) ? Convert.ToString(data.Rows[rec][@"length"]) : string.Empty; dataRC.TrackNumber = (!Convert.IsDBNull(data.Rows[rec][@"trackNumber"])) ? Convert.ToString(data.Rows[rec][@"trackNumber"]) : string.Empty; dataRC.Genre = (!Convert.IsDBNull(data.Rows[rec][@"genre"])) ? Convert.ToString(data.Rows[rec][@"genre"]) : string.Empty; if(dataRC != null) list.Add(dataRC); } dataRC.Status = 0; } else { dataRC.Status = 1; dataRC.StatusDescription = @"No Records where found for album named - " + albumName; } } catch (Exception e) { dataRC.Status = -1; dataRC.StatusDescription = @"Excetion::" + e.TargetSite + " - " + e.Message; list.Clear(); list.Add(dataRC); } return list; }