示例#1
0
        /// <summary>
        /// Añade un registro a la pila de la traza
        /// </summary>
        /// <param name="text"></param>
        /// <param name="entityCode"></param>
        /// <param name="action"></param>

        public static void AddLog(Type typeClass, TraceParameters trace)
        {
            ILog logger = GetLogger(typeClass);

            try
            {
                TraceLevel level = (TraceLevel)Enum.Parse(typeof(TraceLevel), trace.Tracelevel);
                string     text  = trace.Msg;
                if (string.IsNullOrEmpty(trace.Stack))
                {
                    text = trace.Msg;
                }
                else
                {
                    text = trace.Msg + System.Environment.NewLine + trace.Stack;
                }

                switch (level)
                {
                case TraceLevel.Error:
                    logger.Error(text);
                    break;

                case TraceLevel.Fatal:
                    logger.Fatal(text);
                    break;

                case TraceLevel.Info:
                    logger.Info(text);
                    break;

                case TraceLevel.Debug:
                    logger.Debug(text);
                    break;

                case TraceLevel.Warn:
                    logger.Warn(text);
                    break;

                default:
                    logger.Trace(text);
                    break;
                }
            }
            catch (Exception ex)
            {
                logger.Fatal("Exception try to add log Message: {0}" + ex.Message.ToString());
                logger.Fatal("Exception try to add log StackTrace: {0}" + ex.StackTrace.ToString());
            }
        }
示例#2
0
 public void SetTrace(HttpRequestMessage request)
 {
     try
     {
         TraceParameters model = JsonConvert.DeserializeObject <TraceParameters>(request.Content.ReadAsStringAsync().Result);
         TraceLogHelper.AddLog(typeof(TraceManagerController), model);
     }
     catch (Exception ex)
     {
         TraceParameters trace = new TraceParameters();
         trace.Msg        = ex.Message;
         trace.Tracelevel = System.Web.Http.Tracing.TraceLevel.Fatal.ToString();
         TraceLogHelper.AddLog(typeof(TraceManagerController), trace);
     }
 }
示例#3
0
        /// <summary>
        /// Finds the Best path between 2 points
        /// </summary>
        /// <param name="topologyName">[in] Name of existing topology.</param>
        /// <returns> 
        /// Returns true if successful.
        /// </returns>
        private bool FindBestPath(string topologyName)
        {
            // Get the Topology object for the specified Topology
            TopologyModel mapTopology = null;
            MapApplication mapApp = HostMapApplicationServices.Application;
            Topologies topos = mapApp.ActiveProject.Topologies;
            if (topos.Exists(topologyName))
            {
                mapTopology = topos[topologyName];
            }
            else
            {
                Utility.AcadEditor.WriteMessage(string.Format("\nERROR: The Topology {0} doesn't exit!", topologyName));
                return false;
            }

            // Required for the TraceBestPath Function
            ElementCollection objectsOnPath = null;
            TraceParameters objTraceParams = new  TraceParameters(
                0,		 // MinResistance,
                100000,	 // MaxResistance,
                null,	 // NodeResistanceExpression,
                null,	 // LinkDirectionExpression,
                null,	 // LinkResistanceExpression,
                null,	 // LinkReverseResistanceExpression,
                false,	 // UseReverseDirection,
                "Result",// Name
                "Test"); // Description

            // Open the topology for read
            try
            {
                mapTopology.Open(Autodesk.Gis.Map.Topology.OpenMode.ForRead);
            }
            catch (MapException e)
            {
                Utility.AcadEditor.WriteMessage(string.Format("\nERROR: Unable to open Topology {0} for read with error code: {1}.", topologyName, e.ErrorCode));
                return false;
            }

            try
            {
                // Select the starting node
                string promptString = "\nSelect the Start Node:";
                Node startNode = null;
                if (!SelectNode(ref startNode, promptString, mapTopology))
                {
                    Utility.AcadEditor.WriteMessage("\nERROR: A valid Start Node was not selected.");
                    return false;
                }

                // Select the end node
                Node endNode = null;
                promptString = "\nSelect the End Node:";
                if (!SelectNode(ref endNode, promptString, mapTopology))
                {
                    Utility.AcadEditor.WriteMessage("\nERROR: A valid End Node was not selected.");
                    return false;
                }

                // Select the intermediate nodes
                NodeCollection	intermediates = new NodeCollection();
                Node intermediateNode = null;

                promptString = "\nSelect an Intermediate Node:";
                while (SelectNode(ref intermediateNode, promptString, mapTopology))
                {
                    intermediates.Add(intermediateNode);
                    intermediateNode = null;
                }

                // Find the best path and output it as a new topology called result
                objectsOnPath = mapTopology.TraceBestPath(startNode, endNode, intermediates, objTraceParams);

                Utility.AcadEditor.WriteMessage("\nThe best path function has created a Topology named Result.");
                Utility.SendCommand("_regen\n");
                return true;
            }
            catch (MapException e)
            {
                if (2001 == e.ErrorCode)
                {
                    Utility.AcadEditor.WriteMessage("\nERROR: Topology Result already exists.");
                }
                else
                {
                    Utility.AcadEditor.WriteMessage(string.Format("\nERROR: Unable to find the best path with error code: {0}.",  e.ErrorCode));
                }
                return false;
            }
            finally
            {
                mapTopology.Close();
            }
        }