protected void ButtonRun_Click(object sender, EventArgs e) { string errorMessage = null; try { DEAContext context = Session[_contextKey] as DEAContext; string jsonIn = context.ToJsonString(out errorMessage); if (string.IsNullOrEmpty(jsonIn)) { throw new Exception(errorMessage); } string serviceUrl = ConfigurationManager.AppSettings["deaServiceUrl"]; var client = new RestClient(); client.BaseUrl = new Uri(serviceUrl); RestRequest deaRequest = new RestRequest(); deaRequest.Method = Method.POST; deaRequest.AddParameter("text/plain", jsonIn, ParameterType.RequestBody); deaRequest.Resource = "json/DEA"; var response = client.Execute(deaRequest); if (response.IsSuccessful && response.ResponseStatus == ResponseStatus.Completed) { string jsonOut = response.Content; DEAResponse deaResponse = JsonConvert.DeserializeObject <DEAResponse>(jsonOut); if (deaResponse == null) { throw new Exception("Unable to de-serialize JSON response. Please check the log of the service."); } if (deaResponse.OK == false) { throw new Exception(deaResponse.errorMessage); } Session[_contextKey] = deaResponse.context; DEAEventArgs args = new DEAEventArgs(); args.Cargo = "DEAContextOK"; RaiseBubbleEvent(this, args); } else { if (!string.IsNullOrEmpty(response.ErrorMessage)) { throw new Exception(response.ErrorMessage); } else { throw new Exception(response.ResponseStatus.ToString()); } } } catch (Exception ex) { LabelError.Text = ex.Message; LabelError.Visible = true; DEAEventArgs args = new DEAEventArgs(); args.Cargo = "ERROR: " + ex.Message; RaiseBubbleEvent(this, args); } }
public void TestJsonSerialization() { string errorMessage = null; string xmlInputFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots.xml"; string xmlOutputFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots-3.xml"; DEAContext context = DEAContext.CreateFromXmlFile(xmlInputFilePath, out errorMessage); Assert.IsNotNull(context, errorMessage); if (context != null) { string json = context.ToJsonString(out errorMessage); Assert.IsNotNull(json, errorMessage); if (json != null) { DEAContext context2 = DEAContext.CreateFromJsonString(json, out errorMessage); Assert.IsNotNull(context2, errorMessage); if (context2 != null) { bool ok = context2.SaveToXmlFile(xmlOutputFilePath, out errorMessage); Assert.IsTrue(ok, errorMessage); } } } }
public void TestDataEnvelopedAnalysis() { string csvFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots.csv"; string warningMessage, errorMessage; try { bool ok = true; DEAContext context = new DEAContext("DEAContext", "Depot"); ok = context.AddVariable("STOCK", "I", out errorMessage); if (ok) { ok = context.AddVariable("WAGES", "I", out errorMessage); } if (ok) { ok = context.AddVariable("ISSUES", "O", out errorMessage); } if (ok) { ok = context.AddVariable("RECEIPTS", "O", out errorMessage); } if (ok) { ok = context.AddVariable("REQS", "O", out errorMessage); } if (ok) { ok = context.UploadCsvFile(csvFilePath, out warningMessage, out errorMessage); } if (ok) { ok = context.AddCostConstraint("STOCK", 27.0, out errorMessage); } if (ok) { ok = context.AddCostConstraint("WAGES", 40, out errorMessage); } if (ok) { var client = new RestClient(); client.BaseUrl = new Uri(@"http://localhost/DEAJsonService/JsonServiceImpl.svc"); var request = new RestRequest(); request.Method = Method.POST; // request.AddHeader("Accept", "application/json"); // request.RequestFormat = DataFormat.Json; string json = context.ToJsonString(out errorMessage); ok = (json != null); if (ok) { request.AddParameter("text/plain", json, ParameterType.RequestBody); request.Resource = "json/DEA"; } var response = client.Execute(request); int stop = 0; } Assert.IsTrue(ok, errorMessage); } catch (Exception ex) { Assert.Fail(ex.Message); } }
public void TestVADataUnconstrained() { string errorMessage = null; string warningMessage = null; string csvFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST.csv"; string xmlFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST.xml"; string xmlFilePath2 = @"C:\Projects\NCHRP 08-103\VA_TEST-2.xml"; bool ok = true; DEAContext context = new DEAContext("DEAContext", "Project"); ok = context.AddVariable("Cost", "I", 1.0e-6, out errorMessage); if (ok) { ok = context.AddVariable("Congestion", "O", out errorMessage); } if (ok) { ok = context.AddVariable("Safety", "O", out errorMessage); } if (ok) { ok = context.AddVariable("Accessibility", "O", out errorMessage); } if (ok) { ok = context.AddVariable("Environmental Quality", "O", out errorMessage); } if (ok) { ok = context.AddVariable("Economic Development", "O", out errorMessage); } if (ok) { ok = context.AddVariable("Land Use", "O", out errorMessage); } if (ok) { ok = context.UploadCsvFile(csvFilePath, out warningMessage, out errorMessage); } if (ok) { ok = context.RunDEA(out errorMessage); } /* * if (ok) * { * ok = context.AddCostConstraint("STOCK", 27.0, out errorMessage); * if (ok) * ok = context.AddCostConstraint("WAGES", 40, out errorMessage); * } * * if (ok) * { * ok = context.ApplyCostConstraintsToProjectSelection(out errorMessage); * } */ Assert.IsTrue(ok, errorMessage); if (ok) { DataSet ds = context.ToDataSet(out errorMessage); Assert.IsNotNull(ds, errorMessage); ok = ds != null; } if (ok) { ok = context.SaveToXmlFile(xmlFilePath, out errorMessage); Assert.IsTrue(ok, errorMessage); } if (ok) { DEAContext context2 = DEAContext.CreateFromXmlFile(xmlFilePath, out errorMessage); Assert.IsNotNull(context2, errorMessage); if (context2 != null) { ok = context2.SaveToXmlFile(xmlFilePath2, out errorMessage); Assert.IsTrue(ok, errorMessage); } } if (ok) { string json = context.ToJsonString(out errorMessage); Assert.IsNotNull(json, errorMessage); } }
public void TestVACsvDataUnconstrained() { string errorMessage = null; string warningMessage = null; string csvFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST_PROJECTS.csv"; string csvConstFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST_CONSTRAINTS.csv"; string csvVarFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST_VARIABLES.csv"; string xmlFilePath = @"C:\Projects\NCHRP 08-103\VA_TEST-3.xml"; string xmlFilePath2 = @"C:\Projects\NCHRP 08-103\VA_TEST-4.xml"; bool ok = true; DEAContext context = new DEAContext("DEAContext", "Project"); ok = context.LoadVariablesFromCsvFile(csvVarFilePath, out errorMessage); if (ok) { ok = context.UploadCsvFile(csvFilePath, out warningMessage, out errorMessage); } if (ok) { ok = context.LoadCsvConstraints(csvConstFilePath, out errorMessage); } if (ok) { ok = context.RunDEA(out errorMessage); } if (ok) { ok = context.ApplyCostConstraintsToProjectSelection(out errorMessage); } Assert.IsTrue(ok, errorMessage); if (ok) { DataSet ds = context.ToDataSet(out errorMessage); Assert.IsNotNull(ds, errorMessage); ok = ds != null; } if (ok) { ok = context.SaveToXmlFile(xmlFilePath, out errorMessage); Assert.IsTrue(ok, errorMessage); } if (ok) { DEAContext context2 = DEAContext.CreateFromXmlFile(xmlFilePath, out errorMessage); Assert.IsNotNull(context2, errorMessage); if (context2 != null) { ok = context2.SaveToXmlFile(xmlFilePath2, out errorMessage); Assert.IsTrue(ok, errorMessage); } } if (ok) { string json = context.ToJsonString(out errorMessage); Assert.IsNotNull(json, errorMessage); } }
public void Test20DepotsConstrainedWeights() { string errorMessage = null; string warningMessage = null; string csvFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots.csv"; string xmlFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots.xml"; string xmlFilePath2 = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots-2.xml"; bool ok = true; DEAContext context = new DEAContext("DEAContext", "Depot"); ok = context.AddVariable("STOCK", "I", out errorMessage); if (ok) { ok = context.AddVariable("WAGES", "I", out errorMessage); } if (ok) { ok = context.AddVariable("ISSUES", "O", 0.0, 1.0, out errorMessage); } if (ok) { ok = context.AddVariable("RECEIPTS", "O", 0.0, 1.0, out errorMessage); } if (ok) { ok = context.AddVariable("REQS", "O", 0.0, 1.0, out errorMessage); } if (ok) { ok = context.UploadCsvFile(csvFilePath, out warningMessage, out errorMessage); } if (ok) { ok = context.RunDEA(out errorMessage); } if (ok) { ok = context.AddCostConstraint("STOCK", 27.0, out errorMessage); if (ok) { ok = context.AddCostConstraint("WAGES", 40, out errorMessage); } } if (ok) { ok = context.ApplyCostConstraintsToProjectSelection(out errorMessage); } Assert.IsTrue(ok, errorMessage); if (ok) { DataSet ds = context.ToDataSet(out errorMessage); Assert.IsNotNull(ds, errorMessage); ok = ds != null; } if (ok) { ok = context.SaveToXmlFile(xmlFilePath, out errorMessage); Assert.IsTrue(ok, errorMessage); } if (ok) { DEAContext context2 = DEAContext.CreateFromXmlFile(xmlFilePath, out errorMessage); Assert.IsNotNull(context2, errorMessage); if (context2 != null) { ok = context2.SaveToXmlFile(xmlFilePath2, out errorMessage); Assert.IsTrue(ok, errorMessage); } } if (ok) { string json = context.ToJsonString(out errorMessage); Assert.IsNotNull(json, errorMessage); } }
public void TestJsonSerializationInRequestMode() { string errorMessage = null; string warningMessage = null; string csvFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots.csv"; string xmlFilePath = @"C:\Projects\NCHRP 08-103\DEA-Example-20-depots-6.xml"; bool ok = true; DEAContext context = new DEAContext("DEAContext", "Depot"); ok = context.AddVariable("STOCK", "I", 1.0, out errorMessage); if (ok) { ok = context.AddVariable("WAGES", "I", 1.0, out errorMessage); } if (ok) { ok = context.AddVariable("ISSUES", "O", 1.0, out errorMessage); } if (ok) { ok = context.AddVariable("RECEIPTS", "O", 1.0, out errorMessage); } if (ok) { ok = context.AddVariable("REQS", "O", 1.0, out errorMessage); } if (ok) { ok = context.UploadCsvFile(csvFilePath, out warningMessage, out errorMessage); } if (ok) { string json = context.ToJsonString(out errorMessage); Assert.IsNotNull(json, errorMessage); if (json != null) { DEAContext context2 = DEAContext.CreateFromJsonString(json, out errorMessage); Assert.IsNotNull(context2, errorMessage); ok = (context2 != null); if (ok) { ok = context2.RunDEA(out errorMessage); } if (ok) { ok = context2.AddCostConstraint("STOCK", 27.0, out errorMessage); if (ok) { ok = context2.AddCostConstraint("WAGES", 40, out errorMessage); } } if (ok) { ok = context2.ApplyCostConstraintsToProjectSelection(out errorMessage); } if (ok) { ok = context2.SaveToXmlFile(xmlFilePath, out errorMessage); } Assert.IsTrue(ok, errorMessage); } } }
public Stream RunDEAnalysis(Stream request) { bool ok = true; string errorMessage = null; DEAContext context = null; string jsonRequest = null; string jsonResponse = null; const string fn = "RunDEAnalysis"; LOG.DebugFormat("{0} - started", fn); UriTemplateMatch utm = WebOperationContext.Current.IncomingRequest.UriTemplateMatch; LOG.Debug(utm.RequestUri.OriginalString); try { using (StreamReader reader = new StreamReader(request)) { jsonRequest = reader.ReadToEnd(); } LOG.DebugFormat("Request: {0}", jsonRequest); context = DEAContext.CreateFromJsonString(jsonRequest, out errorMessage); ok = (context != null); if (ok) { ok = context.RunDEA(out errorMessage); if (ok && context.ConstraintsSet) { ok = context.ApplyCostConstraintsToProjectSelection(out errorMessage); } if (ok) { jsonResponse = context.ToJsonString(out errorMessage); ok = (jsonResponse != null); } } } catch (Exception ex) { ok = false; errorMessage = ex.Message; } DEAResponse response = new DEAResponse(); response.OK = ok; response.errorMessage = errorMessage; response.context = context; jsonResponse = JsonConvert.SerializeObject(response, Formatting.Indented); LOG.DebugFormat("Response: {0}", jsonResponse); Stream ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(s: jsonResponse)); LOG.DebugFormat("{0} - ended", fn); return(ms); }