public static ChannelSearchResult FindByNameAndVariable(string name, Variable v)
        {
            ChannelSearchResult result;

            //TODO: try to use delegates in future version to eliminate duplicate code

            ChannelList channels = ChannelManager.GetListByStationNameAndVariable(name, v.Id);
            if (channels != null)
            {
                result = new ChannelSearchResult(channels);
                return result;
            }

            MessageWriter writer = new MessageWriter();
            writer.VariableName = v.Name;
            StationList stations = StationManager.GetListByName(name);

            if (stations != null)
            {
                result = new ChannelSearchResult(stations);
                writer.StationName = stations[0].Name;
                result.ErrorMessage = writer.WriteErrorMessage(MessageType.NoStationVariable);
                return result;
            }

            result = new ChannelSearchResult();
            result.ErrorMessage = writer.WriteErrorMessage(MessageType.NoStation);
            return result;
        }
        public static ChannelSearchResult FindByStationIdAndVariable(int stId, Variable v)
        {
            ChannelSearchResult result;
            bool foundChannel = false;
            //bool foundStation = false;

            ChannelList channels = ChannelManager.GetListByStationAndVariable(stId, v.Id);
            if (channels.Count > 0)
            {
                result = new ChannelSearchResult(channels);
                foundChannel = true;
                return result;
            }

            //if the requested variable is daily precipitation - try to find
            //hourly precipitation instead
            if (foundChannel == false && v.VarEnum == VariableEnum.Precip)
            {
                //"1" means "hourly precipitation"
                channels = ChannelManager.GetListByStationAndVariable(stId, 1);
                if (channels.Count > 0)
                {
                    foundChannel = true;
                    foreach (Channel ch in channels)
                    {
                        ch.Variable = VariableManager.GetItemByEnum(VariableEnum.Precip);
                    }
                    result = new ChannelSearchResult(channels);
                    return result;
                }
            }

            //channel not found --> search if a a station exists
            MessageWriter writer = new MessageWriter();
            writer.VariableName = v.Name;
            Station station = StationManager.GetItemById(stId, false);

            if (station != null)
            {
                result = new ChannelSearchResult();
                result.Stations.Add(station);
                writer.StationName = station.Name;
                result.ErrorMessage = writer.WriteErrorMessage(MessageType.NoStationVariable);
                return result;
            }

            result = new ChannelSearchResult();
            result.ErrorMessage = writer.WriteErrorMessage(MessageType.NoStation);
            return result;
        }