Map
Changes
web-map/App_Data/Config/Config.xml 4(+2 -2)
web-map/Controllers/MapController.cs 103(+77 -26)
Details
web-map/App_Data/Config/Config.xml 4(+2 -2)
diff --git a/web-map/App_Data/Config/Config.xml b/web-map/App_Data/Config/Config.xml
index fbcae20..9bfbfab 100644
--- a/web-map/App_Data/Config/Config.xml
+++ b/web-map/App_Data/Config/Config.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<ConfigManager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <SPARQL_Query_Endpoint>http://jena.denhome.keenetic.link/map/query</SPARQL_Query_Endpoint>
- <SPARQL_Change_Endpoint>http://jena.denhome.keenetic.link/map/update</SPARQL_Change_Endpoint>
+ <SPARQL_Query_Endpoint>http://jena.denhome.keenetic.link/test/query</SPARQL_Query_Endpoint>
+ <SPARQL_Change_Endpoint>http://jena.denhome.keenetic.link/test/update</SPARQL_Change_Endpoint>
<ModeratorName>sstu</ModeratorName>
<ModeratorPassword>sstu</ModeratorPassword>
</ConfigManager>
\ No newline at end of file
web-map/Controllers/MapController.cs 103(+77 -26)
diff --git a/web-map/Controllers/MapController.cs b/web-map/Controllers/MapController.cs
index b79110a..4c223aa 100644
--- a/web-map/Controllers/MapController.cs
+++ b/web-map/Controllers/MapController.cs
@@ -22,6 +22,18 @@ namespace web_map.Controllers
public FileResult ExportInfo(string data, string type)
{
//WebDataManager webData = WebDataManager.Get();
+
+ // Я так и не успел реализовать возможность экспорта в формат эксель поэтому тут просто создается ворд файл
+ // параметр type принимает два занчения: "word" или "excel"
+ // для создания ворд файла используется бибилотека DocX
+ // для создания эксель файла подключена библиотека EPPlus, которая не используется
+ // созданием документа занимается DocXWrite из пространства имен Tools.Word проекта Tools
+ // рекомендую создать там пространство имен Tools.Excel , какой-либо соотвествующий класс
+ // и реализовать вывод данных в эксель формат
+ //
+ // переменная inputList содержит список всех переданных url основных поселений которые нужно экспортировать
+ // для большей ионфорации рекомендую просмотреть класс DocXWrite
+
var inputList = data.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
var infoList = new List<ModelData.BusinessModel.MainEntities.Settlement>(inputList.Count);
@@ -39,46 +51,85 @@ namespace web_map.Controllers
[HttpPost]
public JsonResult ImportForm(string formData, string type)
{
+ string result = "";
if (User.Identity.IsAuthenticated)
{
+ WebDataManager webData = WebDataManager.Get();
+
+ var inputArray = formData.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
+ Dictionary<string, string> form = new Dictionary<string, string>();
+ string key, value;
+ foreach (var elem in inputArray)
+ {
+ key = elem.Split('~')[0];
+ value = elem.Split('~')[1];
+ if (value == "null" || value == null)
+ value = "";
+ form.Add(key, value);
+ }
+
+ // Здесь параметр type указывает, нужно создать/изменить информацию об измененном или основном поселении
+ // параметр принимает два значения: "origin-import" - основное поселение ИЛИ "edited-import" - измененное поселение
+ // параметр formData содержит переданные из формы значения, которые уникальны для каждого из двух типов
+ //
+ // в результате в переменную form запишутся все распарсенные значения, полученные с формы
+ //
+ // дальше, в зависимости от типа, нужно произвести проверку на наличие сущностей в онтологии (sparql запрос ask), добавить или удалить+добавить сведения в онтологию
+ // придется воспользоваться запросом на получения крайнего числа в url записи изменных поселений этот запрос выглядит вот так:
+ //SELECT (MAX(?value) AS ?maxValue)
+ //WHERE
+ //{
+ // ?editedSettlement a map: EditedSettlement.
+ // BIND(str(?editedSettlement) as ? str)
+ // BIND(xsd: int(SUBSTR(?str, strlen(?str) - 3, 4)) as ? value)
+ //}
+ // полученное число - крайнее для всех изменных поселений поэтому для нового изменного поселения нужно сделать +1
+ // вид url для изменных поселений такой: ИмяОсновногоПоселенияXXXX, где XXXX - число от 0000 до 9999 которое значит сквозную нумерацию всех изменных поселений (вопросы к разработчику онтологии)
+ // например: Saratov0023 Saratov0178 Sergeevka1234
+ //
+ // если нужно добавить новое основное поселение придется прибегнуть к генерации URL.
+ // в переданной форме будет название поселения, которое преобразуем транслитерацией в url.
+ // модуль транслитерации находится в проекте Tools в пространстве имен Tools. обращение такое: Tools.Translit.TranslitFromRussian(строка)
+ // создаем url такого вида: Название_Название+координаты без точек_origin
+ // название берем из транслитерации, координаты записываем без точек просто подряд цифры в последовательность long,lat (долгота, широта)
+ // потом нижнее подчеркивание _ и приписка origin
+ // например: Kaluga_Kaluga4716670951371835_origin где lat = 51.371835 long = 47.166709
+
+ // все преобразования url, проверки ask и тд. лучше делать в BusinessDataManager, т.е. перекинуть полученные данные в WebDataManager, оттуда в Business, там сформировать полный набор параметров
+ // параметры передать в RDFQuery, составить запрос в Queries, получить ответ от точки доступа и передать ответ сюда
+ // ответ распарсить и отправить клиенту в переменной result
+
+ // Я ВСЕ ЭТО СПРОЕКТИРОВАЛ, НО СЛЕГКА НЕ ХВАТИЛО ВРЕМЕНИ ДЛЯ РЕАЛИЗАЦИИ (12.06.2019), желаю удачи если кто-то это будет доделывать
+ result = "Success";
+ //result = "Failure|ErrorMessage";
}
- WebDataManager webData = WebDataManager.Get();
-
- var inputArray = formData.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
- Dictionary<string, string> form = new Dictionary<string, string>();
- string key, value;
- foreach (var elem in inputArray)
- {
- key = elem.Split('~')[0];
- value = elem.Split('~')[1];
- if (value == "null" || value == null)
- value = "";
- form.Add(key, value);
- }
+ else
+ result = "Failure|Пользователь не авторизован.";
- return Json("Import success", JsonRequestBehavior.AllowGet);
+ return Json(result, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult DeleteSettlement(string type, string url)
{
- if (User.Identity.IsAuthenticated)
- {
-
- }
- WebDataManager webData = WebDataManager.Get();
-
string result = "";
- if (new Random().Next(2) == 0)
+ if (User.Identity.IsAuthenticated)
{
- result = "Success";
+ // Здесь примерно такие же проблемы, как описанные выше, поэтому можно читать там
+ // Удаление не реализовано, но вся его суть - сформировать sparql запрос, получить ответ и отправить ответ на клиентскую часть
+ WebDataManager webData = WebDataManager.Get();
+ if (new Random().Next(2) == 0)
+ {
+ result = "Success";
+ }
+ else
+ {
+ result = "Failure|ErrorMessage";
+ }
}
else
- {
- result = "Failure|ErrorMessage";
- }
-
+ result = "Failure|Пользователь не авторизован.";
return Json(result, JsonRequestBehavior.AllowGet);
}