diff --git a/Assets/Scripts/DataSet.cs b/Assets/Scripts/DataSet.cs new file mode 100644 index 0000000..7767783 --- /dev/null +++ b/Assets/Scripts/DataSet.cs @@ -0,0 +1,78 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using UnityEngine; + +namespace Assets.Scripts +{ + class DataSet + { + public List Samples = new List(); + + public void SaveDataSet() + { + UploadToElastic(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("Platform,ParticipantID,Angle,Distance,Time,Direction,DotName,TrialIndex,DotIndex,Timestamp"); + Sample first = Samples[0]; + string platform = first.Platform; + string trial = (first.TrialIndex + 1).ToString(); + string participant = first.ParticipantID.ToString(); + foreach (Sample sample in Samples) + { + stringBuilder.AppendLine(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", sample.Platform, sample.ParticipantID, sample.Angle, sample.Distance, sample.Time, sample.Direction, sample.DotName, sample.TrialIndex, sample.DotIndex, sample.Timestamp)); + } + string path = Path.Combine(Application.persistentDataPath, string.Format("{0}-{1}-{2}.csv",platform,participant,trial)); + using (StreamWriter streamWriter = File.CreateText(path)) + { + streamWriter.Write(stringBuilder.ToString()); + } + UploadToAstralQueen(string.Format("{0}-{1}-{2}", platform, participant, trial), stringBuilder.ToString()); + } + + private void UploadToAstralQueen(string name, string data) + { + using (WebClient client = new WebClient()) + { + string endpoint = "http://astralqueen.bw.edu/hci/upload.php"; + + client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; + string ud = "userStudyId=" + name + "&userStudyData=" + data; + string response = client.UploadString(endpoint, ud); + UnityEngine.Debug.Log("Received Response: " + response); + } + } + + private void UploadToElastic() + { + JObject body = new JObject(); + JArray samples = new JArray(); + foreach(Sample sample in Samples) + { + JObject sJ = new JObject(); + sJ.Add("platform", sample.Platform); + sJ.Add("participantId", sample.ParticipantID); + sJ.Add("angle", sample.Angle); + sJ.Add("distance", sample.Distance); + sJ.Add("time", sample.Time); + sJ.Add("direction", sample.Direction); + sJ.Add("dotName", sample.DotName); + sJ.Add("trialIndex", sample.TrialIndex); + sJ.Add("dotIndex", sample.DotIndex); + sJ.Add("timestamp", sample.Timestamp); + samples.Add(sJ); + } + body.Add("samples", samples); + using (var client = new WebClient()) + { + client.Headers[HttpRequestHeader.ContentType] = "application/json"; + var resp = client.UploadString("http://home.superpichu.org:9009", body.ToString()); + UnityEngine.Debug.Log("Recv: " + resp); + } + } + } +} diff --git a/Assets/Scripts/DataSet.cs.meta b/Assets/Scripts/DataSet.cs.meta new file mode 100644 index 0000000..95b85cf --- /dev/null +++ b/Assets/Scripts/DataSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78ec62a53d82d9848baad99b8154106b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Sample.cs b/Assets/Scripts/Sample.cs new file mode 100644 index 0000000..0e0ae9c --- /dev/null +++ b/Assets/Scripts/Sample.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Assets.Scripts +{ + class Sample + { + public string Platform { get; set; } + public int ParticipantID { get; set; } + public double Angle { get; set; } + public double Distance { get; set; } + public double Time { get; set; } + public bool Direction { get; set; } + public string DotName { get; set; } + public int TrialIndex { get; set; } + public int DotIndex { get; set; } + public long Timestamp { get; set; } + } +} diff --git a/Assets/Scripts/Sample.cs.meta b/Assets/Scripts/Sample.cs.meta new file mode 100644 index 0000000..6da912a --- /dev/null +++ b/Assets/Scripts/Sample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b24c123fd47d68448a4aee725ec250c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/casper b/casper new file mode 100644 index 0000000..d498f99 Binary files /dev/null and b/casper differ diff --git a/index.json b/index.json new file mode 100644 index 0000000..6e6c9bb --- /dev/null +++ b/index.json @@ -0,0 +1,18 @@ +{ + "mappings": { + "_doc": { + "properties": { + "platform":{"type":"keyword"}, + "participantId": {"type":"integer"}, + "angle":{"type":"double"}, + "distance":{"type":"double"}, + "time":{"type":"double"}, + "direction":{"type":"boolean"}, + "dotName":{"type":"keyword"}, + "trialIndex":{"type":"integer"}, + "dotIndex":{"type":"integer"}, + "timestamp":{"type":"date","format":"epoch_millis"} + } + } + } +}