예제 #1
0
        public string Create(string type, [FromBody] LearningModel lm)
        {
            if (lm == null)
            {
                /* The JSON sent was not in the correct format */
                Response.StatusCode = 400;  /* Bad Request */
                var error = new LexicalAnalyzer.Models.Error();
                error.Message = "Invalid structure for LearningModel object";
                return(JsonConvert.SerializeObject(error));
            }
            if (lm.Status != "init")
            {
                var error = new LexicalAnalyzer.Models.Error();
                error.Message = "Initial LearningModel status must be 'init'";
                return(JsonConvert.SerializeObject(error));
            }
            ILearningModel learningModel =
                m_learningService.CreateLearningModel(type);

            if (learningModel == null)
            {
                var error = new LexicalAnalyzer.Models.Error();
                error.Message = string.Format(
                    "Unknown learning model type '{0}'", type);
                return(JsonConvert.SerializeObject(error));
            }
            learningModel.Status     = lm.Status;
            learningModel.Properties = lm.Properties;
            return(JsonConvert.SerializeObject(learningModel));
        }
예제 #2
0
        public void StartLearningModel(Guid guid)
        {
            ILearningModel learningModel = this.GetLearningModel(guid);

            if (learningModel == null)
            {
                return;
            }

            m_workerPool.StartTask(learningModel);
        }
예제 #3
0
        public void PauseLearningModel(Guid guid)
        {
            ILearningModel learningModel = this.GetLearningModel(guid);

            if (learningModel == null)
            {
                return;
            }

            /* TODO: Make sure the given learning task is paused */
            m_workerPool.PauseTask(learningModel);
        }
예제 #4
0
        /* Public interface */
        public ILearningModel CreateLearningModel(string type)
        {
            ILearningModel learningModel = m_factory.BuildLearningModel(type);

            if (learningModel == null)
            {
                return(null);
            }
            Debug.Assert(
                m_learningModels.Find(
                    elem => { return(elem.Guid == learningModel.Guid); }
                    ) == null);
            m_learningModels.Add(learningModel);
            return(learningModel);
        }
예제 #5
0
        public bool RemoveLearningModel(Guid guid)
        {
            ILearningModel learningModel = m_learningModels.Find(
                elem => {
                return(elem.Guid == guid);
            });

            if (learningModel == null)
            {
                return(false);
            }
            /* TODO: Stop the learning model thread, if it exists */
            m_learningModels.Remove(learningModel);
            Debug.Assert(!m_learningModels.Contains(learningModel));
            return(true);
        }
예제 #6
0
        public string Result(string guid)
        {
            ILearningModel learningModel =
                m_learningService.GetLearningModel(guid);

            if (learningModel == null)
            {
                Response.StatusCode = 404;  /* Not Found */
                var error = new LexicalAnalyzer.Models.Error();
                error.Message =
                    "Could not find learning model with the given GUID";
                return(JsonConvert.SerializeObject(error));
            }
            return(JsonConvert.SerializeObject(
                       learningModel.Result,
                       new ResultConverter()
                       ));
        }
예제 #7
0
        public string Update(string guid, [FromBody] LearningModel lm)
        {
            ILearningModel learningModel =
                m_learningService.GetLearningModel(guid);

            if (learningModel == null)
            {
                Response.StatusCode = 404;  /* Not Found */
                var error = new LexicalAnalyzer.Models.Error();
                error.Message =
                    "Could not find learning model with the given GUID";
                return(JsonConvert.SerializeObject(error));
            }
            if (lm == null)
            {
                /* The JSON sent was not in the correct format */
                Response.StatusCode = 400;  /* Bad Request */
                var error = new LexicalAnalyzer.Models.Error();
                error.Message = "Invalid structure for learning model object";
                return(JsonConvert.SerializeObject(error));
            }
            learningModel.Properties = lm.Properties;
            if (lm.Status.ToLower() == "start")
            {
                m_learningService.StartLearningModel(guid);
            }
            else if (lm.Status.ToLower() == "pause")
            {
                m_learningService.PauseLearningModel(guid);
            }
            else
            {
                Response.StatusCode = 400;  /* Bad Request */
                var error = new LexicalAnalyzer.Models.Error();
                error.Message = "The only valid learning model status values to set are 'start' or 'pause'";
                return(JsonConvert.SerializeObject(error));
            }
            return(JsonConvert.SerializeObject(learningModel));
        }